home *** CD-ROM | disk | FTP | other *** search
- 10 LDA #$00
- 20 STA TEMP;TEMP IS USED THROUGH OUT THIS ROUTINE FOR TEMP STORAGE
- 30 STA CT
- 40 STA EFLAG;FLAG TO INDICATE END OF ROUTINE
- 50 LDA #<TRK; EQUALS #$CC ADDED TO #$73 = $73CC
- 60 STA CH1+1
- 70 LDA #<MES1;SET UP TRACK MESSAGE
- 80 STA CH+1
- 90 LDA #>MES1
- 100 STA CH+2
- 110 LDA #$01;SET BEGINNING DATA STORAGE TO $0801
- 120 STA CH2+1
- 130 LDA #$08
- 140 STA CH2+2
- 150 LDA #$EE;FILL $7000 TO $70FF #$EE
- 160 LDY #$00
- 170 EE STA SECS,Y
- 180 INY
- 190 CPY #$00
- 200 BNE EE
- 210 START LDY #$00
- 220 CH LDA $0000,Y;PRINT MESSAGE TO SCREEN
- 230 CMP #$00;#$00 IS USED AS A DELIMITER IF 0 THEN STOP PRINT
- 240 BEQ TRC1
- 250 JSR PRINT
- 260 INY
- 270 JMP CH
- 280 TRC1 JSR GET;GET SCREEN INPUT FOR TRACK & SECTOR
- 290 BEQ TRC1
- 300 JSR PRINT;ECHO CHOICE TO SCREEN IT'S ALREADY IN ASCII
- 310 AND #$0F;CONVERT ASCII TO HEX
- 320 STA BUF
- 330 ASL:ASL
- 340 CLC
- 350 ADC BUF
- 360 ASL
- 370 STA BUF
- 380 TRC2 JSR GET;GET SECOND NUMBER IN CHIOCE
- 390 BEQ TRC2
- 400 JSR PRINT;ECHO IT TO SCREEN
- 410 AND #$0F;CONVERT TO HEX
- 420 CLC
- 430 ADC BUF
- 440 CH1 STA TRK;HOLDS IN HEX TWO NUMBERS PRESSED
- 450 INC TEMP
- 460 LDA TEMP
- 470 CMP #$02;IF NOT 2 (null) BACK FOR SECTOR CHOICE
- 480 BEQ TRC3;IF EQUAL TO 2 THEN CONTINUE
- 490 LDA #<MES2;SET UP SECTOR MESSAGE
- 500 STA CH+1
- 510 LDA #>MES2
- 520 STA CH+2
- 530 LDA #<SEC
- 540 STA CH1+1
- 550 LDA #>SEC
- 560 STA CH1+2
- 570 JMP START;(null) BACK AND PRINT SECTOR MESSAGE
- 580 TRC3 LDA TRK;PUT BEGINNING TRACK & SECTOR IN BUFFER AT $7000
- 590 STA SECS
- 600 INC CT;CT KEEPS TRACK OF X COUNTER FOR $7000
- 610 LDA SEC
- 620 STA SECS+1
- 630 INC CT
- 640 LDA #$00
- 650 STA TEMP
- 660 READ JSR LIST;ROUTINES TO SEND DATA TO 1541
- 670 LDY #$00;ADDRESSES $06 $07 AND $00
- 680 TRC4 LDA MW1,Y
- 690 JSR OUT
- 700 INY
- 710 CPY #$08
- 720 BNE TRC4
- 730 JSR UNLIS
- 740 JSR LIST
- 750 LDY #$00
- 760 TRC5 LDA MW2,Y
- 770 JSR OUT
- 780 INY
- 790 CPY #$07
- 800 BNE TRC5
- 810 JSR UNLIS
- 820 JSR DELAY;DELAY TO INSURE M-W DATA ACCEPTED BY 1541
- 830 LDY #$00
- 840 JSR LIST
- 850 TRC6 LDA MR,Y;READ DISK BUFFER $0300
- 860 JSR OUT
- 870 INY
- 880 CPY #$06
- 890 BNE TRC6
- 900 JSR UNLIS
- 910 JSR TALK
- 920 LDY #$00
- 930 TRC7 JSR IN
- 940 STA DATA,Y;$7400 IS A WORK BUFFER FROM HERE IT'S SENT TO MEMORY
- 950 INY
- 960 CPY #$FF
- 970 BNE TRC7
- 980 JSR UNTLK
- 990 STY Y;THERS ONE BYTE LEFT TO GET FROM THE DISK
- 1000 JSR FF;(null) TO THIS ROUTINE TO GET IT
- 1010 LDY #$00
- 1020 LDX CT
- 1030 LDA DATA,Y;GET THE FIRST 2 BYTES THIS IS OUR NEXT TRK & SEC
- 1040 STA SECS,X
- 1050 STA TRK;SET UP NEXT READ ROUTINE TO DISK
- 1060 INY
- 1070 INX
- 1080 JSR END
- 1090 LDA DATA,Y;ON THE FIRST SECTOR WE GET THE LOAD ADDRESS
- 1100 STA SECS,X;BYTE 2 & 3 FROM THE DATA BLOCK
- 1110 STA SEC
- 1120 INY
- 1130 INX
- 1140 STX CT
- 1150 LDA TEMP
- 1160 BNE TRC8
- 1170 LDA DATA,Y
- 1180 STA ADD
- 1190 INY
- 1200 LDA DATA,Y
- 1210 STA ADD+1
- 1220 INY
- 1230 TRC8 LDA DATA,Y;ALL OTHER BLOCKS COME HERE
- 1240 CH2 STA $0801;AND THE #254 BYTES ARE PUT IN MEMORY
- 1250 JSR INCBUF
- 1260 INY
- 1270 CPY #$00
- 1280 BNE TRC8
- 1290 LDA EFLAG
- 1300 BEQ MORE;IF E FLAG IS 0 THERS MORE TO COPY
- 1310 JMP DISP;IF THE FLAG IS SET (1) THE PRINT THE DATA TO THE SCREEN
- 1320 MORE LDA #$01
- 1330 STA TEMP
- 1340 JMP READ
- 1350 LIST LDA #$08;STANDARD LISTEN, TALK AND DELAY ROUTINES
- 1360 JSR LIS
- 1370 LDA #$FF
- 1380 JSR LISEC
- 1390 RTS
- 1400 TALK LDA #$08
- 1410 JSR TLK
- 1420 LDA #$FF
- 1430 JSR TLKSEC
- 1440 RTS
- 1450 DELAY LDA #$00
- 1460 STA TIME
- 1470 STA TIME+1
- 1480 TI INC TIME
- 1490 LDA TIME
- 1500 CMP #$FF
- 1510 BNE TI
- 1520 INY
- 1530 TI1 INC TIME+1
- 1540 LDA TIME+1
- 1550 CMP #$FF
- 1560 BNE TI1
- 1570 CPY #$FF
- 1580 BNE TI
- 1590 RTS
- 1600 INCBUF LDA CH2+1
- 1610 CLC
- 1620 ADC #$01
- 1630 CMP #$00
- 1640 BEQ INC1
- 1650 STA CH2+1
- 1660 RTS
- 1670 INC1 STA CH2+1
- 1680 LDA CH2+2
- 1690 CLC
- 1700 ADC #$01
- 1701 CMP #$70
- 1702 BNE SAFE
- 1703 LDA #$01:STA EFLAG
- 1710 SAFE STA CH2+2
- 1720 RTS
- 1730 END CMP #$00;IF FIRST BYTE FROM SECTOR WAS 0 OR > 35 IT'S THE END
- 1740 BEQ FLAG;SO SET THE FLAG TO END
- 1750 CMP #$23
- 1760 BCS FLAG
- 1770 RTS
- 1780 FLAG LDA #$01;THIS SETS THE FLAG TO A 1
- 1790 STA EFLAG
- 1800 RTS
- 1810 FF JSR LIST;THIS IS WHERE WE PICK UP THE 256TH BYTE OF DATA
- 1820 LDY #$00
- 1830 FF1 LDA MR1,Y
- 1840 JSR OUT
- 1850 INY
- 1860 CPY #$05
- 1870 BNE FF1
- 1880 JSR UNLIS
- 1890 JSR TALK
- 1900 JSR IN
- 1910 LDY Y
- 1920 STA DATA,Y
- 1930 JSR UNTLK
- 1940 RTS
- 1950 DISP LDY #$00;ROUTINE TO PRINT TRK & SEC DATA TO SCREEN
- 1960 LDX #$00
- 1970 DIS LDA MES3,Y
- 1980 CMP #$00
- 1990 BEQ DIS1
- 2000 JSR PRINT
- 2010 INY
- 2020 JMP DIS
- 2030 DIS1 LDY #$00
- 2040 SET LDA SECS,Y
- 2050 CMP #$EE;WHEN #$EE IS REACHED ALL DATA HAS BEEN DISPLAYED
- 2060 BEQ SETAD;SO PRINT THE LOAD ADDRESS
- 2070 INY
- 2080 JMP SET
- 2090 SETAD TYA
- 3000 SEC
- 3010 SBC #$02
- 3020 TAY
- 3030 LDA ADD+1
- 3040 STA SECS,Y
- 3050 INY
- 3060 LDA ADD
- 3070 STA SECS,Y
- 3080 INY
- 3081 LDA CH2+2
- 3082 STA SECS,Y
- 3083 INY
- 3084 LDA CH2+1
- 3085 STA SECS,Y
- 3086 LDY #$00
- 3090 LDX #$00
- 3100 DIS2 LDA #$12
- 3110 JSR PRINT
- 3120 LDA SECS,Y
- 3130 CMP #$EE;THIS TIME THROUGH #$EE INDICATES WE'RE FINISHED
- 3140 BEQ DONE
- 3150 STA TEMP;ROUTINE TO CHANGE HEX TO ASCII
- 3160 AND #$0F
- 3170 STA TEMP+1
- 3180 LDA TEMP
- 3190 AND #$F0
- 3200 LSR:LSR:LSR:LSR
- 3210 STA TEMP
- 3230 LDA TEMP
- 3240 CMP #$0A
- 3250 BCC LO
- 3260 CLC
- 3270 ADC #$37
- 3280 JSR PRINT
- 3290 JMP NEXT
- 3300 LO LDA TEMP
- 3310 CLC
- 3320 ADC #$30
- 3330 JSR PRINT
- 3340 NEXT LDA TEMP+1
- 3350 CMP #$0A
- 3360 BCC LO1
- 3370 CLC
- 3380 ADC #$37
- 3390 JSR PRINT
- 3400 LDA #$20
- 3410 JSR PRINT
- 3420 JMP DIS3
- 3430 LO1 CLC
- 3440 ADC #$30
- 3450 JSR PRINT
- 3460 LDA #$20
- 3470 JSR PRINT
- 3480 DIS3 INY
- 3490 INX
- 3500 CPX #$0C
- 3510 BEQ DIS4
- 3520 JMP DIS2
- 3530 DIS4 LDA #$0D
- 3540 JSR PRINT
- 3550 LDX #$00
- 3560 JMP DIS2
- 3570 DONE BRK;FINISHED BRK BRINGS US BACK TO THE M/L MONITOR
- 3580 MES1 .BYTE 147
- 3590 .BYTE 13 13 18:.BYTE " ENTER TRACK "
- 3600 .BYTE 146 32 0
- 3610 MES2 .BYTE 13 13 18:.BYTE " ENTER SECTOR "
- 3620 .BYTE 146 32 0
- 3630 MES3 .BYTE 13 13 18:.BYTE " TRACKS & SECTORS USED "
- 3640 .BYTE 13 13 00
- 3650 TIME .BYTE 0 0
- 3660 TEMP .BYTE 0 0
- 3670 BUF .BYTE 0
- 3680 MW1 .BYTE 77 45 87 06 00 02
- 3690 TRK .BYTE 0
- 3700 SEC .BYTE 0
- 3710 MW2 .BYTE 77 45 87 00 00 01 128
- 3720 MR .BYTE 77 45 82 00 03 255
- 3730 MR1 .BYTE 77 45 82 255 03
- 3740 CT .BYTE 0
- 3750 A .BYTE 0
- 3760 X .BYTE 0
- 3770 Y .BYTE 0
- 3780 ADD .BYTE 0 0
- 3790 EFLAG .BYTE 0
- 3800 .END TRACE EQ
-