10 CLEAR1000 20 EXEC &H6C00 30 ALL 40 *RDISK V1.0 - (C)1992 BY J.BIRD 50 *RAM DISK FOR DDOS 60 *EQUATES 70 ORG 490 80 @DDR EQU 56 90 @OFF EQU 60 100 @ACT EQU 44 110 @EXTMSR EQU 1 120 @READ EQU 2 130 @WRIT EQU 6 140 @EXTLSR EQU 8 150 @OUT EQU 255 160 @OUTB EQU 15 170 @IOA EQU $FF34 180 @CRA EQU $FF35 190 @IOB EQU $FF36 200 @CRB EQU $FF37 210 @LSN RMB 2 220 *INIT - COPY ROM TO RAM 230 @INIT ORCC #$50 240 LDX #32768 250 @CRAM LDA ,X 260 STA $FFDF 270 STA ,X+ 280 STA $FFDE 290 CMPX #57344 300 BLO @CRAM 302 LDX #@RESET 304 STX 157 306 STA $FFDF 310 RTS 320 @RESET STA $FFDF 330 *SETUP B SIDE PIA FOR RDISK 340 LDA #@DDR 350 STA @CRB 360 LDA #@OUTB 370 STA @IOB 380 LDA #@OFF 390 STA @CRB 400 *PATCH DSKCOM ROUTINE 410 LDA #$7E 420 STA $C17C 430 LDX #@DSKCOM 440 STX $C17D 450 CLR @IOB 460 ANDCC #$AF 470 RTS 480 FML:FMS 490 ORG $E000 500 *DSKCOM - PATCH FOR DSKCOM 510 *CHECK FOR DRIVE 4 520 @DSKCOM LDA >$EB 530 CMPA #4 540 BEQ @RAMDISC 550 LDA $FF40 560 JMP $C17F 570 *RAMDISC-CALC LSN 580 @RAMDISC LDA >$EC 590 LDB #18 600 MUL 610 ADDB >$ED 620 BCC @GOTLSN 630 ADDA #1 640 @GOTLSN CMPD #1024 650 BHI @TRERR 660 STD @LSN 670 *BRANCH TO COMMANDS 680 LDA >$EA 690 BEQ @RESTORE 700 CMPA #1 710 BEQ @SEEK 720 CMPA #2 730 BEQ @READS 740 CMPA #3 750 LBEQ @WRITE 760 CMPA #4 770 LBEQ @WRITE 780 CMPA #5 790 BEQ @FORMAT 800 CMPA #6 810 BEQ @FORMAT 820 CMPA #7 830 BEQ @READS 840 CMPA #8 850 BEQ @FORMAT 860 LDB #8 870 ORCC #1 880 @EXIT STB >$F0 890 PULS U,Y,X,DP,A,CC 900 LDB >$F0 910 RTS 920 @FORMAT CLRB 930 BRA @EXIT 940 @TRERR LDB #135 950 ORCC #1 960 BRA @EXIT 970 *RESTORE - SET LSN TO 0000 980 @RESTORE CLR @LSN 990 CLR @LSN+1 1000 *SEEK - MOVE TO SECTOR IN RAM 1010 @SEEK LDA #@DDR 1020 STA @CRA 1030 LDA #@OUT 1040 STA @IOA 1050 LDA #@ACT 1060 STA @CRA 1070 LDA #@EXTMSR 1080 STA @IOB 1090 LDD @LSN 1100 STA @IOA 1110 LDA @IOA 1120 LDA #@EXTLSR 1130 STA @IOB 1140 STB @IOA 1150 LDB @IOA 1160 CLR @IOB 1170 LDA #@OFF 1180 STA @IOA 1190 CLRB 1200 BRA @EXIT 1210 *READ - READ SECTOR - INCLUDES VERIFY 1220 @READS LDA #@DDR 1230 STA @CRA 1240 CLR @IOA 1250 LDA #@ACT 1260 STA @CRA 1270 LDA #@READ 1280 STA @IOB 1290 LDX >$EE 1300 CLRB 1310 LDA >$EA 1320 CMPA #7 1330 BNE @RDLP 1340 *VERIFY-READ FIRST TWO BYTES INTO 79/80 1350 LDB #2 1360 LDX #79 1370 @RDLP LDA @IOA 1380 STA ,X+ 1390 DECB 1400 BNE @RDLP 1410 CLR @IOB 1420 LDA #@OFF 1430 STA @IOA 1440 CLRB 1450 BRA @EXIT 1460 *WRITE-WRITE SECTOR 1470 @WRITE LDA #@DDR 1480 STA @CRA 1490 LDA #@OUT 1500 STA @IOA 1510 LDA #@ACT 1520 STA @CRA 1530 LDA #@WRIT 1540 STA @IOB 1550 LDX >$EE 1560 CLRB 1570 @WRTLP LDA ,X+ 1580 STA @IOA 1590 LDA @IOA 1600 DECB 1610 BNE @WRTLP 1620 CLR @IOB 1630 LDA #@OFF 1640 STA @CRA 1650 LBRA @FORMAT 1660 FML 1670 END @INIT