Login

Subversion Repositories NedoOS

Rev

Rev 129 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; 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