Nevar pievienot vairāk kā 25 tēmas Tēmai ir jāsākas ar burtu vai ciparu, tā var saturēt domu zīmes ('-') un var būt līdz 35 simboliem gara.

155 rindas
3.2KB

  1. ; E04-S06: parse calls.n8, run the emitted first method, and check that
  2. ; `self.n` and `self.tick()` both went through members.s.
  3. ;
  4. ; The first emitted body is Counter.both at cg_code+0. It receives self in
  5. ; A/X, increments self.n, then JSRs the later tick method. The fixture passes
  6. ; an object whose field n begins at +2.
  7. ;
  8. ; Mailbox data: +0 diagnostics, +1 em_bad, +2 n, +3 cg_len, +4 cg_err,
  9. ; +5 fl_err. FAIL stage: 1 load, 2 diagnostics, 3 emitter, 4 result.
  10. .setcpu "6502"
  11. .include "../../src/common/c128.inc"
  12. .include "../../src/common/mailbox.inc"
  13. .include "../../src/common/formats.inc"
  14. .import mmu_init, mmu_bank0, mmu_shutdown
  15. .import src_load, src_dos_code, src_kernal_err
  16. .import names_init
  17. .import diag_init, diag_finish, diag_screen
  18. .import parse_file
  19. .import em_on, em_bad
  20. .import cg_code, cg_len, cg_err
  21. .import fl_err
  22. .macro ON_ZERO target
  23. beq :+
  24. jmp target
  25. :
  26. .endmacro
  27. .segment "LOADADDR"
  28. .word $1C01
  29. .segment "EXEHDR"
  30. .word basic_end
  31. .word 10
  32. .byte $9E
  33. .byte "7181"
  34. .byte $00
  35. basic_end:
  36. .word $0000
  37. .segment "MAILBOX"
  38. .res MB_SIZE
  39. .segment "STARTUP"
  40. .export test_entry
  41. test_entry:
  42. php
  43. sei
  44. ldx #MB_SIZE - 1
  45. lda #$00
  46. @clr: sta MB_BASE,x
  47. dex
  48. bpl @clr
  49. lda #MB_MAGIC0_VALUE
  50. sta MB_MAGIC0
  51. lda #MB_MAGIC1_VALUE
  52. sta MB_MAGIC1
  53. lda #MB_PROD_COMPILER
  54. sta MB_PRODUCER
  55. lda #MB_ST_RUNNING
  56. sta MB_STATUS
  57. jsr mmu_init
  58. jsr mmu_bank0
  59. lda #<name_src
  60. ldx #>name_src
  61. ldy #name_src_len
  62. jsr src_load
  63. cmp #$00
  64. ON_ZERO @fail_load
  65. jsr names_init
  66. lda #<name_src
  67. ldx #>name_src
  68. ldy #name_src_len
  69. jsr diag_init
  70. lda #$00
  71. sta diag_screen
  72. lda #$01
  73. sta em_on
  74. jsr parse_file
  75. jsr diag_finish
  76. sta MB_DATA+0
  77. lda em_bad
  78. sta MB_DATA+1
  79. lda cg_len
  80. sta MB_DATA+3
  81. lda cg_err
  82. sta MB_DATA+4
  83. lda fl_err
  84. sta MB_DATA+5
  85. lda MB_DATA+0
  86. ON_ZERO @fail_diag
  87. lda em_bad
  88. ON_ZERO @fail_emit
  89. lda cg_err
  90. ON_ZERO @fail_cg
  91. lda fl_err
  92. ON_ZERO @fail_cg
  93. jmp @run
  94. @fail_cg:
  95. lda #3
  96. jmp @fail
  97. @run: ldx #3 ; descriptor + zeroed byte field
  98. lda #$00
  99. @obj: sta object,x
  100. dex
  101. bpl @obj
  102. lda #<object
  103. ldx #>object
  104. jsr cg_code
  105. lda object+2
  106. sta MB_DATA+2
  107. cmp #$02
  108. beq @pass
  109. lda #4
  110. jmp @fail
  111. @fail_load:
  112. sta MB_DATA+4
  113. lda src_dos_code
  114. sta MB_DATA+5
  115. lda src_kernal_err
  116. sta MB_DATA+6
  117. lda #1
  118. jmp @fail
  119. @fail_diag:
  120. lda #2
  121. jmp @fail
  122. @fail_emit:
  123. lda #3
  124. @fail: sta MB_CODE
  125. lda #$00
  126. sta MB_CODE+1
  127. lda #MB_ST_FAIL
  128. sta MB_STATUS
  129. jmp @done
  130. @pass: lda #MB_ST_PASS
  131. sta MB_STATUS
  132. @done: jsr mmu_shutdown
  133. plp
  134. rts
  135. .segment "RODATA"
  136. name_src: .byte "CALLS.N8"
  137. name_src_len = * - name_src
  138. .segment "BSS"
  139. object: .res 4

Powered by TurnKey Linux.