
    1    .LIF
 1000  *SAVE S.LITTLE RAM DISK
 1010  *--------------------------------
 1020         .OR $4000
 1030         .TF B.LITTLE RAM DISK
 1040  *--------------------------------
 1050  RAMP   .EQ $3C,3D
 1060  BUFP   .EQ $3E,3F
 1070  IOB    .EQ $48,49
 1080  *--------------------------------
 1090  INSTALL
 1100         LDY #0       COPY CODE TO PAGE 3
 1110  .0     LDA RAMDISK.IMAG,Y
 1120         STA RAMDISK.REAL,Y
 1130         INY
 1140         CPY #$D0     NOT PAST $3CF
 1150         BCC .0
 1160  *---INSTALL DOS HOOK-------------
 1170         LDY #2
 1180  .1     LDA $BD00,Y
 1190         STA OLD.BD00,Y
 1200         LDA NEW.BD00,Y
 1210         STA $BD00,Y
 1220         DEY
 1230         BPL .1
 1240  *---INIT VTOC & CATALOG----------
 1250         LDA $C083
 1260         LDA $C083
 1270         INY          Y=0
 1280         TYA
 1290  .2     STA $D000,Y  CLEAR VTOC
 1300         STA $D100,Y  CLEAR THREE CATALOG PAGES
 1310         STA $D200,Y  ...ROOM FOR 21 FILES
 1320         STA $D300,Y
 1330         INY
 1340         BNE .2
 1350  *---CATALOG CHAIN----------------
 1360         LDA #$11     SIMULATED TRACK 11
 1370         STA $D201
 1380         STA $D301
 1390         INY          Y=1
 1400         STY $D202    POINT TO 3RD CATALOG SECTOR
 1410         INY          Y=2
 1420         STY $D302    POINT TO 2ND CATALOG SECTOR
 1430  *---FINISH THE VTOC--------------
 1440         LDY #0       USE TABLES FOR VTOC
 1450  .3     LDX TBLX,Y   INDEX INTO VTOC
 1460         BEQ .4       ...FINISHED
 1470         LDA TBLA,Y
 1480         STA $D000,X
 1490         INY
 1500         BNE .3       ...ALWAYS
 1510  *--------------------------------
 1520  .4     LDA $C082    BACK TO MOTHERBOARD ROM
 1530         RTS
 1540  *--------------------------------
 1550  TBLX   .HS 01.02.27.34.35.37.3C.3D.40.41.44.45.48.49.00
 1560  TBLA   .HS 11.03.7A.23.10.01.FF.F0.FF.FF.FF.FF.FF.FF
 1570  *--------------------------------
 1580  RAMDISK.IMAG .PH $300
 1590  RAMDISK.REAL
 1600  *--------------------------------
 1610  OLD.BD00   .BS 3
 1620  NEW.BD00   JMP LITTLE.RAM.DISK
 1630  *--------------------------------
 1640  LITTLE.RAM.DISK
 1650         STY IOB
 1660         STA IOB+1
 1670         LDY #1       LOOK AT SLOT NUMBER
 1680         LDA (IOB),Y
 1690         CMP #$30     RAMDISK IN SLOT 3
 1700         BEQ RAM.DISK.SELECTED
 1710         LDY #2
 1720  .1     LDA OLD.BD00,Y
 1730         STA $BD00,Y
 1740         DEY
 1750         BPL .1
 1760         LDY IOB
 1770         LDA IOB+1
 1780         JSR $BD00
 1790         LDY #2
 1800  .2     LDA NEW.BD00,Y
 1810         STA $BD00,Y
 1820         DEY
 1830         BPL .2
 1840         RTS
 1850  *--------------------------------
 1860  RAM.DISK.SELECTED
 1870         INY          LOOK AT DRIVE
 1880         LDA (IOB),Y
 1890         EOR #1       MUST BE DRIVE 1
 1900         BNE .99      ...NOT DRIVE 1, ERROR
 1910         STA RAMP     LO-BYTE OF RAMPAGE
 1920  *--------------------------------
 1930         LDY #5       GET SECTOR #
 1940         LDA (IOB),Y
 1950         CMP #16
 1960         BCS .99      BAD T/S
 1970         STA RAMP+1  
 1980         DEY          GET TRACK #
 1990         LDA (IOB),Y
 2000         BEQ .99      INVALID TRACK #
 2010         CMP #$11     IS IT VTOC TRACK?
 2020         BNE .2       NOT TRACK 17
 2030  *---TRACK 17---------------------
 2040         LDA RAMP+1        GET SECTOR #
 2050         CMP #4            MUST BE 0-3
 2060         BCS .99           NOT VALID T/S
 2070  .1     ORA #$D0     FORM HI-BYTE OF ADDRESS
 2080         LDX #0       C083 BANK
 2090         BEQ .4       ...ALWAYS
 2100  *---TRACK 1-4--------------------
 2110  .2     CMP #5       OTHERWISE MUST BE TRACK 1-4
 2120         BCS .99      NOT VALID T/S
 2130         CMP #1       TRACK 1?
 2140         BNE .3       ...NO
 2150         LDA RAMP+1        GET SECTOR #
 2160         CMP #4            MUST BE 4-F
 2170         BCS .1            ...GOOD
 2180  *---ERROR------------------------
 2190  .99    LDY #13
 2200         LDA #$40
 2210         STA (IOB),Y
 2220         SEC
 2230         RTS
 2240  *--------------------------------
 2250  .3     ASL          CHANGE 2,3,4 TO 20,30,40
 2260         ASL
 2270         ASL
 2280         ASL
 2290         ADC #$B0     ... TO D0,E0,F0
 2300         ORA RAMP+1        MERGE SECTOR
 2310         LDX #8       C08B BANK
 2320  .4     STA RAMP+1
 2330  *--------------------------------
 2340         LDY #12      LOOK AT OPCODE
 2350         LDA (IOB),Y
 2360         BEQ .99      ...NOT RD OR WRT
 2370         CMP #3       IS IT RD OR WRT?
 2380         BCS .99      ...NO, IGNORE
 2390         LSR          SET CARRY IF READ, CLR IF WRT
 2400  *---SELECT RAMCARD BANK----------
 2410         LDA $C083,X
 2420         LDA $C083,X
 2430  *---CLEAR ERROR CODE-------------
 2440         LDY #13
 2450         LDA #0
 2460         STA (IOB),Y
 2470  *---GET BUFFER ADDRESS-----------
 2480         LDY #8
 2490         LDA (IOB),Y
 2500         STA BUFP
 2510         INY
 2520         LDA (IOB),Y
 2530         STA BUFP+1
 2540         LDY #0
 2550         BCS .6       ...READ
 2560  *---WRITE A SECTOR---------------
 2570  .5     LDA (BUFP),Y
 2580         STA (RAMP),Y
 2590         INY
 2600         BNE .5
 2610         BEQ .7       ...ALWAYS
 2620  *---READ A SECTOR----------------
 2630  .6     LDA (RAMP),Y
 2640         STA (BUFP),Y
 2650         INY
 2660         BNE .6
 2670  .7     LDA $C082    BACK TO MOTHERBOARD ROM
 2680         CLC
 2690         RTS
 2700  *--------------------------------
 2710         .EP
 2720         .LIF

