home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Transactor
/
Transactor_18_1987_Transactor_Publishing.d64
/
symlister
(
.txt
)
< prev
next >
Wrap
Commodore BASIC
|
2023-02-26
|
2KB
|
106 lines
1000 rem save"0:symlister",8
1010 rem * 21 feb 87 - j.a.spencer
1020 rem * indents all lines starting
1030 rem * with 6510 opcodes
1040 rem * symass must installed
1050 :
1060 if peek(700)=76 then 1120
1070 :
1080 print "** symass not installed **"
1090 print "load/run symass first"
1100 end
1110 :
1120 print "sys 828 to enable"
1130 print "sys 831 to restore previous list vector"
1140 :
1150 sys700
1160 *=$033c
1170 ;
1180 spaces = $08 ; # spaces to indent
1190 srcad = $5f ; code address
1200 ad = $7a ; chr(NULL)t & symass
1210 iqplop = $0306 ; std list jmp vec
1220 symptr = $02bd ; symass vector
1230 reglst = $a71a ; normal list code
1240 outdo = $ab47 ; print char
1250 findop = $0000 ; dummy value
1260 word = $0000
1270 ;
1280 jmp vecset ; enable
1290 jmp lisdis ; disable
1300 ;
1310 ; alter the list vector (iqplop)
1320 vecset = *
1330 lda iqplop ; pick up
1340 sta rgl+1 ; current
1350 lda iqplop+1 ; 'list'
1360 sta rgl+2 ; vector
1370 lda #<lvec ; install new
1380 sta iqplop ; 'list'
1390 lda #>lvec ; vector
1400 sta iqplop+1
1410 lda symptr ; calc addr of
1420 clc ; 'findop'
1430 adc #$9d ; routine
1440 sta opfd+1
1450 lda symptr+1 ; & insert in
1460 adc #$03 ; code below
1470 sta opfd+2
1480 clc
1490 lda symptr ; calc addr of
1500 adc #$fa ; 'word'
1510 sta wrd+1 ; routine
1520 lda symptr+1 ; in symass
1530 adc #$05
1540 sta wrd+2
1550 rts
1560 ;
1570 ; new routine for listing
1580 lvec cpy #$04 ; check only
1590 beq opsrch ; 1st word
1600 ;
1610 reg lda (srcad),y ; on line
1620 ;
1630 rgl jmp reglst
1640 ;
1650 opsrch sty $49
1660 jsr calcad
1670 ;
1680 wrd jsr word ; get len of
1690 jsr calcad ; word ($59)
1700 ;
1710 opfd jsr findop
1720 bcc jreg ; not mnemonic
1730 ;
1740 ldx #spaces
1750 ;
1760 con2 lda #$20 ; insert spaces
1770 jsr outdo
1780 dex
1790 bne con2
1800 ;
1810 jreg ldy $49 ; restore y reg
1820 bne reg
1830 ;
1840 ; subroutine to set up search
1850 ; address 'ad' in symass
1860 calcad = *
1870 lda $49 ; add .y to
1880 clc ; current
1890 adc srcad ; addr
1900 sta ad
1910 lda #$00
1920 adc srcad+1
1930 sta ad+1
1940 rts
1950 ;
1960 ; sys to disable list formatter
1970 lisdis = *
1980 lda rgl+1 ; restore last
1990 sta iqplop ; vector
2000 lda rgl+2
2010 sta iqplop+1
2020 rts
2030 ;
2040 .end