
 1000  *SAVE S.FIND T/S LISTS
 1010  *--------------------------------
 1020  CUR.SECTOR .EQ 0
 1030  CUR.TRACK  .EQ 1
 1040  *---------------------------------
 1050  COUT   .EQ $FDED
 1060  CROUT  .EQ $FD8E
 1070  PRBYTE .EQ $FDDA
 1080  ENTER.RWTS .EQ $3D9
 1090  *--------------------------------
 1100  FIND.TS.LISTS
 1110         LDA #0
 1120         STA CUR.SECTOR
 1130         STA CUR.TRACK
 1140  .1     JSR READ.NEXT.SECTOR
 1150         BCC .2       GOT A SECTOR, CHECK IT
 1160         RTS          END OF DISK, QUIT
 1170  *---CHECK IF THIS IS T/S LIST----
 1180  .2     LDA BUF+12   TRACK # FOR FIRST DATA SECTOR
 1190         BEQ .1       ...NO, TRY NEXT ONE
 1200         LDY #12
 1210  .3     LDA BUF,Y
 1220         CMP #35
 1230         BCS .1       ...NOT VALID TRACK
 1240         INY
 1250         LDA BUF,Y
 1260         CMP #16
 1270         BCS .1       ...NOT VALID SECTOR
 1280         INY
 1290         BNE .3       ...MORE IN SECTOR TO CHECK
 1300  *---DISPLAY THE T/S LIST---------
 1310         JSR DISPLAY.TS.LIST
 1320  *---READ FIRST DATA SECTOR-------
 1330         LDY BUF+12
 1340         LDX BUF+13
 1350         JSR READTS
 1360  *---DISPLAY FIRST 64 BYTES-------
 1370         LDY #0
 1380         JSR DISPLAY.NEXT.16
 1390         JSR DISPLAY.NEXT.16
 1400         JSR DISPLAY.NEXT.16
 1410         JSR DISPLAY.NEXT.16
 1420         JSR CROUT
 1430         JMP .1
 1440  *--------------------------------
 1450  DISPLAY.TS.LIST
 1460         JSR CROUT
 1470         LDA CUR.TRACK
 1480         LDX CUR.SECTOR
 1490         JSR PR.TS
 1500         LDA #":"
 1510         JSR COUT
 1520         LDA #" "
 1530         JSR COUT
 1540         JSR COUT
 1550         LDY #0
 1560  .1     LDA BUF+13,Y      SECTOR
 1570         TAX
 1580         LDA BUF+12,Y      TRACK
 1590         BEQ .2       ...END OF LIST
 1600         JSR PR.TS
 1610         LDA #" "
 1620         JSR COUT
 1630         TYA
 1640         AND #$0F
 1650         CMP #$0E
 1660         BNE .3
 1670         JSR SEVEN.SPACES
 1680  .3     INY
 1690         INY
 1700         CPY #-12
 1710         BCC .1
 1720  .2     RTS
 1730  *--------------------------------
 1740  DISPLAY.NEXT.16
 1750         JSR SEVEN.SPACES
 1760  .1     LDA BUF,Y
 1770         JSR PRBYTE
 1780         LDA #" "
 1790         JSR COUT
 1800         INY
 1810         TYA
 1820         AND #$0F
 1830         BNE .1
 1840         TYA
 1850         SEC
 1860         SBC #16
 1870         TAY
 1880  .2     LDA BUF,Y
 1890         ORA #$80
 1900         CMP #$A0
 1910         BCS .3
 1920         LDA #"."
 1930  .3     JSR COUT
 1940         INY
 1950         TYA
 1960         AND #$0F
 1970         BNE .2
 1980         RTS
 1990  *--------------------------------
 2000  SEVEN.SPACES
 2010         JSR CROUT
 2020         LDA #" "
 2030         LDX #7
 2040  .4     JSR COUT
 2050         DEX
 2060         BNE .4
 2070         RTS
 2080  *--------------------------------
 2090  PR.TS
 2100         JSR PRBYTE
 2110         LDA #"-"
 2120         JSR COUT
 2130         TXA
 2140         ORA #"0"
 2150         CMP #$BA
 2160         BCC .1
 2170         ADC #6
 2180  .1     JMP COUT
 2190  *--------------------------------
 2200  *   READ NEXT SECTOR
 2210  *--------------------------------
 2220  READ.NEXT.SECTOR
 2230         LDX CUR.SECTOR
 2240         LDY CUR.TRACK
 2250         DEX          NEXT SECTOR
 2260         BPL .1       ...SAME TRACK
 2270         LDX #15      ...NEXT TRACK
 2280         INY
 2290         CPY #35
 2300         BCS .2       ...END OF DISK
 2310  .1     STY CUR.TRACK
 2320         STX CUR.SECTOR
 2330         JSR READTS
 2340         CLC
 2350  .2     RTS
 2360  *--------------------------------
 2370  READTS STX IOB.SECTOR
 2380         STY IOB.TRACK
 2390  .2     LDA /IOB
 2400         LDY #IOB
 2410         JSR ENTER.RWTS
 2420         BCS .2       ...TRY AGAIN IF ERROR
 2430         RTS
 2440  *---------------------------------
 2450  *      IOB FOR RWTS CALLS
 2460  *---------------------------------
 2470  IOB
 2480  IOB.TYPE   .HS 01   0--MUST BE $01
 2490  IOB.SLOT16 .HS 60   1--SLOT # TIMES 16
 2500  IOB.DRIVE  .HS 01   2--DRIVE # (1 OR 2)
 2510  IOB.VOLUME .HS 00   3--DESIRED VOL # (0 MATCHES ANY)
 2520  IOB.TRACK  .BS 1    4--TRACK # (0 TO 34)
 2530  IOB.SECTOR .BS 1    5--SECTOR # (0 TO 15)
 2540  IOB.PNTDCT .DA DCT  6--ADDRESS OF DCT
 2550  IOB.BUFFER .DA BUF  8--ADDRESS OF DATA
 2560  IOB.SECTSZ .DA 256 10--# BYTES IN A SECTOR
 2570  IOB.OPCODE .HS 01  12--0=SEEK, 1=READ, 2=WRITE, OR 4=FORMAT
 2580  IOB.ERROR  .BS 1   13--ERROR CODE: 0, 8, 10, 20, 40, 80
 2590  IOB.ACTVOL .BS 1   14--ACTUAL VOLUME # FOUND
 2600  IOB.PRVSLT .HS 60  15--PREVIOUS SLOT #
 2610  IOB.PRVDRV .HS 01  16--PREVIOUS DRIVE #
 2620  *--------------------------------
 2630  DCT    .HS 0001EFD8
 2640  *--------------------------------
 2650  BUF    .BS 256
 2660  *--------------------------------

