home *** CD-ROM | disk | FTP | other *** search
/ Transactor / Transactor_18_1987_Transactor_Publishing.d64 / symlister (.txt) < prev    next >
Commodore BASIC  |  2023-02-26  |  2KB  |  106 lines

  1. 1000 rem save"0:symlister",8
  2. 1010 rem * 21 feb 87  -  j.a.spencer
  3. 1020 rem * indents all lines starting
  4. 1030 rem * with 6510 opcodes
  5. 1040 rem * symass must installed
  6. 1050 :
  7. 1060 if peek(700)=76 then 1120
  8. 1070 :
  9. 1080 print "** symass not installed **"
  10. 1090 print "load/run symass first"
  11. 1100 end
  12. 1110 :
  13. 1120 print "sys 828 to enable"
  14. 1130 print "sys 831 to restore previous list vector"
  15. 1140 :
  16. 1150 sys700
  17. 1160 *=$033c
  18. 1170 ;
  19. 1180 spaces = $08   ; # spaces to indent
  20. 1190 srcad  = $5f   ; code address
  21. 1200 ad     = $7a   ; chr(NULL)t & symass
  22. 1210 iqplop = $0306 ; std list jmp vec
  23. 1220 symptr = $02bd ; symass vector
  24. 1230 reglst = $a71a ; normal list code
  25. 1240 outdo  = $ab47 ; print char
  26. 1250 findop = $0000 ; dummy value
  27. 1260 word   = $0000
  28. 1270 ;
  29. 1280 jmp vecset ; enable
  30. 1290 jmp lisdis ; disable
  31. 1300 ;
  32. 1310 ; alter the list vector (iqplop)
  33. 1320 vecset = *
  34. 1330 lda iqplop  ; pick up
  35. 1340 sta rgl+1    ; current
  36. 1350 lda iqplop+1 ; 'list'
  37. 1360 sta rgl+2    ; vector
  38. 1370 lda #<lvec   ; install new
  39. 1380 sta iqplop   ; 'list'
  40. 1390 lda #>lvec   ; vector
  41. 1400 sta iqplop+1
  42. 1410 lda symptr   ; calc addr of
  43. 1420 clc          ; 'findop'
  44. 1430 adc #$9d     ; routine
  45. 1440 sta opfd+1
  46. 1450 lda symptr+1 ; & insert in
  47. 1460 adc #$03     ; code below
  48. 1470 sta opfd+2
  49. 1480 clc
  50. 1490 lda symptr   ; calc addr of
  51. 1500 adc #$fa     ; 'word'
  52. 1510 sta wrd+1    ; routine
  53. 1520 lda symptr+1 ; in symass
  54. 1530 adc #$05
  55. 1540 sta wrd+2
  56. 1550 rts
  57. 1560 ;
  58. 1570 ; new routine for listing
  59. 1580 lvec cpy #$04 ; check only
  60. 1590 beq opsrch    ; 1st word
  61. 1600 ;
  62. 1610 reg lda (srcad),y ; on line
  63. 1620 ;
  64. 1630 rgl jmp reglst
  65. 1640 ;
  66. 1650 opsrch  sty $49
  67. 1660 jsr calcad
  68. 1670 ;
  69. 1680 wrd jsr word ; get len of
  70. 1690 jsr calcad  ; word ($59)
  71. 1700 ;
  72. 1710 opfd jsr findop
  73. 1720 bcc jreg   ; not mnemonic
  74. 1730 ;
  75. 1740 ldx #spaces
  76. 1750 ;
  77. 1760 con2 lda #$20   ; insert spaces
  78. 1770 jsr outdo
  79. 1780 dex
  80. 1790 bne con2
  81. 1800 ;
  82. 1810 jreg ldy $49    ; restore y reg
  83. 1820 bne reg
  84. 1830 ;
  85. 1840 ; subroutine to set up search
  86. 1850 ; address 'ad' in symass
  87. 1860 calcad = *
  88. 1870 lda $49    ; add .y to
  89. 1880 clc        ; current
  90. 1890 adc srcad  ; addr
  91. 1900 sta ad
  92. 1910 lda #$00
  93. 1920 adc srcad+1
  94. 1930 sta ad+1
  95. 1940 rts
  96. 1950 ;
  97. 1960 ; sys to disable list formatter
  98. 1970 lisdis = *
  99. 1980 lda rgl+1   ; restore last
  100. 1990 sta iqplop  ; vector
  101. 2000 lda rgl+2
  102. 2010 sta iqplop+1
  103. 2020 rts
  104. 2030 ;
  105. 2040 .end
  106.