?login_element?

Subversion Repositories NedoOS

Rev

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

  1. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  2. ;; Test source for EMPTYTAP / SAVETAP ;;
  3. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  4.  
  5.                 device  zxspectrum48
  6.  
  7. ; BASIC block
  8.         module bas
  9. line10:         db      0, 10
  10.                 dw      .len
  11. .cmds           ; BORDER NOT PI:
  12.                 db      #E7, #C3, #A7, ':'
  13.                 ; PAPER NOT PI:
  14.                 db      #DA, #C3, #A7, ':'
  15.                 ; INK VAL "7":
  16.                 db      #D9, #B0, '"7":'
  17.                 ; CLEAR VAL "32763" : REM demo-1 address
  18.                 db      #FD, #B0, '"32763"', #0D
  19. .len = $ - .cmds
  20.  
  21. line20:         db      0, 20
  22.                 dw      .len
  23. .cmds           ; POKE VAL "23739",CODE "o":
  24.                 db      #F4, #B0, '"23739",', #AF, '"o":'
  25.                 ; LOAD ""SCREEN#: LOAD ""CODE
  26.                 db      #EF, '""', #AA, ':', #EF, '""', #AF, #0D
  27. .len = $ - .cmds
  28.  
  29. line30:         db      0, 30
  30.                 dw      .len
  31. .cmds           ; RANDOMIZE USR VAL "32764" : REM demo address
  32.                 db      #F9, #C0, #B0, '"32764"', #0D
  33. .len = $ - .cmds
  34.  
  35. total = $ - line10
  36.         endmodule
  37.  
  38.  
  39. ; NUMS block
  40. nums            db      1
  41.                 dw      .datalen
  42. .data           db      #82,#49,#0F,#DA,#A2     ;; Value 3.1415927
  43. .datalen = $ - .data
  44. .savelen = $ - nums
  45.  
  46. ; CHARS block
  47. chars           db      1
  48.                 dw      .datalen
  49. .data           db      "SAVETAP testing character array"
  50. .datalen = $ - .data
  51. .savelen = $ - chars
  52.  
  53.  
  54. ; SCREEN$ block
  55.                 org     #4000
  56. screen:
  57.         dup 12
  58.                 block   256,#AA
  59.                 block   256,#55
  60.         edup
  61.         dup 24
  62.                 db      #07, #06, #06, #16, #05, #05, #0D, #04, #04, #14, #03, #03, #11, #02, #02, #29
  63.                 db      #29, #02, #02, #11, #03, #03, #14, #04, #04, #0D, #05, #05, #16, #06, #06, #07
  64.         edup
  65. .len = $ - screen
  66.  
  67.  
  68. ; CODE block
  69.                 org     #7FFC     ; to cross the slot-boundary
  70.  
  71. demo:           ei
  72.                 halt
  73.                 djnz    demo
  74. .loop           ei
  75.                 halt
  76.                 ld      hl,#5801
  77.                 ld      de,#5800
  78.                 ld      bc,#300
  79.                 ld      a,(de)
  80.                 ld      (#5B00),a
  81.                 ldir
  82.                 call    .rnd
  83.                 ld      c,a
  84.                 and     #0C
  85.                 sub     #0B
  86.                 jr      nc,.not12
  87.                 ld      a,2
  88. .not12          ld      d,a
  89.                 call    .rnd
  90.                 ld      e,a
  91.                 ld      hl,#5800
  92.                 add     hl,de
  93.                 ld      a,c
  94.                 and     #7F
  95.                 xor     (hl)
  96.                 ld      (hl),a
  97.                 jr      .loop
  98.  
  99. .rnd            ld      a,#29
  100.                 ld      b,a
  101.                 rrca
  102.                 rrca
  103.                 rrca
  104.                 xor     #1F
  105.                 add     a,b
  106.                 sbc     a,#FF
  107.                 ld      (.rnd+1),a
  108.                 ret
  109. .len = $ - demo
  110.         db      "XXXX"
  111.  
  112. ; Clear output tap file
  113.                 emptytap "savetap_test.tap"
  114. ; Store BASIC
  115.                 savetap "savetap_test.tap",BASIC,"tstSAVETAP", bas.line10, bas.total, 10
  116. ; Store SCREEN#
  117.                 savetap "savetap_test.tap",CODE,"intro", screen, screen.len
  118. ; Store CODE
  119.                 savetap "savetap_test.tap",CODE,"demo", demo, demo.len
  120. ; Store NUMBERS
  121.                 savetap "savetap_test.tap",NUMBERS,"n", nums, nums.savelen, 'n'
  122. ; Store CHARS
  123.                 savetap "savetap_test.tap",CHARS,"t$", chars, chars.savelen, 't'
  124. ; Store HEADLESS
  125.                 savetap "savetap_test.tap",HEADLESS, (screen + #1800), 32, 66 ; custom flag
  126.  
  127.  
  128. ; No autostart (#8000 is used)
  129.                 savetap "savetap_test.tap",BASIC,"No start", bas.line10, bas.total
  130. ; Default letter ('A' is used)
  131.                 savetap "savetap_test.tap",NUMBERS,"n", nums, nums.savelen
  132. ; Address + length > #10000 (block to the end of memory will be saved)
  133.                 savetap "savetap_test.tap",HEADLESS, #FFFF, 2
  134.  
  135. ; Extra variants of valid commands to exercise all code paths
  136.                 savetap "savetap_test.tap",CODE,"_extra1", demo, 1, 0x8000, 0x1234
  137.  
  138.  
  139. ;;;;;;;;;;;;;;;;;
  140. ;; Error cases ;;
  141. ;;;;;;;;;;;;;;;;;
  142.  
  143.                 emptytap ""                             ;; Syntax error
  144.                 savetap ""                              ;; Syntax error. No parameters
  145.                 savetap "error"                         ;; Syntax error. No parameters
  146.                 savetap "error",-1                      ;; Negative values are not allowed
  147.  
  148.                 savetap "error",HEADLESS,               ;; Syntax error
  149.                 savetap "error",HEADLESS,,              ;; Missing start address
  150.                 savetap "error",HEADLESS,-1             ;; Negative values are not allowed
  151.                 savetap "error",HEADLESS,0,-1           ;; Negative values are not allowed
  152.                 savetap "error",HEADLESS,#10000         ;; Values higher than FFFFh are not allowed
  153.                 savetap "error",HEADLESS,0,#10000       ;; Values higher than FFFFh are not allowed
  154.                 savetap "error",HEADLESS,0,             ;; Syntax error
  155.                 savetap "error",HEADLESS,0,0,           ;; Syntax error
  156.                 savetap "error",HEADLESS,0,0,-1         ;; Invalid flag byte
  157.                 savetap "error",HEADLESS,0,0,0x100      ;; Invalid flag byte
  158.  
  159.                 savetap "error",CODE,                   ;; Syntax error
  160.                 savetap "error",CODE,,                  ;; Missing tape block file name
  161.                 savetap "error",CODE,"Err",             ;; Missing start address
  162.                 savetap "error",CODE,"Err",0,           ;; Missing block length
  163.                 savetap "error",CODE,"Err",-1           ;; Negative values are not allowed
  164.                 savetap "error",CODE,"Err",0,-1         ;; Negative values are not allowed
  165.                 savetap "error",CODE,"Err",0,0,-1       ;; Negative values are not allowed
  166.                 savetap "error",CODE,"Err",0,0,0,-1     ;; Negative values are not allowed
  167.                 savetap "error",CODE,"Err",#10000       ;; Values higher than FFFFh are not allowed
  168.                 savetap "error",CODE,"Err",0,#10000     ;; Values higher than FFFFh are not allowed
  169.                 savetap "error",CODE,"Err",0,0,#10000   ;; Values higher than FFFFh are not allowed
  170.                 savetap "error",CODE,"Err",0,0,0,#10000 ;; Values higher than FFFFh are not allowed
  171.                 savetap "error",CODE,"Err",0,0,0,       ;; Syntax error
  172.                 savetap "error",CODE,"Err",0,0,         ;; Syntax error
  173.  
  174.                 savetap "error",BASIC,"Err",0,0,#4000   ;; Autostart LINE out of range
  175.                 savetap "error",NUMBERS,"Err",0,0,'@'   ;; Variable name out of range
  176.                 savetap "error",NUMBERS,"Err",0,0,'?'   ;; Variable name out of range
  177.  
  178.                 savetap "error",HEADLESS        ;; Will try to use HEADLESS as label for start of tap-snapshot
  179.                 savetap "error",HEADLESS+!      ;; causing to fail in other part of implementation
  180.                 savetap "error",,               ;; syntax error, no type parameter
  181.  
  182.                 device zxspectrumnext
  183.                 savetap "error",0x1234          ;; SAVETAP snapshot is "ZX Spectrum devices" only
  184.