?login_element?

Subversion Repositories NedoOS

Rev

Blame | Last modification | View Log | Download

  1.         STRUCT substr1
  2. sm00    text    5, { "12!" }    ; last byte fills remaining size, i.e. `12!!!` (in definition)
  3.         ENDS
  4.  
  5.         STRUCT substr2
  6.         byte    '3'
  7. sub0    substr1 { { "4", "5", "67" } }  ; `4567!` - init value does only replace definition values
  8.         byte    '8'
  9. sub1    text    3, { '?' }              ; `???`
  10.         byte    'A'
  11.         ENDS
  12.  
  13.  
  14.         STRUCT  str, 1
  15. m00     byte    'B'
  16. m01     text    10, { "CDEFG", "H", $40+9, "JKL" }  ; `CDEFGHIJKL`
  17. m02     block   1, 'M'
  18. m03     TEXT    5, { 'N' }              ; `NNNNN`
  19. m04     defs    1, 'O'
  20. m05     substr2 { 'P', { {"QRSTU"} }, 'V', { 'W', "XY" }, 'Z' }
  21. m06     substr2
  22. m07     substr1
  23. m08     substr2 { 'a', 'b', 'c' }           ; texts are skipped with default initializer
  24. m09     substr2 { 'd', {}, 'e', {}, 'f' }   ; texts are skipped with default initializer
  25.         ENDS
  26.  
  27.         DEVICE ZXSPECTRUM48
  28.  
  29.         ORG 0x8000
  30.         ds  0x4000, '_'     ; fill memory with '_'
  31.         ORG 0x8000
  32. ;; first set testing init-values list structure parsing
  33. d01     str                                                         : DB "\n"
  34.     ; "_BCDEFGHIJKLMNNNNNOPQRSTUVWXYZ34567!8???A12!!!a4567!b???cd4567!e???f\n"
  35. d02     str     {,,,{'#'}}                                          : DB "\n"
  36.     ; "_BCDEFGHIJKLMNNNNNO#QRSTUVWXYZ34567!8???A12!!!a4567!b???cd4567!e???f\n"
  37. d03     str     {{},{}{'#'{{"Q##"}}}}                               : DB "\n"
  38.     ; "_BCDEFGHIJKLMNNNNNO#Q##TUVWXYZ34567!8???A12!!!a4567!b???cd4567!e???f\n"
  39. d04     str     {{},{},{'#',{{"Q##"}}}}                             : DB "\n"
  40.     ; "_BCDEFGHIJKLMNNNNNO#Q##TUVWXYZ34567!8???A12!!!a4567!b???cd4567!e???f\n"
  41. d05     str     {{},{},{{}},{'#',{},,{"."}}}                        : DB "\n"
  42.     ; "_BCDEFGHIJKLMNNNNNOPQRSTUVWXYZ#4567!8.??A12!!!a4567!b???cd4567!e???f\n"
  43.  
  44. ;; identical test cases as d02..d05, but without the top-level enclosing {}
  45. ;; but then these need initial comma for 'B' byte, to force first {} to "CDEFG.." text
  46. dx2     str      ,,,{'#'}                                           : DB "\n"
  47.     ; "_BCDEFGHIJKLMNNNNNO#QRSTUVWXYZ34567!8???A12!!!a4567!b???cd4567!e???f\n"
  48. dx3     str      ,{},{}{'#'{{"Q##"}}}                               : DB "\n"
  49.     ; "_BCDEFGHIJKLMNNNNNO#Q##TUVWXYZ34567!8???A12!!!a4567!b???cd4567!e???f\n"
  50. dx4     str      ,{},{},{'#',{{"Q##"}}}                             : DB "\n"
  51.     ; "_BCDEFGHIJKLMNNNNNO#Q##TUVWXYZ34567!8???A12!!!a4567!b???cd4567!e???f\n"
  52. dx5     str      ,{},{},{{}},{'#',{},,{"."}}                        : DB "\n"
  53.     ; "_BCDEFGHIJKLMNNNNNOPQRSTUVWXYZ#4567!8.??A12!!!a4567!b???cd4567!e???f\n"
  54.  
  55. ;; initial 'B' explicitly modified
  56. dy2     str      'g',,,{'#'}                                        : DB "\n"
  57.     ; "_gCDEFGHIJKLMNNNNNO#QRSTUVWXYZ34567!8???A12!!!a4567!b???cd4567!e???f\n"
  58. dy3     str      'h',{},{}{'#'{{"Q##"}}}                            : DB "\n"
  59.     ; "_hCDEFGHIJKLMNNNNNO#Q##TUVWXYZ34567!8???A12!!!a4567!b???cd4567!e???f\n"
  60. dy4     str      'i',{},{},{'#',{{"Q##"}}}                          : DB "\n"
  61.     ; "_iCDEFGHIJKLMNNNNNO#Q##TUVWXYZ34567!8???A12!!!a4567!b???cd4567!e???f\n"
  62. dy5     str      'j',{},{},{{}},{'#',{},,{"."}}                     : DB "\n"
  63.     ; "_jCDEFGHIJKLMNNNNNOPQRSTUVWXYZ#4567!8.??A12!!!a4567!b???cd4567!e???f\n"
  64.  
  65. parse1  substr1 {{'0'|1,'0'|2,'0'+3}}                               : DB "\n"
  66.     ; "123!!\n"
  67.  
  68.     ; BIN is produced only from valid emits (skipping the following error checking part)
  69.         SAVEBIN  "field_type_text.bin", 0x8000, $-0x8000
  70.  
  71. ;; too long text initializer
  72. err1    substr1 {{"abcde!"}}
  73.  
  74. ;; too long text initializer (defined by single bytes)
  75. err2    substr1 {{'a','b','c','d','e','!'}}
  76. err3    substr1 {{'a','b','c','d','e',$21}}
  77.  
  78.     ; error in text field definition
  79.         STRUCT S_ERR1
  80.         text    2           ; valid (zeroed)
  81.         text    1, {'1'}    ; valid
  82.         text    1, {   }    ; valid (zeroed)
  83.         text    128, {'2'}  ; valid ; 128 was old maximum, now it is 8192 (not testing)
  84.         ; invalid ones (some error should be reported):
  85.         text
  86.         text    0, {'3'}
  87.         text    -1, {'4'}
  88.         text    8193, {'5'}
  89.         ; next line emits 00 00
  90.         text    2 @
  91.         ; next line emits 00 00
  92.         text    2,
  93.         ; next line emits 00 00
  94.         text    2, {,
  95.         ; next line emits 00 00
  96.         text    2, {'
  97.        '
  98.         ; next line emits 36 00
  99.         text    2, {'6
  100.        '
  101.         ; next line emits 37 00
  102.         text    2, {'7'
  103. endIt
  104.         ; next line emits 00 00
  105.         text    2, "89"
  106.         ; next line emits 00 00
  107.         text    2, { @, @ }
  108.         ENDS
  109. emitE1  S_ERR1
  110.  
  111.         STRUCT S_ERR2
  112.         texts   30, { "invalid type" }  ; but looks similar
  113.         TEXTS   30, { "invalid type" }  ; but looks similar
  114.         ENDS
  115.