;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 
;; Test source for TAPOUT / TAPEND / OUTPUT / OUTEND ;;
 
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 
 
 
        DEFINE  tape_file "tapout_test.tap"
 
        DEFINE  pure_code "tapout_test.bin"
 
 
 
        db      1,1,1,1
 
 
 
        EMPTYTAP tape_file              ;; Create empty TAP file
 
        
 
        db      2,2,2,2
 
 
 
        TAPOUT  tape_file,0             ;; Basic header
 
 
 
        db      0x00                    ;; Header type = basic
 
        db      'HelloWorld'            ;; File name
 
        dw      baslen                  ;; Total length
 
        dw      1                       ;; Start line
 
        dw      baslen                  ;; Length of pure basic
 
 
 
        TAPEND                          ;; End of tape block
 
 
 
        db      3,3,3,3
 
 
 
        TAPOUT  tape_file               ;; Basic body
 
 
 
CODE    =       0xAF
 
USR     =       0xC0
 
LOAD    =       0xEF
 
RANDOMIZE =     0xF9
 
 
 
basic   db      0,1                     ;; Line 1
 
        dw      l1len                   ;; Length of line 1
 
line1   db      LOAD,'""',CODE          ;; LOAD "" CODE
 
        db      0x0D                    ;; End of line 1
 
 
 
l1len   =       $-line1
 
 
 
        db      0,2                     ;; Line 2
 
        dw      l2len                   ;; Length of line 2
 
line2   db      RANDOMIZE,USR           ;; RANDOMIZE USR
 
 
 
        LUA ALLPASS                     ;; Digits of number
 
        _pc('db "' .. tostring(_c("start")) .. '"')
 
        ENDLUA
 
 
 
        db      0x0E                    ;; Number follows
 
        db      0x00,0x00               ;; 5 bytes of internal
 
        dw      start                   ;; number representation
 
        db      0x00
 
        db      0x0D                    ;; End of line 2
 
 
 
l2len   =       $-line2
 
baslen  =       $-basic
 
 
 
        TAPEND                          ;; End of tape block
 
 
 
        db      4,4,4,4
 
 
 
        TAPOUT  tape_file,0             ;; Bytes header
 
 
 
        db      0x03                    ;; Header type = bytes
 
        db      'HelloWorld'            ;; File name
 
        dw      codlen                  ;; Total length
 
        dw      start                   ;; Start address
 
        dw      0x8000
 
 
 
        TAPEND                          ;; End of tape block
 
 
 
        db      5,5,5,5
 
 
 
        TAPOUT  tape_file               ;; Bytes body
 
        OUTPUT  pure_code               ;; Pure data file
 
 
 
        org     0x8000                  ;; Start address of code
 
 
 
start   ld      a,0x02                  ;; Channel 2
 
        call    0x1601                  ;; is opened
 
        ld      de,text                 ;; Address of text
 
        ld      bc,txtlen               ;; Length of text
 
        jp      0x203C                  ;; Jump to print text
 
 
 
text    db      13                      ;; Cursor to next line
 
        db      19,1                    ;; BRIGHT 1
 
        db      18,1                    ;; FLASH 1
 
        db      'Hello world !'         ;; Text
 
 
 
txtlen  =       $-text
 
codlen  =       $-start
 
 
 
        OUTEND                          ;; End of pure data file
 
        TAPEND                          ;; End of tape block
 
 
 
        db      6,6,6,6
 
 
 
;; Error cases
 
 
 
        SAVETAP "nothing",start         ;; No DEVICE defined
 
 
 
        TAPOUT  tape_file,              ;; No flagbyte
 
        TAPOUT                          ;; No parameters
 
 
 
;; End of test file