Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

194 строки
3.9KB

  1. ; E04-S05: print and fault runtime test in x128.
  2. ;
  3. ; Runs in the D129 generated-program mapping (CR=$0E), where the KERNAL and
  4. ; I/O are visible and $B800-$BFFF is RAM; all code and BSS stay below $4000.
  5. ; The screen is cleared first, then:
  6. ;
  7. ; NOVA128 PRINT TEST
  8. ; TEXT OK
  9. ; BYTE 0 7 255
  10. ; WORD 0 12345 65535
  11. ; INT -1 -32768 32767
  12. ; BOOL FALSE TRUE
  13. ; CHAR A
  14. ; RUNTIME FAULT R001 .. R005
  15. ;
  16. ; The faults run last, so the mailbox ends in MB_ST_FAIL with code 5 and
  17. ; address $1234. The host checks the screen rows and the mailbox fields.
  18. .setcpu "6502"
  19. .include "../../src/common/c128.inc"
  20. .include "../../src/common/mailbox.inc"
  21. .include "../../src/common/print.inc"
  22. .include "../../src/common/faults.inc"
  23. .import pr_char, pr_cr, pr_text, pr_byte, pr_word, pr_int, pr_bool
  24. .import flt_report
  25. .segment "LOADADDR"
  26. .word $1C01
  27. .segment "EXEHDR"
  28. .word basic_end
  29. .word 10
  30. .byte $9E
  31. .byte "7181"
  32. .byte $00
  33. basic_end:
  34. .word $0000
  35. .segment "MAILBOX"
  36. .res MB_SIZE
  37. .macro TEXT text, len
  38. lda #<text
  39. ldx #>text
  40. ldy #len
  41. jsr pr_text
  42. .endmacro
  43. .macro SPACE
  44. lda #PR_SPACE
  45. jsr pr_char
  46. .endmacro
  47. .segment "STARTUP"
  48. .export test_entry, test_end
  49. test_entry:
  50. php
  51. sei
  52. ldx #MB_SIZE - 1
  53. lda #$00
  54. @clr: sta MB_BASE,x
  55. dex
  56. bpl @clr
  57. lda #MB_MAGIC0_VALUE
  58. sta MB_MAGIC0
  59. lda #MB_MAGIC1_VALUE
  60. sta MB_MAGIC1
  61. lda #MB_PROD_PROGRAM
  62. sta MB_PRODUCER
  63. lda #MB_ST_RUNNING
  64. sta MB_STATUS
  65. lda MMU_CR
  66. sta saved_cr
  67. lda MMU_RCR
  68. sta saved_rcr
  69. lda #CR_RAM0_KERNAL
  70. sta MMU_CR
  71. lda #PR_CLEAR
  72. jsr pr_char
  73. ; ------------------------------------------------------- print tests
  74. TEXT title, 18
  75. jsr pr_cr
  76. TEXT text_ok, 7
  77. jsr pr_cr
  78. TEXT label_byte, 5
  79. lda #0
  80. jsr pr_byte
  81. SPACE
  82. lda #7
  83. jsr pr_byte
  84. SPACE
  85. lda #255
  86. jsr pr_byte
  87. jsr pr_cr
  88. TEXT label_word, 5
  89. lda #0
  90. ldx #0
  91. jsr pr_word
  92. SPACE
  93. lda #<12345
  94. ldx #>12345
  95. jsr pr_word
  96. SPACE
  97. lda #$FF
  98. ldx #$FF
  99. jsr pr_word
  100. jsr pr_cr
  101. TEXT label_int, 4
  102. lda #$FF ; -1
  103. ldx #$FF
  104. jsr pr_int
  105. SPACE
  106. lda #$00 ; -32768
  107. ldx #$80
  108. jsr pr_int
  109. SPACE
  110. lda #$FF ; 32767
  111. ldx #$7F
  112. jsr pr_int
  113. jsr pr_cr
  114. TEXT label_bool, 5
  115. lda #$00
  116. jsr pr_bool
  117. SPACE
  118. lda #$01
  119. jsr pr_bool
  120. jsr pr_cr
  121. TEXT label_char, 5
  122. lda #$41 ; 'A'
  123. jsr pr_char
  124. jsr pr_cr
  125. ; ------------------------------------------------------- fault tests
  126. lda #FLT_NULL
  127. ldx #$11
  128. ldy #$22
  129. jsr flt_report
  130. lda #FLT_BOUNDS
  131. ldx #$22
  132. ldy #$33
  133. jsr flt_report
  134. lda #FLT_DIV0
  135. ldx #$33
  136. ldy #$44
  137. jsr flt_report
  138. lda #FLT_STACK
  139. ldx #$44
  140. ldy #$55
  141. jsr flt_report
  142. lda #FLT_HEAP
  143. ldx #$34
  144. ldy #$12
  145. jsr flt_report
  146. ; The print and fault calls must not disturb the generated-program map.
  147. lda #$00
  148. sta MB_DATA
  149. lda MMU_CR
  150. cmp #CR_RAM0_KERNAL
  151. bne @map_done
  152. lda MMU_RCR
  153. cmp saved_rcr
  154. bne @map_done
  155. lda #$01
  156. sta MB_DATA
  157. @map_done:
  158. lda saved_cr
  159. sta MMU_CR
  160. plp
  161. rts
  162. .segment "RODATA"
  163. title: .byte "NOVA128 PRINT TEST"
  164. text_ok: .byte "TEXT OK"
  165. label_byte: .byte "BYTE "
  166. label_word: .byte "WORD "
  167. label_int: .byte "INT "
  168. label_bool: .byte "BOOL "
  169. label_char: .byte "CHAR "
  170. .segment "BSS"
  171. saved_cr: .res 1
  172. saved_rcr: .res 1
  173. test_end:

Powered by TurnKey Linux.