home *** CD-ROM | disk | FTP | other *** search
/ Transactor / Transactor_19_1987_Transactor_Publishing.d64 / garbage.pal (.txt) < prev    next >
Commodore BASIC  |  2023-02-26  |  4KB  |  142 lines

  1. 1000 rem --- garbage collector message ---
  2. 1010 rem ----- by michael t. graham ------
  3. 1020 rem open8,8,8,"0:garbmsg,p,w"
  4. 1030 sys700
  5. 1040 ;.opt o8
  6. 1050 ;pal assembler source code
  7. 1060 ;
  8. 1070 ;this basic patch puts a message
  9. 1080 ;on screen when basic's garbage
  10. 1090 ;collector runs. basic is moved to
  11. 1100 ;ram at initialization.
  12. 1110 ;
  13. 1120 hibase =$0288 ;kernal screen page addr
  14. 1130 addr   =$fb   ;move vector
  15. 1140 patch1 =$b526 ;"patch start of collector
  16. 1150 patch2 [178]$b606 ;"patch end of collecttor
  17. 1160 ret1   =$b52a ;continue start
  18. 1170 cont   =$b60c ;(NULL)or not done
  19. 1180 quit   =$b601 ;"end collection
  20. 1190 col[176]  [178]$02   ;message col[176] s[164]rage
  21. 1200 cmem   [178]$d80a ;col[176] mem[176]y start
  22. 1210 screen [178]$fd   ;screen vec[164]r s[164]rage
  23. 1220 ;
  24. 1230 [172][178]$033c ;cassette buffer
  25. 1240 ;
  26. 1250 ;initialize message patch ([158] 828)
  27. 1260 ;
  28. 1270 init lda #$00   ;set up
  29. 1280 sta addr        ;indirect
  30. 1290 lda #$a0        ;address
  31. 1300 sta addr[170]1      ;[164] move
  32. 1310 ldy #$00        ;basic
  33. 1320 xfer lda (addr),y ;move basic rom
  34. 1330 sta (addr),y    ;[164] ram
  35. 1340 iny
  36. 1350 bne xfer
  37. 1360 inc addr[170]1      ;bump page address
  38. 1370 lda addr[170]1      ;[154]inue move
  39. 1380 cmp #$c0        ; up [164]
  40. 1390 bmi xfer        ;$bfff
  41. 1400 lda #$4c        ;jmp instructi[145] op code
  42. 1410 sta patch1      ;s[164]re the jumps [129] the
  43. 1420 sta patch2      ;patches
  44. 1430 lda #[179]fix1      ;jump [164] fix1 at start
  45. 1440 sta patch1[170]1
  46. 1450 lda #[177]fix1
  47. 1460 sta patch1[170]2
  48. 1470 lda #[179]fix2      ;jump [164] fix2 at [128]
  49. 1480 sta patch2[170]1
  50. 1490 lda #[177]fix2
  51. 1500 sta patch2[170]2
  52. 1510 lda #$ef        ;map
  53. 1520 sta $00         ;out
  54. 1530 lda $01         ;the basic
  55. 1540 [175] #$fe        ;rom
  56. 1550 sta $01
  57. 1560 lda #01         ;initialize
  58. 1570 sta col[176]       ;col[176] [164] white
  59. 1580 rts             ;[128] init
  60. 1590 ;
  61. 1600 ;patch h[175]ler
  62. 1610 ;
  63. 1620 ;fix1 [178] patch [164] start of [209][176]
  64. 1630 ;
  65. 1640 fix1 jsr ms[203]n  ;display message
  66. 1650 ldx $37         ;finish displaced basic
  67. 1660 lda $38         ;code
  68. 1670 jmp ret1        ;[142] [164] basic
  69. 1680 ;
  70. 1690 ;fix2 [178] patch [164] [128] of [209][176]
  71. 1700 ;
  72. 1710 fix2 lda $4f    ;finish basic's
  73. 1720 [176]a $4e         ;stuff
  74. 1730 beq retrn       ;d[145]e [209]i[145]
  75. 1740 jmp [154]        ;[154]inue [209]i[145]
  76. 1750 retrn jsr ms[203]ff ;put screen back
  77. 1760 jmp quit        ;[209][176] d[145]e
  78. 1770 ;
  79. 1780 ;[148] user screen [175] put message
  80. 1790 ;[145] screen be[129]e starting
  81. 1800 ;garbage [209][176].
  82. 1810 ;
  83. 1820 ms[203]n php       ;[148] status
  84. 1830 tya             ;[175] y
  85. 1840 pha             ;register
  86. 1850 lda #10         ;start at
  87. 1860 sta screen      ;11th char
  88. 1870 lda hibase      ;[161] screen
  89. 1880 sta screen[170]1    ;page addr
  90. 1890 ldy #19         ;20 characters
  91. 1900 ldx col[176]       ;message col[176]
  92. 1910 move lda (screen),y ;[148] existing
  93. 1920 sta buffer,y   ;screen [154]ents
  94. 1930 lda messag,y   ;[161] message
  95. 1940 [175] #$bf       ;c[145]vert [164] screen code
  96. 1950 sta (screen),y ;display message
  97. 1960 lda cmem,y     ;[148] existing
  98. 1970 sta cbuff,y    ;col[176] mem[176]y
  99. 1980 txa            ;replace with
  100. 1990 sta cmem,y     ;message col[176]
  101. 2000 dey            ;bump index
  102. 2010 bpl move       ;move 20 characters
  103. 2020 pla            ;[140]
  104. 2030 tay            ;registers
  105. 2040 plp
  106. 2050 rts            ;d[145]e
  107. 2060 ;
  108. 2070 ;put user's screen [154]ents back
  109. 2080 ;after collec[164]r is d[145]e.
  110. 2090 ;
  111. 2100 ms[203]ff php     ;[148]
  112. 2110 pha
  113. 2120 tya            ;registers
  114. 2130 pha
  115. 2140 lda #10        ;11th character
  116. 2150 sta screen     ;[145] screen
  117. 2160 lda hibase     ;screen page
  118. 2170 sta screen[170]1   ;address
  119. 2180 ldy #19        ;20 characters
  120. 2190 res[164]r lda buffer,y ;put text
  121. 2200 sta (screen),y ;back
  122. 2210 lda cbuff,y    ;[140]
  123. 2220 sta cmem,y     ;col[176]s
  124. 2230 dey            ;bump index
  125. 2240 bpl res[164]r     ;[140] 20 characters
  126. 2250 pla            ;[140]
  127. 2260 tay
  128. 2270 pla            ;registers
  129. 2280 plp
  130. 2290 rts            ;d[145]e
  131. 2300 ;
  132. 2310 messag .[198] " >wait,system busy< "
  133. 2320 ;
  134. 2330 ;[131] storage - 40 bytes at $02a7
  135. 2340 ;
  136. 2350 [172][178]$02a7
  137. 2360 ;
  138. 2370 buffer [172][178][172][170]20
  139. 2380 cbuff [172][178][172][170]20
  140. 2390 ;
  141. 2400 .[128]
  142.