mirror of
https://github.com/antoinevignau/source.git
synced 2024-09-01 04:29:09 +00:00
3653 lines
49 KiB
ArmAsm
3653 lines
49 KiB
ArmAsm
*
|
|
* Microdrive Turbo GS/OS driver
|
|
*
|
|
* (c) 1996-2006, Joachim Lange
|
|
* (s) 2019, Brutal Deluxe Software
|
|
*
|
|
|
|
mx %00
|
|
rel
|
|
typ DRV ; auxtype MUST be $0110
|
|
dsk MDT.l
|
|
lst off
|
|
|
|
*----------------------------
|
|
|
|
* Device driver direct page
|
|
|
|
deviceNum = $00 ; 00
|
|
callNum = deviceNum+2 ; 02
|
|
bufferPtr = callNum+2 ; 04
|
|
requestCount = bufferPtr+4 ; 06
|
|
transferCount = requestCount+4 ; 0A
|
|
blockNum = transferCount+4 ; 0E
|
|
blockSize = blockNum+4 ; 12
|
|
fstID = blockSize+2 ; 16requestCount+2
|
|
statusCode = blockSize+2 ; 16
|
|
controlCode = blockSize+2 ; 16
|
|
volumeID = statusCode+2 ; 18
|
|
cachePriority = volumeID+2 ; 1A
|
|
cachePointer = cachePriority+2 ; 1C
|
|
dibPointer = cachePointer+4 ; 1E
|
|
|
|
* Device Information Block = DIB
|
|
|
|
linkPtr = $00 ; 00
|
|
entryPtr = linkPtr+4 ; 04
|
|
characteristics = entryPointer+4 ; 08
|
|
blockCount = characteristics+2 ; 0A
|
|
length = blockCount+4 ; 0E
|
|
devName = length+1 ; 0F
|
|
slotNum = devName+31 ; 2E
|
|
unitNum = slotNum+2 ; 30
|
|
version = unitNum+2 ; 32
|
|
deviceID = version+2 ; 34
|
|
headLink = deviceID+2 ; 36
|
|
forwardLink = headLink+2 ; 38
|
|
extendedDIBPtr = forwardLink+2 ; 3A
|
|
DIBDevNum = extendedDIBPtr+4 ; 3E
|
|
|
|
SPKR EQU $C030
|
|
DMAREG EQU $C037
|
|
RDBANK2 EQU $C080
|
|
RDROM2 EQU $C082
|
|
LCBANK2 EQU $C083
|
|
RDBANK1 EQU $C088
|
|
RDROM1 EQU $C08A
|
|
LCBANK1 EQU $C08B
|
|
CLRROM EQU $CFFF
|
|
|
|
CACHE_FIND_BLK EQU $01FC04
|
|
CACHE_ADD_BLK EQU $01FC08
|
|
|
|
*----------------------------
|
|
|
|
L0000 DW L027A-L0000 ; offset to 1st DIB
|
|
DW $0010 ; number of devices
|
|
DA L0090-L0000 ; offset to configuration list
|
|
DA L0094-L0000 ; offset to configuration list
|
|
DA L0098-L0000 ; offset to configuration list
|
|
DA L009C-L0000 ; offset to configuration list
|
|
DA L00A0-L0000 ; offset to configuration list
|
|
DA L00A4-L0000 ; offset to configuration list
|
|
DA L00A8-L0000 ; offset to configuration list
|
|
DA L00AC-L0000 ; offset to configuration list
|
|
DA L00B0-L0000 ; offset to configuration list
|
|
DA L00B4-L0000 ; offset to configuration list
|
|
DA L00B8-L0000 ; offset to configuration list
|
|
DA L00BC-L0000 ; offset to configuration list
|
|
DA L00C0-L0000 ; offset to configuration list
|
|
DA L00C4-L0000 ; offset to configuration list
|
|
DA L00C8-L0000 ; offset to configuration list
|
|
DA L00CC-L0000 ; offset to configuration list
|
|
|
|
*--- Copyright check (see Driver_Startup)
|
|
|
|
L0024 ASC " MicroDrv/Turbo GS/OS - HD Driver v1.00 "
|
|
L0061 ASC "Copyright 1996 by "
|
|
L0073 ASC "Joachim "
|
|
L007B ASC "Lange "
|
|
|
|
* Table for SetConfigParameters
|
|
|
|
L0090 ADRL $00000000
|
|
L0094 ADRL $00000000
|
|
L0098 ADRL $00000000
|
|
L009C ADRL $00000000
|
|
L00A0 ADRL $00000000
|
|
L00A4 ADRL $00000000
|
|
L00A8 ADRL $00000000
|
|
L00AC ADRL $00000000
|
|
L00B0 ADRL $00000000
|
|
L00B4 ADRL $00000000
|
|
L00B8 ADRL $00000000
|
|
L00BC ADRL $00000000
|
|
L00C0 ADRL $00000000
|
|
L00C4 ADRL $00000000
|
|
L00C8 ADRL $00000000
|
|
L00CC ADRL $00000000
|
|
|
|
* Driver_Status / GetFormatOptions
|
|
|
|
L00D0 DA $0000
|
|
DA L00F2 ; device 1
|
|
DA L010A
|
|
DA L0122
|
|
DA L013A
|
|
DA L0152
|
|
DA L016A
|
|
DA L0182
|
|
DA L019A
|
|
DA L01B2
|
|
DA L01CA
|
|
DA L01E2
|
|
DA L01FA
|
|
DA L0212
|
|
DA L022A
|
|
DA L0242 ; device F
|
|
DA L025A ; device 10
|
|
|
|
* See GS/OS Driver Reference, page 236+
|
|
|
|
L00F2 DW $0001 ; numOptions
|
|
DW $0001 ; numDisplayed
|
|
DW $0001 ; recommendedOption
|
|
DW $0001 ; currentOption
|
|
|
|
DW $0001 ; formatOptionNum
|
|
DW $0000 ; linkRefNum
|
|
DW $0000 ; flags (mediaSize in bytes, Universal Format)
|
|
ADRL $00000000 ; blockCount
|
|
DW $0200 ; blockSize
|
|
DW $0001 ; interleaveFactor (1:1)
|
|
DW $0000 ; mediaSize ($0000 blocks)
|
|
|
|
L010A HEX 01000100010001000100000000000000
|
|
HEX 0000000201000000
|
|
L0122 HEX 01000100010001000100000000000000
|
|
HEX 0000000201000000
|
|
L013A HEX 01000100010001000100000000000000
|
|
HEX 0000000201000000
|
|
L0152 HEX 01000100010001000100000000000000
|
|
HEX 0000000201000000
|
|
L016A HEX 01000100010001000100000000000000
|
|
HEX 0000000201000000
|
|
L0182 HEX 01000100010001000100000000000000
|
|
HEX 0000000201000000
|
|
L019A HEX 01000100010001000100000000000000
|
|
HEX 0000000201000000
|
|
L01B2 HEX 01000100010001000100000000000000
|
|
HEX 0000000201000000
|
|
L01CA HEX 01000100010001000100000000000000
|
|
HEX 0000000201000000
|
|
L01E2 HEX 01000100010001000100000000000000
|
|
HEX 0000000201000000
|
|
L01FA HEX 01000100010001000100000000000000
|
|
HEX 0000000201000000
|
|
L0212 HEX 01000100010001000100000000000000
|
|
HEX 0000000201000000
|
|
L022A HEX 01000100010001000100000000000000
|
|
HEX 0000000201000000
|
|
L0242 HEX 01000100010001000100000000000000
|
|
HEX 0000000201000000
|
|
L025A HEX 01000100010001000100000000000000
|
|
HEX 0000000201000000
|
|
|
|
DB $FF
|
|
DB $FF
|
|
DB $FF
|
|
DB $FF
|
|
DB $FF
|
|
DB $FF
|
|
DB $FF
|
|
DB $FF
|
|
|
|
*----------------------------
|
|
* DIBs
|
|
*----------------------------
|
|
|
|
L027A ADRL L02BE ; pointer to the next DIB
|
|
ADRL entryPoint ; driver entry point
|
|
DW $23E8 ; characteristics
|
|
ADRL $00000000 ; block count
|
|
STR 'MICRODRIVE.TURBO.1' ; device name
|
|
ASC ' '
|
|
DW $0000 ; slot number
|
|
DW $0001 ; unit number
|
|
DW $1000 ; version
|
|
DW $0013 ; device ID
|
|
DW $0000 ; first linked device
|
|
DW $0000 ; next linked device
|
|
ADRL $00000000 ; extended DIB ptr
|
|
DW $0000 ; device number
|
|
DW $0001
|
|
DW $0000
|
|
L02BE ADRL L0302 ; pointer to the next DIB
|
|
ADRL entryPoint ; driver entry point
|
|
DW $23E8 ; characteristics
|
|
ADRL $00000000 ; block count
|
|
STR 'MICRODRIVE.TURBO.2' ; device name
|
|
ASC ' '
|
|
DW $0000 ; slot number
|
|
DW $0002 ; unit number
|
|
DW $1000 ; version
|
|
DW $0013 ; device ID
|
|
DW $0000 ; first linked device
|
|
DW $0000 ; next linked device
|
|
ADRL $00000000 ; extended DIB ptr
|
|
DW $0000 ; device number
|
|
DW $0002
|
|
DW $0000
|
|
L0302 ADRL L0346 ; pointer to the next DIB
|
|
ADRL entryPoint ; driver entry point
|
|
DW $23E8 ; characteristics
|
|
ADRL $00000000 ; block count
|
|
STR 'MICRODRIVE.TURBO.3' ; device name
|
|
ASC ' '
|
|
DW $0000 ; slot number
|
|
DW $0002 ; unit number
|
|
DW $1000 ; version
|
|
DW $0013 ; device ID
|
|
DW $0000 ; first linked device
|
|
DW $0000 ; next linked device
|
|
ADRL $00000000 ; extended DIB ptr
|
|
DW $0000 ; device number
|
|
DW $0002
|
|
DW $0000
|
|
L0346 ADRL L038A ; pointer to the next DIB
|
|
ADRL entryPoint ; driver entry point
|
|
DW $23E8 ; characteristics
|
|
ADRL $00000000 ; block count
|
|
STR 'MICRODRIVE.TURBO.4' ; device name
|
|
ASC ' '
|
|
DW $0000 ; slot number
|
|
DW $0002 ; unit number
|
|
DW $1000 ; version
|
|
DW $0013 ; device ID
|
|
DW $0000 ; first linked device
|
|
DW $0000 ; next linked device
|
|
ADRL $00000000 ; extended DIB ptr
|
|
DW $0000 ; device number
|
|
DW $0002
|
|
DW $0000
|
|
L038A ADRL L03CE ; pointer to the next DIB
|
|
ADRL entryPoint ; driver entry point
|
|
DW $23E8 ; characteristics
|
|
ADRL $00000000 ; block count
|
|
STR 'MICRODRIVE.TURBO.5' ; device name
|
|
ASC ' '
|
|
DW $0000 ; slot number
|
|
DW $0002 ; unit number
|
|
DW $1000 ; version
|
|
DW $0013 ; device ID
|
|
DW $0000 ; first linked device
|
|
DW $0000 ; next linked device
|
|
ADRL $00000000 ; extended DIB ptr
|
|
DW $0000 ; device number
|
|
DW $0002
|
|
DW $0000
|
|
L03CE ADRL L0412 ; pointer to the next DIB
|
|
ADRL entryPoint ; driver entry point
|
|
DW $23E8 ; characteristics
|
|
ADRL $00000000 ; block count
|
|
STR 'MICRODRIVE.TURBO.6' ; device name
|
|
ASC ' '
|
|
DW $0000 ; slot number
|
|
DW $0002 ; unit number
|
|
DW $1000 ; version
|
|
DW $0013 ; device ID
|
|
DW $0000 ; first linked device
|
|
DW $0000 ; next linked device
|
|
ADRL $00000000 ; extended DIB ptr
|
|
DW $0000 ; device number
|
|
DW $0002
|
|
DW $0000
|
|
L0412 ADRL L0456 ; pointer to the next DIB
|
|
ADRL entryPoint ; driver entry point
|
|
DW $23E8 ; characteristics
|
|
ADRL $00000000 ; block count
|
|
STR 'MICRODRIVE.TURBO.7' ; device name
|
|
ASC ' '
|
|
DW $0000 ; slot number
|
|
DW $0002 ; unit number
|
|
DW $1000 ; version
|
|
DW $0013 ; device ID
|
|
DW $0000 ; first linked device
|
|
DW $0000 ; next linked device
|
|
ADRL $00000000 ; extended DIB ptr
|
|
DW $0000 ; device number
|
|
DW $0002
|
|
DW $0000
|
|
L0456 ADRL L049A ; pointer to the next DIB
|
|
ADRL entryPoint ; driver entry point
|
|
DW $23E8 ; characteristics
|
|
ADRL $00000000 ; block count
|
|
STR 'MICRODRIVE.TURBO.8' ; device name
|
|
ASC ' '
|
|
DW $0000 ; slot number
|
|
DW $0002 ; unit number
|
|
DW $1000 ; version
|
|
DW $0013 ; device ID
|
|
DW $0000 ; first linked device
|
|
DW $0000 ; next linked device
|
|
ADRL $00000000 ; extended DIB ptr
|
|
DW $0000 ; device number
|
|
DW $0002
|
|
DW $0000
|
|
L049A ADRL L04DE ; pointer to the next DIB
|
|
ADRL entryPoint ; driver entry point
|
|
DW $23E8 ; characteristics
|
|
ADRL $00000000 ; block count
|
|
STR 'MICRODRIVE.TURBO.9' ; device name
|
|
ASC ' '
|
|
DW $0000 ; slot number
|
|
DW $0002 ; unit number
|
|
DW $1000 ; version
|
|
DW $0013 ; device ID
|
|
DW $0000 ; first linked device
|
|
DW $0000 ; next linked device
|
|
ADRL $00000000 ; extended DIB ptr
|
|
DW $0000 ; device number
|
|
DW $0002
|
|
DW $0000
|
|
L04DE ADRL L0522 ; pointer to the next DIB
|
|
ADRL entryPoint ; driver entry point
|
|
DW $23E8 ; characteristics
|
|
ADRL $00000000 ; block count
|
|
STR 'MICRODRIVE.TURBO.A' ; device name
|
|
ASC ' '
|
|
DW $0000 ; slot number
|
|
DW $0002 ; unit number
|
|
DW $1000 ; version
|
|
DW $0013 ; device ID
|
|
DW $0000 ; first linked device
|
|
DW $0000 ; next linked device
|
|
ADRL $00000000 ; extended DIB ptr
|
|
DW $0000 ; device number
|
|
DW $0002
|
|
DW $0000
|
|
L0522 ADRL L0566 ; pointer to the next DIB
|
|
ADRL entryPoint ; driver entry point
|
|
DW $23E8 ; characteristics
|
|
ADRL $00000000 ; block count
|
|
STR 'MICRODRIVE.TURBO.B' ; device name
|
|
ASC ' '
|
|
DW $0000 ; slot number
|
|
DW $0002 ; unit number
|
|
DW $1000 ; version
|
|
DW $0013 ; device ID
|
|
DW $0000 ; first linked device
|
|
DW $0000 ; next linked device
|
|
ADRL $00000000 ; extended DIB ptr
|
|
DW $0000 ; device number
|
|
DW $0002
|
|
DW $0000
|
|
L0566 ADRL L05AA ; pointer to the next DIB
|
|
ADRL entryPoint ; driver entry point
|
|
DW $23E8 ; characteristics
|
|
ADRL $00000000 ; block count
|
|
STR 'MICRODRIVE.TURBO.C' ; device name
|
|
ASC ' '
|
|
DW $0000 ; slot number
|
|
DW $0002 ; unit number
|
|
DW $1000 ; version
|
|
DW $0013 ; device ID
|
|
DW $0000 ; first linked device
|
|
DW $0000 ; next linked device
|
|
ADRL $00000000 ; extended DIB ptr
|
|
DW $0000 ; device number
|
|
DW $0002
|
|
DW $0000
|
|
L05AA ADRL L05EE ; pointer to the next DIB
|
|
ADRL entryPoint ; driver entry point
|
|
DW $23E8 ; characteristics
|
|
ADRL $00000000 ; block count
|
|
STR 'MICRODRIVE.TURBO.D' ; device name
|
|
ASC ' '
|
|
DW $0000 ; slot number
|
|
DW $0002 ; unit number
|
|
DW $1000 ; version
|
|
DW $0013 ; device ID
|
|
DW $0000 ; first linked device
|
|
DW $0000 ; next linked device
|
|
ADRL $00000000 ; extended DIB ptr
|
|
DW $0000 ; device number
|
|
DW $0002
|
|
DW $0000
|
|
L05EE ADRL L0632 ; pointer to the next DIB
|
|
ADRL entryPoint ; driver entry point
|
|
DW $23E8 ; characteristics
|
|
ADRL $00000000 ; block count
|
|
STR 'MICRODRIVE.TURBO.E' ; device name
|
|
ASC ' '
|
|
DW $0000 ; slot number
|
|
DW $0002 ; unit number
|
|
DW $1000 ; version
|
|
DW $0013 ; device ID
|
|
DW $0000 ; first linked device
|
|
DW $0000 ; next linked device
|
|
ADRL $00000000 ; extended DIB ptr
|
|
DW $0000 ; device number
|
|
DW $0002
|
|
DW $0000
|
|
L0632 ADRL L0676 ; pointer to the next DIB
|
|
ADRL entryPoint ; driver entry point
|
|
DW $23E8 ; characteristics
|
|
ADRL $00000000 ; block count
|
|
STR 'MICRODRIVE.TURBO.F' ; device name
|
|
ASC ' '
|
|
DW $0000 ; slot number
|
|
DW $0002 ; unit number
|
|
DW $1000 ; version
|
|
DW $0013 ; device ID
|
|
DW $0000 ; first linked device
|
|
DW $0000 ; next linked device
|
|
ADRL $00000000 ; extended DIB ptr
|
|
DW $0000 ; device number
|
|
DW $0002
|
|
DW $0000
|
|
|
|
* The pointer to the next DIB should be 0
|
|
|
|
L0676 ADRL tblDRIVER ; pointer to the next DIB
|
|
ADRL entryPoint ; driver entry point
|
|
DW $23E8 ; characteristics
|
|
ADRL $00000000 ; block count
|
|
STR 'MICRODRIVE.TURBO.G' ; device name
|
|
ASC ' '
|
|
DW $0000 ; slot number
|
|
DW $0002 ; unit number
|
|
DW $1000 ; version
|
|
DW $0013 ; device ID
|
|
DW $0000 ; first linked device
|
|
DW $0000 ; next linked device
|
|
ADRL $00000000 ; extended DIB ptr
|
|
DW $0000 ; device number
|
|
DW $0002
|
|
DW $0000
|
|
|
|
*----------------------------
|
|
* GS/OS driver entry points
|
|
*----------------------------
|
|
|
|
tblDRIVER
|
|
DA Driver_Startup
|
|
DA Driver_Open
|
|
DA Driver_Read
|
|
DA Driver_Write
|
|
DA Driver_Close
|
|
DA Driver_Status
|
|
DA Driver_Control
|
|
DA Driver_Flush
|
|
DA Driver_Shutdown
|
|
|
|
* Driver_Status entry points
|
|
|
|
tblSTATUS
|
|
DA GetDeviceStatus-1
|
|
DA GetConfigParameters-1
|
|
DA GetWaitStatus-1
|
|
DA GetFormatOptions-1
|
|
DA GetPartitionMap-1
|
|
|
|
tblCONTROL
|
|
DA ResetDevice-1
|
|
DA FormatDevice-1
|
|
DA EjectMedium-1
|
|
DA SetConfigParameters-1
|
|
DA SetWaitStatus-1
|
|
DA SetFormatOptions-1
|
|
DA AssignPartitionOwner-1
|
|
DA ArmSignal-1
|
|
DA DisarmSignal-1
|
|
DA SetPartitionMap-1
|
|
|
|
DB $A9 ; LDA
|
|
DB $00 ; #$00
|
|
DB $38 ; SEC
|
|
DB $60 ; RTS
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
|
|
*--- Table for GetDeviceStatus
|
|
|
|
L072E DA $0000
|
|
DA L0750 ; device 1
|
|
DA L0756
|
|
DA L075C
|
|
DA L0762
|
|
DA L0768
|
|
DA L076E
|
|
DA L0774
|
|
DA L077A
|
|
DA L0780
|
|
DA L0786
|
|
DA L078C
|
|
DA L0792
|
|
DA L0798
|
|
DA L079E
|
|
DA L07A4 ; device F
|
|
DA L07AA ; device 10
|
|
|
|
* $4010 means: linked device + diskInDrive
|
|
|
|
L0750 HEX 104000000000 ; statusWord (word) + numBlocks (long)
|
|
L0756 HEX 104000000000
|
|
L075C HEX 104000000000
|
|
L0762 HEX 104000000000
|
|
L0768 HEX 104000000000
|
|
L076E HEX 104000000000
|
|
L0774 HEX 104000000000
|
|
L077A HEX 104000000000
|
|
L0780 HEX 104000000000
|
|
L0786 HEX 104000000000
|
|
L078C HEX 104000000000
|
|
L0792 HEX 104000000000
|
|
L0798 HEX 104000000000
|
|
L079E HEX 104000000000
|
|
L07A4 HEX 104000000000
|
|
L07AA HEX 104000000000
|
|
|
|
* Driver_Control / SetConfigParameters pointers
|
|
|
|
L07B0 DA L0090
|
|
DA L0094
|
|
DA L0098
|
|
DA L009C
|
|
DA L00A0
|
|
DA L00A4
|
|
DA L00A8
|
|
DA L00AC
|
|
DA L00B0
|
|
DA L00B4
|
|
DA L00B8
|
|
DA L00BC
|
|
DA L00C0
|
|
DA L00C4
|
|
DA L00C8
|
|
DA L00CC
|
|
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
|
|
* Driver_Control / SetFormatOptions table
|
|
|
|
L07F0 DW $0001 ; format option table is always 1
|
|
DW $0001
|
|
DW $0001
|
|
DW $0001
|
|
DW $0001
|
|
DW $0001
|
|
DW $0001
|
|
DW $0001
|
|
DW $0001
|
|
DW $0001
|
|
DW $0001
|
|
DW $0001
|
|
DW $0001
|
|
DW $0001
|
|
DW $0001
|
|
DW $0001
|
|
DW $000F
|
|
DW $0001
|
|
DW $0000
|
|
|
|
theUNIT DW $0000
|
|
|
|
DB $00 ; useless?
|
|
DB $00
|
|
DB $30
|
|
DB $31
|
|
DB $32
|
|
DB $37
|
|
DB $FF
|
|
DB $FF
|
|
DB $A0
|
|
DB $A0
|
|
DB $A0
|
|
DB $A0
|
|
DB $A0
|
|
DB $A0
|
|
DB $A0
|
|
DB $A0
|
|
DB $A0
|
|
DB $A0
|
|
DB $A0
|
|
DB $AD ; =
|
|
DB $AD ; =
|
|
DB $AD ; =
|
|
DB $AD ; =
|
|
DB $BE ; >
|
|
|
|
*----------------------------
|
|
* Driver
|
|
*----------------------------
|
|
|
|
MX %00
|
|
|
|
entryPoint
|
|
PHB ; Dispatch
|
|
PHK
|
|
PLB
|
|
CMP #$0009
|
|
BCC L083B
|
|
BRL L0849
|
|
L083B ASL
|
|
TAX
|
|
JSR (tblDRIVER,X)
|
|
TAY
|
|
PLB
|
|
BCS L0847
|
|
LDY #$0000
|
|
L0847 TYA
|
|
RTL
|
|
|
|
L0849 PLB
|
|
LDA #$0001
|
|
SEC
|
|
RTL
|
|
L084F JMP L0932
|
|
|
|
*----------------------------
|
|
|
|
Driver_Startup
|
|
|
|
* Check unmodified GS/OS driver
|
|
|
|
STZ L1478
|
|
LDA L0073 ; Jo (achim) = EFCA 1110_1111_1100_1010
|
|
EOR #$D3C8 ; D3C8 1101_0011_1100_1000
|
|
CMP #$3C02 ; 3C02 0011_1100_0000_0010
|
|
BNE L084F
|
|
LDA L007B ; La (nge) = E1CC 1110_0001_1100_1100
|
|
EOR #$D3C8 ; D3C8 1101_0011_1100_1000
|
|
CMP #$3204 ; 3204 0011_0010_0000_0100
|
|
BNE L084F
|
|
LDA L0061 ; Co (pyright) = EFC3 1110_1111_1100_0011
|
|
EOR #$D3C8 ; D3C8 1101_0011_1100_1000
|
|
CMP #$3C0B ; 3C0B 0011_1100_0000_1011
|
|
BNE L084F
|
|
|
|
* Find card
|
|
|
|
LDA #$C7F2
|
|
STA theCARD
|
|
L087C LDX theCARD
|
|
LDAL $000000,X
|
|
CMP #$C4C9 ; ID
|
|
BNE L08B4
|
|
LDAL $000001,X
|
|
CMP #$D5C4 ; DU
|
|
BNE L08B4
|
|
LDAL $000005,X
|
|
CMP #$D4CD ; MT
|
|
BNE L08B4
|
|
LDAL $000007,X
|
|
CMP #$CCCA ; JL
|
|
BNE L08B4
|
|
LDAL $000003,X
|
|
AND #$00FF
|
|
CMP #$0010
|
|
BEQ L08C6
|
|
CMP #$0011
|
|
BEQ L08C6
|
|
L08B4 LDA theCARD
|
|
SEC
|
|
SBC #$0100
|
|
STA theCARD
|
|
CMP #$C100
|
|
BCS L087C
|
|
JMP L0932
|
|
|
|
L08C6 LDA theCARD ; We have the card in slot X
|
|
AND #$0F00
|
|
LSR
|
|
LSR
|
|
LSR
|
|
LSR
|
|
STA theSLOT16
|
|
LSR
|
|
LSR
|
|
LSR
|
|
LSR
|
|
STA theSLOT
|
|
JSR initPointers ; patch all addresses
|
|
|
|
LDA theUNIT ; is driver busy?
|
|
BNE L0920
|
|
|
|
SEI ; no, copy ROM
|
|
SEP #$30
|
|
LDA #$00
|
|
L08E7 STAL RDROM2
|
|
LDAL CLRROM
|
|
REP #$30
|
|
LDX theCARD ; make the card active
|
|
LDAL $000000,X
|
|
PHK
|
|
PLB
|
|
LDX #$00FE ; Copy the $C800 page
|
|
L08FD LDAL $00C800,X
|
|
STA L1340,X
|
|
DEX
|
|
DEX
|
|
BPL L08FD
|
|
|
|
LDAL $00C980 ; seems to be 0000 when ROM is on (but code must be moved one page down)
|
|
STA L1474
|
|
CLI
|
|
LDA L1340
|
|
CMP #$CCCA ; JL
|
|
BNE L0932
|
|
LDA L1474
|
|
CMP #$48CA ;
|
|
BNE L0932
|
|
|
|
L0920 SEP #$30
|
|
INC theUNIT ; which unit?
|
|
LDA L135A
|
|
CMP theUNIT
|
|
BCS L093D ; we can continue
|
|
REP #$30
|
|
DEC theUNIT ; I would have voted for the busy flag
|
|
|
|
L0932 REP #$30
|
|
LDAL CLRROM ; bye bye card
|
|
LDA #$0027 ; I/O error
|
|
SEC
|
|
RTS
|
|
|
|
L093D REP #$30
|
|
LDA theUNIT ; my unit
|
|
ASL
|
|
ASL
|
|
TAX
|
|
LDA L13BC,X ; get number of blocks
|
|
LDY #$000A ; blockCount
|
|
STA [dibPointer],Y
|
|
LDY #$000C ; blockCount+2
|
|
LDA L13BE,X
|
|
AND #$00FF
|
|
STA [dibPointer],Y
|
|
LDY #$002E ; the slot
|
|
LDA theSLOT
|
|
ORA #$0008 ; external slot set on bit 3
|
|
STA [dibPointer],Y
|
|
LDY #$0030 ; unitNum (thought it was busy flag)
|
|
LDA theUNIT
|
|
STA [dibPointer],Y
|
|
|
|
LDAL CLRROM ; bye bye card
|
|
LDA #$0000 ; return OK
|
|
CLC
|
|
RTS
|
|
|
|
*----------------------------
|
|
|
|
Driver_Open
|
|
LDA #$0000
|
|
CLC
|
|
RTS
|
|
|
|
*----------------------------
|
|
|
|
Driver_Read
|
|
LDY #$0030 ; unitNum
|
|
LDA [dibPointer],Y
|
|
ASL
|
|
ASL
|
|
STA L146C
|
|
STZ L1468
|
|
LDA requestCount ; requestCount
|
|
STA theRequest
|
|
LDA requestCount+2
|
|
STA theRequest+2
|
|
|
|
L0990 LDAL $00C087
|
|
|
|
L0994 LDA L1468
|
|
BNE L09E2
|
|
BIT fstID ; fstID
|
|
BMI L09BF ; bit 15 = 1 means force read, do not use cache
|
|
CLC
|
|
JSL CACHE_FIND_BLK
|
|
BCC L09BC
|
|
LDA cachePriority
|
|
BEQ L09BF ; do not read from the cache
|
|
JSL CACHE_ADD_BLK ; add in the cache
|
|
BCS L09BF
|
|
JSR L0EB7 ; calc all
|
|
JMP L0A9B
|
|
|
|
L09B4 BCS L09B9
|
|
JMP L0A2F
|
|
L09B9 JMP L0A7F
|
|
L09BC JMP L0C33
|
|
|
|
L09BF LDA L1468 ; already entered?
|
|
BNE L09E2
|
|
|
|
JSR L0EB7 ; nope, calc all
|
|
LDA theRequest+1
|
|
AND #$01FF
|
|
LSR
|
|
SEP #$30
|
|
L09D0 STAL RDROM1
|
|
STA L1466
|
|
LDA #$20
|
|
L09D9 STAL $00C08F
|
|
STA L1468
|
|
REP #$30
|
|
|
|
L09E2 LDA bufferPtr ; BUG? I would have put requestCount instead
|
|
CMP #$FE01
|
|
BCC L09EC
|
|
L09E9 JMP readFROMCARD ; read 512 bytes from card
|
|
|
|
L09EC STAL $00C084
|
|
|
|
SEP #$30 ; check slow RAM request
|
|
LDA bufferPtr+2
|
|
CMP #$E0
|
|
BEQ L09E9
|
|
CMP #$E1
|
|
BEQ L09E9
|
|
CMP #$90 ; or memory bank over 5MB
|
|
BCS L0A05
|
|
CMP L1366
|
|
BCS L09E9
|
|
|
|
L0A05 STAL DMAREG
|
|
|
|
L0A09 LDAL RDBANK1
|
|
BPL L0A09
|
|
L0A0F LDAL $00C08F
|
|
BMI L0A0F
|
|
AND #$F9
|
|
CMP #$58
|
|
BEQ L0A21
|
|
LSR
|
|
BCC L0A0F
|
|
JMP L0A7F
|
|
|
|
L0A21 STAL LCBANK2
|
|
L0A25 DEC L1466
|
|
BNE L0A2D
|
|
STZ L1468
|
|
|
|
L0A2D REP #$30 ; how many bytes left to read?
|
|
L0A2F LDA theRequest
|
|
SEC
|
|
SBC blockSize
|
|
STA theRequest
|
|
BCS L0A3D
|
|
DEC theRequest+2
|
|
L0A3D LDA theRequest
|
|
BNE L0A54
|
|
LDA theRequest+2
|
|
BNE L0A54
|
|
LDA requestCount
|
|
STA transferCount
|
|
LDA requestCount+2
|
|
STA transferCount+2
|
|
LDA #$0000 ; we're done!
|
|
CLC
|
|
RTS
|
|
|
|
* We still have data to read from disk
|
|
|
|
L0A54 CLC ; next pointer in RAM
|
|
LDA blockSize ; and next block
|
|
ADC bufferPtr
|
|
STA bufferPtr
|
|
BCC L0A5F
|
|
INC bufferPtr+2
|
|
L0A5F INC blockNum
|
|
BNE L0A65
|
|
INC blockNum+2
|
|
|
|
L0A65 LDY #$000C ; did we reach the end of disk?
|
|
LDA [dibPointer],Y
|
|
CMP blockNum+2
|
|
BCS L0A7C
|
|
LDY #$000A
|
|
LDA [dibPointer],Y
|
|
CMP blockNum
|
|
BCS L0A7C
|
|
SEC
|
|
LDA #$0027 ; I/O err
|
|
RTS
|
|
|
|
L0A7C JMP L0994 ; loop
|
|
|
|
*----------------------------
|
|
|
|
L0A7F SEP #$30
|
|
PHK
|
|
PLB
|
|
JSR L11B9 ; beep
|
|
JSR L0EA6
|
|
REP #$30
|
|
LDA #$0027 ; I/O err
|
|
SEC
|
|
RTS
|
|
|
|
L0A90 PHK
|
|
PLB
|
|
JSR L0EA6
|
|
REP #$30
|
|
SEC
|
|
JMP L09B4
|
|
|
|
L0A9B SEP #$30
|
|
LDA #$01
|
|
L0A9F STAL RDROM1
|
|
LDA #$20
|
|
L0AA5 STAL $00C08F
|
|
LDA #$00 ; we want bank 0
|
|
PHA
|
|
PLB
|
|
L0AAD LDAL RDBANK1 ; so it could have been LDA RDBANK1
|
|
BPL L0AAD
|
|
L0AB3 LDAL $00C08F
|
|
BMI L0AB3
|
|
AND #$F9 ; 1111_1001
|
|
CMP #$58 ; 0101_1000
|
|
BEQ L0AC4
|
|
LSR ; 2C means 0010_1100
|
|
BCS L0A90 ; not ready?
|
|
BRA L0AB3 ; busy
|
|
|
|
L0AC4 REP #$30 ; A 16-bit pseudo-bus or what?
|
|
LDY #$0000
|
|
L0AC9 LDA RDBANK2
|
|
STA [bufferPtr],Y
|
|
STA [cachePointer],Y
|
|
INY
|
|
INY
|
|
L0AD2 LDA RDBANK2
|
|
STA [bufferPtr],Y
|
|
STA [cachePointer],Y
|
|
INY
|
|
INY
|
|
L0ADB LDA RDBANK2
|
|
STA [bufferPtr],Y
|
|
STA [cachePointer],Y
|
|
INY
|
|
INY
|
|
L0AE4 LDA RDBANK2
|
|
STA [bufferPtr],Y
|
|
STA [cachePointer],Y
|
|
INY
|
|
INY
|
|
L0AED LDA RDBANK2
|
|
STA [bufferPtr],Y
|
|
STA [cachePointer],Y
|
|
INY
|
|
INY
|
|
L0AF6 LDA RDBANK2
|
|
STA [bufferPtr],Y
|
|
STA [cachePointer],Y
|
|
INY
|
|
INY
|
|
L0AFF LDA RDBANK2
|
|
STA [bufferPtr],Y
|
|
STA [cachePointer],Y
|
|
INY
|
|
INY
|
|
L0B08 LDA RDBANK2
|
|
STA [bufferPtr],Y
|
|
STA [cachePointer],Y
|
|
INY
|
|
INY
|
|
CPY #$0200 ; copy 512 bytes even if the blocksize is 256 ;-)
|
|
BCC L0AC9
|
|
PHK
|
|
PLB
|
|
CLC
|
|
JMP L09B4
|
|
|
|
*----------------------------
|
|
|
|
Driver_Write
|
|
LDY #$0030
|
|
LDA [dibPointer],Y
|
|
ASL
|
|
ASL
|
|
STA L146C
|
|
STZ L1468
|
|
LDA requestCount
|
|
STA theRequest
|
|
LDA requestCount+2
|
|
STA theRequest+2
|
|
L0B33 LDA L1468
|
|
BNE L0B76
|
|
CLC
|
|
JSL CACHE_FIND_BLK
|
|
BCC L0B49
|
|
LDA cachePriority
|
|
BEQ L0B53
|
|
JSL CACHE_ADD_BLK
|
|
BCS L0B53
|
|
L0B49 JMP L0C9B
|
|
|
|
L0B4C BIT cachePriority
|
|
BPL L0B53
|
|
JMP L0BD5
|
|
|
|
L0B53 LDA L1468
|
|
BNE L0B76
|
|
JSR L0EB7
|
|
REP #$30
|
|
LDA theRequest+1
|
|
AND #$01FF
|
|
LSR
|
|
SEP #$30
|
|
L0B66 STAL RDROM1
|
|
STA L1466
|
|
LDA #$30
|
|
L0B6F STAL $00C08F
|
|
STA L1468
|
|
L0B76 REP #$30
|
|
LDA bufferPtr ; BUG? I would have put requestCount instead
|
|
CMP #$FE01
|
|
BCC L0B82
|
|
L0B7F JMP writeTOCARD ; write 512 bytes onto card
|
|
|
|
L0B82 STAL $00C084
|
|
SEP #$30
|
|
LDA bufferPtr+2
|
|
CMP #$E0
|
|
BEQ L0B7F
|
|
CMP #$E1
|
|
BEQ L0B7F
|
|
CMP #$90
|
|
BCS L0B9B
|
|
CMP L1366
|
|
BCS L0B7F
|
|
L0B9B STAL DMAREG
|
|
L0B9F LDAL $00C086
|
|
L0BA3 LDAL $00C08F
|
|
BMI L0BA3
|
|
AND #$FD
|
|
CMP #$58
|
|
BEQ L0BB6
|
|
AND #$21
|
|
BEQ L0BA3
|
|
JMP L0C27
|
|
|
|
L0BB6 STAL LCBANK2
|
|
L0BBA LDAL $00C08F
|
|
BMI L0BBA
|
|
AND #$F5
|
|
CMP #$50
|
|
BEQ L0BCD
|
|
AND #$21
|
|
BEQ L0BBA
|
|
JMP L0C27
|
|
|
|
L0BCD DEC L1466
|
|
BNE L0BD5
|
|
STZ L1468
|
|
L0BD5 REP #$30
|
|
LDA theRequest
|
|
SEC
|
|
SBC blockSize
|
|
STA theRequest
|
|
BCS L0BE5
|
|
DEC theRequest+2
|
|
L0BE5 LDA theRequest
|
|
BNE L0BFC
|
|
LDA theRequest+2
|
|
BNE L0BFC
|
|
LDA requestCount
|
|
STA transferCount
|
|
LDA requestCount+2
|
|
STA transferCount+2
|
|
LDA #$0000
|
|
CLC
|
|
RTS
|
|
|
|
L0BFC CLC
|
|
LDA blockSize
|
|
ADC bufferPtr
|
|
STA bufferPtr
|
|
BCC L0C07
|
|
INC bufferPtr+2
|
|
L0C07 INC blockNum
|
|
BNE L0C0D
|
|
INC blockNum+2
|
|
L0C0D LDY #$000C
|
|
LDA [dibPointer],Y
|
|
CMP blockNum+2
|
|
BCS L0C24
|
|
LDY #$000A
|
|
LDA [dibPointer],Y
|
|
CMP blockNum
|
|
BCS L0C24
|
|
LDA #$0027 ; I/O err
|
|
SEC
|
|
RTS
|
|
L0C24 JMP L0B33
|
|
|
|
L0C27 SEP #$30
|
|
JSR L11B9
|
|
REP #$30
|
|
LDA #$0027
|
|
SEC
|
|
RTS
|
|
|
|
L0C33 LDY #$01FE
|
|
L0C36 LDA [cachePointer],Y
|
|
STA [bufferPtr],Y
|
|
DEY
|
|
DEY
|
|
LDA [cachePointer],Y
|
|
STA [bufferPtr],Y
|
|
DEY
|
|
DEY
|
|
LDA [cachePointer],Y
|
|
STA [bufferPtr],Y
|
|
DEY
|
|
DEY
|
|
LDA [cachePointer],Y
|
|
STA [bufferPtr],Y
|
|
DEY
|
|
DEY
|
|
LDA [cachePointer],Y
|
|
STA [bufferPtr],Y
|
|
DEY
|
|
DEY
|
|
LDA [cachePointer],Y
|
|
STA [bufferPtr],Y
|
|
DEY
|
|
DEY
|
|
LDA [cachePointer],Y
|
|
STA [bufferPtr],Y
|
|
DEY
|
|
DEY
|
|
LDA [cachePointer],Y
|
|
STA [bufferPtr],Y
|
|
DEY
|
|
DEY
|
|
LDA [cachePointer],Y
|
|
STA [bufferPtr],Y
|
|
DEY
|
|
DEY
|
|
LDA [cachePointer],Y
|
|
STA [bufferPtr],Y
|
|
DEY
|
|
DEY
|
|
LDA [cachePointer],Y
|
|
STA [bufferPtr],Y
|
|
DEY
|
|
DEY
|
|
LDA [cachePointer],Y
|
|
STA [bufferPtr],Y
|
|
DEY
|
|
DEY
|
|
LDA [cachePointer],Y
|
|
STA [bufferPtr],Y
|
|
DEY
|
|
DEY
|
|
LDA [cachePointer],Y
|
|
STA [bufferPtr],Y
|
|
DEY
|
|
DEY
|
|
LDA [cachePointer],Y
|
|
STA [bufferPtr],Y
|
|
DEY
|
|
DEY
|
|
LDA [cachePointer],Y
|
|
STA [bufferPtr],Y
|
|
DEY
|
|
DEY
|
|
BPL L0C36
|
|
JMP L0A2F
|
|
|
|
L0C9B LDY #$01FE
|
|
L0C9E LDA [bufferPtr],Y
|
|
STA [cachePointer],Y
|
|
DEY
|
|
DEY
|
|
LDA [bufferPtr],Y
|
|
STA [cachePointer],Y
|
|
DEY
|
|
DEY
|
|
LDA [bufferPtr],Y
|
|
STA [cachePointer],Y
|
|
DEY
|
|
DEY
|
|
LDA [bufferPtr],Y
|
|
STA [cachePointer],Y
|
|
DEY
|
|
DEY
|
|
LDA [bufferPtr],Y
|
|
STA [cachePointer],Y
|
|
DEY
|
|
DEY
|
|
LDA [bufferPtr],Y
|
|
STA [cachePointer],Y
|
|
DEY
|
|
DEY
|
|
LDA [bufferPtr],Y
|
|
STA [cachePointer],Y
|
|
DEY
|
|
DEY
|
|
LDA [bufferPtr],Y
|
|
STA [cachePointer],Y
|
|
DEY
|
|
DEY
|
|
LDA [bufferPtr],Y
|
|
STA [cachePointer],Y
|
|
DEY
|
|
DEY
|
|
LDA [bufferPtr],Y
|
|
STA [cachePointer],Y
|
|
DEY
|
|
DEY
|
|
LDA [bufferPtr],Y
|
|
STA [cachePointer],Y
|
|
DEY
|
|
DEY
|
|
LDA [bufferPtr],Y
|
|
STA [cachePointer],Y
|
|
DEY
|
|
DEY
|
|
LDA [bufferPtr],Y
|
|
STA [cachePointer],Y
|
|
DEY
|
|
DEY
|
|
LDA [bufferPtr],Y
|
|
STA [cachePointer],Y
|
|
DEY
|
|
DEY
|
|
LDA [bufferPtr],Y
|
|
STA [cachePointer],Y
|
|
DEY
|
|
DEY
|
|
LDA [bufferPtr],Y
|
|
STA [cachePointer],Y
|
|
DEY
|
|
DEY
|
|
BPL L0C9E
|
|
JMP L0B4C
|
|
|
|
*----------------------------
|
|
|
|
Driver_Close
|
|
LDA #$0000
|
|
CLC
|
|
RTS
|
|
|
|
*----------------------------
|
|
|
|
Driver_Status
|
|
LDA L1478
|
|
BNE L0D10
|
|
JSR L1228
|
|
L0D10 LDA statusCode
|
|
CMP #$0004
|
|
BCC L0D1C
|
|
LDA #$0021
|
|
SEC
|
|
RTS
|
|
|
|
L0D1C ASL
|
|
TAX
|
|
LDA tblSTATUS,X
|
|
PHA
|
|
RTS
|
|
|
|
*----------------------------
|
|
* Driver_Status subcall
|
|
*----------------------------
|
|
|
|
GetDeviceStatus
|
|
LDX requestCount+2
|
|
BNE L0D33
|
|
LDX requestCount
|
|
CPX #$0002
|
|
BCC L0D33
|
|
CPX #$0007
|
|
BCC L0D38
|
|
L0D33 LDA #$0022 ; drvrBadParm
|
|
SEC
|
|
RTS
|
|
|
|
L0D38 LDY #$0030 ; unitNum
|
|
LDA [dibPointer],Y
|
|
ASL
|
|
ASL
|
|
TAX
|
|
LDA L13BE,X ; get number of blocks
|
|
AND #$00FF
|
|
PHA
|
|
LDA L13BC,X
|
|
PHA
|
|
LDY #$0030 ; unitNum
|
|
LDA [dibPointer],Y
|
|
ASL
|
|
TAX
|
|
LDA L072E,X ; get table for device X
|
|
TAX
|
|
PLA
|
|
STA |$0002,X
|
|
PLA
|
|
STA |$0004,X
|
|
|
|
LDY #$0000 ; copy device status info
|
|
SEP #$20 ; statusWord (see GS/OS driver call reference page 231+)
|
|
L0D63 LDA |$0000,X ; numBlocks
|
|
STA [bufferPtr],Y
|
|
INX
|
|
INY
|
|
CPY requestCount
|
|
BNE L0D63
|
|
|
|
REP #$20
|
|
LDA requestCount ; transferCount = requestCount
|
|
STA transferCount
|
|
STZ transferCount+2
|
|
LDA #$0000 ; return OK
|
|
CLC
|
|
RTS
|
|
|
|
*----------------------------
|
|
* Driver_Status subcall
|
|
*----------------------------
|
|
|
|
GetConfigParameters
|
|
GetWaitStatus
|
|
LDA #$0026
|
|
SEC
|
|
RTS
|
|
|
|
*----------------------------
|
|
* Driver_Status subcall
|
|
*----------------------------
|
|
|
|
GetFormatOptions
|
|
LDA #$0022 ; drvrBadParm
|
|
LDX requestCount+2
|
|
BNE L0D8E
|
|
LDX requestCount
|
|
CPX #$0002
|
|
BCS L0D90
|
|
L0D8E SEC
|
|
RTS
|
|
|
|
L0D90 LDY #$0030 ; unitNum
|
|
LDA [dibPointer],Y
|
|
ASL
|
|
ASL
|
|
TAX
|
|
LDA L13BE,X ; number of blocks
|
|
AND #$00FF
|
|
PHA
|
|
LDA L13BC,X
|
|
PHA
|
|
LDA [dibPointer],Y
|
|
ASL
|
|
TAX
|
|
LDA L00D0,X
|
|
TAX
|
|
PLA ; save to blockCount
|
|
STA |$000E,X
|
|
PLA
|
|
STA |$0010,X
|
|
LDA #$0001 ; interleaveFactor is 1:1
|
|
AND #$00FF
|
|
STA |$0014,X
|
|
|
|
LDY #$0030 ; unitNum
|
|
LDA [dibPointer],Y
|
|
ASL
|
|
TAX
|
|
LDA L00D0,X ; table to formatOptions list
|
|
TAX
|
|
LDA |$0000,X
|
|
ASL
|
|
ASL
|
|
ASL
|
|
ASL
|
|
CLC
|
|
ADC #$0008
|
|
CMP requestCount
|
|
BCS L0DD8
|
|
STA requestCount
|
|
|
|
L0DD8 LDY #$0000 ; copy table
|
|
SEP #$20
|
|
L0DDD LDA |$0000,X
|
|
STA [bufferPtr],Y
|
|
INX
|
|
INY
|
|
CPY requestCount
|
|
BNE L0DDD
|
|
|
|
REP #$20 ; transferCount = requestCount
|
|
LDA requestCount
|
|
STA transferCount
|
|
LDA requestCount+2
|
|
STA transferCount+2
|
|
LDA #$0000
|
|
CLC
|
|
RTS
|
|
|
|
*----------------------------
|
|
|
|
Driver_Control
|
|
LDA controlCode
|
|
CMP #$000A
|
|
BCC L0E03
|
|
LDA #$0021
|
|
SEC
|
|
RTS
|
|
|
|
L0E03 ASL
|
|
TAX
|
|
LDA tblCONTROL,X
|
|
PHA
|
|
RTS
|
|
|
|
*----------------------------
|
|
|
|
GetPartitionMap ; Driver_Status subcall
|
|
LDA #$0026 ; drvrNoResrc
|
|
SEC
|
|
RTS
|
|
|
|
*----------------------------
|
|
* Driver_Control subcall
|
|
*----------------------------
|
|
|
|
ResetDevice
|
|
LDA #$0000
|
|
CLC
|
|
RTS
|
|
|
|
*----------------------------
|
|
* Driver_Control subcall
|
|
*----------------------------
|
|
|
|
FormatDevice
|
|
LDA #$0000
|
|
CLC
|
|
RTS
|
|
|
|
*----------------------------
|
|
* Driver_Control subcall
|
|
*----------------------------
|
|
|
|
EjectMedium
|
|
LDA #$0000
|
|
CLC
|
|
RTS
|
|
|
|
*----------------------------
|
|
* Driver_Control subcall
|
|
*----------------------------
|
|
|
|
SetConfigParameters
|
|
LDA #$0022 ; drvrBadParm
|
|
LDX requestCount+2
|
|
BNE L0E2C
|
|
LDX requestCount
|
|
CPX #$0002
|
|
BCS L0E2E
|
|
L0E2C SEC
|
|
RTS
|
|
|
|
L0E2E LDY #$0030 ; unitNum
|
|
LDA [dibPointer],Y
|
|
ASL
|
|
TAX
|
|
LDA L07B0,X ; table for SetConfigParameters
|
|
TAX
|
|
LDA |$0000,X ; lengths must be equal
|
|
CMP [bufferPtr]
|
|
BEQ L0E45
|
|
LDA #$0022 ; drvrBadParm
|
|
SEC
|
|
RTS
|
|
|
|
L0E45 LDY #$0000 ; copy configuration list
|
|
SEP #$20
|
|
L0E4A LDA [bufferPtr],Y
|
|
STA |$0000,X
|
|
INX
|
|
INY
|
|
TYA
|
|
CMP [bufferPtr],Y
|
|
BNE L0E4A
|
|
|
|
REP #$20 ; transferCount = requestCount
|
|
LDA requestCount
|
|
STA transferCount
|
|
LDA requestCount+2
|
|
STA transferCount+2
|
|
LDA #$0000
|
|
CLC
|
|
RTS
|
|
|
|
*----------------------------
|
|
* Driver_Control subcall
|
|
*----------------------------
|
|
|
|
SetFormatOptions
|
|
LDA #$0022 ; drvrBadParm
|
|
LDX requestCount+2
|
|
BNE L0E73
|
|
LDX requestCount
|
|
CPX #$0002
|
|
BEQ L0E75
|
|
L0E73 SEC
|
|
RTS
|
|
|
|
L0E75 LDY #$0030 ; unitNum
|
|
LDA [dibPointer],Y
|
|
TAX
|
|
LDA [bufferPtr] ; get formatOptionNum
|
|
STA L07F0,X ; save it in list
|
|
|
|
LDA requestCount ; transferCount = requestCount
|
|
STA transferCount
|
|
LDA requestCount+2
|
|
STA transferCount+2
|
|
LDA #$0000
|
|
CLC
|
|
RTS
|
|
|
|
*----------------------------
|
|
* Driver_Control subcall
|
|
*----------------------------
|
|
|
|
SetWaitStatus
|
|
AssignPartitionOwner
|
|
ArmSignal
|
|
DisarmSignal
|
|
SetPartitionMap
|
|
LDA #$0026 ; drvrNoResrc
|
|
SEC
|
|
RTS
|
|
|
|
*----------------------------
|
|
|
|
Driver_Flush
|
|
LDA #$0020 ; drvrBadReq
|
|
SEC
|
|
RTS
|
|
|
|
*----------------------------
|
|
|
|
Driver_Shutdown
|
|
DEC theUNIT ; hum, should really be fgBUSY instead
|
|
BNE L0EA1
|
|
LDA #$0000
|
|
CLC
|
|
RTS
|
|
|
|
L0EA1 LDA #$0029 ; drvrBusy
|
|
SEC
|
|
RTS
|
|
|
|
*----------------------------
|
|
* Wait for card to finish its work?
|
|
|
|
MX %11
|
|
|
|
L0EA6 PHP
|
|
L0EA7 LDAL $00C08F
|
|
AND #$08 ; 0000_1000
|
|
BEQ L0EB5
|
|
L0EAF LDAL RDBANK2
|
|
BRA L0EA7
|
|
L0EB5 PLP
|
|
RTS
|
|
|
|
*----------------------------
|
|
* Calculate offsets and friends?
|
|
|
|
L0EB7 SEP #$30
|
|
L0EB9 LDAL $00C08F
|
|
BMI L0EB9
|
|
LDX L146C
|
|
CLC
|
|
REP #$20
|
|
LDA blockNum
|
|
ADC L137C,X
|
|
STA L145E
|
|
SEP #$20
|
|
LDA blockNum+2
|
|
ADC L137E,X
|
|
STA L1460
|
|
LDA L137F,X
|
|
STA L1476
|
|
LDA L13BF,X
|
|
TAX
|
|
REP #$20
|
|
CLC
|
|
LDA L1460
|
|
AND #$003F
|
|
BEQ L0EEF
|
|
JMP L0F75
|
|
|
|
L0EEF ASL L145E
|
|
BCC L0EF7
|
|
JMP L0F78
|
|
|
|
L0EF7 ASL L145E
|
|
BCC L0EFF
|
|
JMP L0F84
|
|
|
|
L0EFF ASL L145E
|
|
BCC L0F07
|
|
JMP L0F90
|
|
|
|
L0F07 ASL L145E
|
|
BCC L0F0F
|
|
JMP L0F9C
|
|
|
|
L0F0F ASL L145E
|
|
BCC L0F17
|
|
JMP L0FA8
|
|
|
|
L0F17 ASL L145E
|
|
BCC L0F1F
|
|
JMP L0FB4
|
|
|
|
L0F1F ASL L145E
|
|
BCC L0F27
|
|
JMP L0FC0
|
|
|
|
L0F27 ASL L145E
|
|
BCC L0F2F
|
|
JMP L0FCC
|
|
|
|
L0F2F ASL L145E
|
|
BCC L0F37
|
|
JMP L0FD8
|
|
|
|
L0F37 ASL L145E
|
|
BCC L0F3F
|
|
JMP L0FE4
|
|
|
|
L0F3F ASL L145E
|
|
BCC L0F47
|
|
JMP L0FF0
|
|
|
|
L0F47 ASL L145E
|
|
BCC L0F4F
|
|
JMP L0FFC
|
|
|
|
L0F4F ASL L145E
|
|
BCC L0F57
|
|
JMP L1008
|
|
|
|
L0F57 ASL L145E
|
|
BCC L0F5F
|
|
JMP L1014
|
|
|
|
L0F5F ASL L145E
|
|
BCC L0F67
|
|
JMP L1020
|
|
|
|
L0F67 ASL L145E
|
|
BCC L0F6F
|
|
JMP L102C
|
|
|
|
L0F6F ASL L145E
|
|
JMP L1038
|
|
|
|
L0F75 ASL L145E
|
|
L0F78 ROL
|
|
CMP L134E,X
|
|
BCC L0F81
|
|
SBC L134E,X
|
|
L0F81 ROL L145E
|
|
L0F84 ROL
|
|
CMP L134E,X
|
|
BCC L0F8D
|
|
SBC L134E,X
|
|
L0F8D ROL L145E
|
|
L0F90 ROL
|
|
CMP L134E,X
|
|
BCC L0F99
|
|
SBC L134E,X
|
|
L0F99 ROL L145E
|
|
L0F9C ROL
|
|
CMP L134E,X
|
|
BCC L0FA5
|
|
SBC L134E,X
|
|
L0FA5 ROL L145E
|
|
L0FA8 ROL
|
|
CMP L134E,X
|
|
BCC L0FB1
|
|
SBC L134E,X
|
|
L0FB1 ROL L145E
|
|
L0FB4 ROL
|
|
CMP L134E,X
|
|
BCC L0FBD
|
|
SBC L134E,X
|
|
L0FBD ROL L145E
|
|
L0FC0 ROL
|
|
CMP L134E,X
|
|
BCC L0FC9
|
|
SBC L134E,X
|
|
L0FC9 ROL L145E
|
|
L0FCC ROL
|
|
CMP L134E,X
|
|
BCC L0FD5
|
|
SBC L134E,X
|
|
L0FD5 ROL L145E
|
|
L0FD8 ROL
|
|
CMP L134E,X
|
|
BCC L0FE1
|
|
SBC L134E,X
|
|
L0FE1 ROL L145E
|
|
L0FE4 ROL
|
|
CMP L134E,X
|
|
BCC L0FED
|
|
SBC L134E,X
|
|
L0FED ROL L145E
|
|
L0FF0 ROL
|
|
CMP L134E,X
|
|
BCC L0FF9
|
|
SBC L134E,X
|
|
L0FF9 ROL L145E
|
|
L0FFC ROL
|
|
CMP L134E,X
|
|
BCC L1005
|
|
SBC L134E,X
|
|
L1005 ROL L145E
|
|
L1008 ROL
|
|
CMP L134E,X
|
|
BCC L1011
|
|
SBC L134E,X
|
|
L1011 ROL L145E
|
|
L1014 ROL
|
|
CMP L134E,X
|
|
BCC L101D
|
|
SBC L134E,X
|
|
L101D ROL L145E
|
|
L1020 ROL
|
|
CMP L134E,X
|
|
BCC L1029
|
|
SBC L134E,X
|
|
L1029 ROL L145E
|
|
L102C ROL
|
|
CMP L134E,X
|
|
BCC L1035
|
|
SBC L134E,X
|
|
L1035 ROL L145E
|
|
L1038 SEP #$20
|
|
INC
|
|
L103B STAL LCBANK1
|
|
REP #$20
|
|
LDA L145E
|
|
STA L1450
|
|
LDA #$0000
|
|
ASL L1450
|
|
BCC L1052
|
|
JMP L10D0
|
|
|
|
L1052 ASL L1450
|
|
BCC L105A
|
|
JMP L10DC
|
|
|
|
L105A ASL L1450
|
|
BCC L1062
|
|
JMP L10E8
|
|
|
|
L1062 ASL L1450
|
|
BCC L106A
|
|
JMP L10F4
|
|
|
|
L106A ASL L1450
|
|
BCC L1072
|
|
JMP L1100
|
|
|
|
L1072 ASL L1450
|
|
BCC L107A
|
|
JMP L110C
|
|
|
|
L107A ASL L1450
|
|
BCC L1082
|
|
JMP L1118
|
|
|
|
L1082 ASL L1450
|
|
BCC L108A
|
|
JMP L1124
|
|
|
|
L108A ASL L1450
|
|
BCC L1092
|
|
JMP L1130
|
|
|
|
L1092 ASL L1450
|
|
BCC L109A
|
|
JMP L113C
|
|
|
|
L109A ASL L1450
|
|
BCC L10A2
|
|
JMP L1148
|
|
|
|
L10A2 ASL L1450
|
|
BCC L10AA
|
|
JMP L1154
|
|
|
|
L10AA ASL L1450
|
|
BCC L10B2
|
|
JMP L1160
|
|
|
|
L10B2 ASL L1450
|
|
BCC L10BA
|
|
JMP L116C
|
|
|
|
L10BA ASL L1450
|
|
BCC L10C2
|
|
JMP L1178
|
|
|
|
L10C2 ASL L1450
|
|
BCC L10CA
|
|
JMP L1184
|
|
|
|
L10CA ASL L1450
|
|
JMP L1190
|
|
|
|
L10D0 ROL
|
|
CMP L134A,X
|
|
BCC L10D9
|
|
SBC L134A,X
|
|
L10D9 ROL L1450
|
|
L10DC ROL
|
|
CMP L134A,X
|
|
BCC L10E5
|
|
SBC L134A,X
|
|
L10E5 ROL L1450
|
|
L10E8 ROL
|
|
CMP L134A,X
|
|
BCC L10F1
|
|
SBC L134A,X
|
|
L10F1 ROL L1450
|
|
L10F4 ROL
|
|
CMP L134A,X
|
|
BCC L10FD
|
|
SBC L134A,X
|
|
L10FD ROL L1450
|
|
L1100 ROL
|
|
CMP L134A,X
|
|
BCC L1109
|
|
SBC L134A,X
|
|
L1109 ROL L1450
|
|
L110C ROL
|
|
CMP L134A,X
|
|
BCC L1115
|
|
SBC L134A,X
|
|
L1115 ROL L1450
|
|
L1118 ROL
|
|
CMP L134A,X
|
|
BCC L1121
|
|
SBC L134A,X
|
|
L1121 ROL L1450
|
|
L1124 ROL
|
|
CMP L134A,X
|
|
BCC L112D
|
|
SBC L134A,X
|
|
L112D ROL L1450
|
|
L1130 ROL
|
|
CMP L134A,X
|
|
BCC L1139
|
|
SBC L134A,X
|
|
L1139 ROL L1450
|
|
L113C ROL
|
|
CMP L134A,X
|
|
BCC L1145
|
|
SBC L134A,X
|
|
L1145 ROL L1450
|
|
L1148 ROL
|
|
CMP L134A,X
|
|
BCC L1151
|
|
SBC L134A,X
|
|
L1151 ROL L1450
|
|
L1154 ROL
|
|
CMP L134A,X
|
|
BCC L115D
|
|
SBC L134A,X
|
|
L115D ROL L1450
|
|
L1160 ROL
|
|
CMP L134A,X
|
|
BCC L1169
|
|
SBC L134A,X
|
|
L1169 ROL L1450
|
|
L116C ROL
|
|
CMP L134A,X
|
|
BCC L1175
|
|
SBC L134A,X
|
|
L1175 ROL L1450
|
|
L1178 ROL
|
|
CMP L134A,X
|
|
BCC L1181
|
|
SBC L134A,X
|
|
L1181 ROL L1450
|
|
L1184 ROL
|
|
CMP L134A,X
|
|
BCC L118D
|
|
SBC L134A,X
|
|
L118D ROL L1450
|
|
L1190 SEP #$20
|
|
ORA L1476
|
|
L1195 STAL $00C08E
|
|
REP #$20
|
|
LDA L1450
|
|
L119E STAL $00C08C
|
|
REP #$30
|
|
RTS
|
|
|
|
*----------------------------
|
|
|
|
MX %11
|
|
LDX #$FF
|
|
BNE L11C9
|
|
LDX #$E0
|
|
BNE L11C9
|
|
LDX #$C0
|
|
BNE L11C9
|
|
LDX #$A0
|
|
BNE L11C9
|
|
LDX #$80
|
|
BNE L11C9
|
|
L11B9 LDX #$60
|
|
BNE L11C9
|
|
LDX #$50
|
|
BNE L11C9
|
|
LDX #$40
|
|
BNE L11C9
|
|
LDX #$20
|
|
BNE L11C9
|
|
L11C9 STX L1470
|
|
LDY #$60
|
|
L11CE LDAL SPKR
|
|
LDX L1470
|
|
L11D5 DEX
|
|
BNE L11D5
|
|
DEY
|
|
BNE L11CE
|
|
LDX #$FF
|
|
L11DD DEY
|
|
BNE L11DD
|
|
DEX
|
|
BNE L11DD
|
|
RTS
|
|
|
|
LDA #$14
|
|
STA L1480
|
|
STZ L147F
|
|
STZ L147E
|
|
L11EF LDAL RDBANK1
|
|
BPL L11F7
|
|
CLC
|
|
RTS
|
|
|
|
L11F7 INC L147E
|
|
BNE L11EF
|
|
INC L147F
|
|
BNE L11EF
|
|
DEC L1480
|
|
BNE L11EF
|
|
L1206 SEC
|
|
RTS
|
|
|
|
*----------------------------
|
|
|
|
L1208 DA L027A
|
|
DA L02BE
|
|
DA L0302
|
|
DA L0346
|
|
DA L038A
|
|
DA L03CE
|
|
DA L0412
|
|
DA L0456
|
|
DA L049A
|
|
DA L04DE
|
|
DA L0522
|
|
DA L0566
|
|
DA L05AA
|
|
DA L05EE
|
|
DA L0632
|
|
DA L0676
|
|
|
|
*----------------------------
|
|
|
|
MX %00
|
|
L1228 LDY L1208
|
|
LDA |$003E,Y
|
|
STA L147A
|
|
LDA #$0001
|
|
STA L147C
|
|
L1237 LDA L147C
|
|
CMP L135A
|
|
BCC L1243
|
|
BEQ L1243
|
|
BRA L1254
|
|
L1243 ASL
|
|
TAY
|
|
LDA L1206,Y
|
|
TAY
|
|
LDA L147A
|
|
STA |$0036,Y
|
|
INC L147C
|
|
BNE L1237
|
|
L1254 LDA #$0001
|
|
STA L147C
|
|
L125A LDA L147C
|
|
CMP L135A
|
|
BCC L1264
|
|
BRA L127D
|
|
L1264 ASL
|
|
TAY
|
|
TAX
|
|
LDA L1208,Y
|
|
TAY
|
|
LDA |$003E,Y
|
|
PHA
|
|
TXY
|
|
LDA L1206,Y
|
|
TAY
|
|
PLA
|
|
STA |$0038,Y
|
|
INC L147C
|
|
BNE L125A
|
|
L127D INC L1478
|
|
RTS
|
|
|
|
*----------------------------
|
|
* Init s/w addresses
|
|
*----------------------------
|
|
|
|
initPointers
|
|
REP #$30
|
|
LDA fgINIT ; was it init'ed?
|
|
BNE L12E6 ; yes, exit
|
|
|
|
INC fgINIT
|
|
|
|
LDY #$0000 ; patch s/w addresses
|
|
L128E LDX L12EB,Y
|
|
LDA |$0000,X
|
|
AND #$FF00
|
|
CMP #$C000
|
|
BNE L12E7 ; crash on error
|
|
LDA |$0000,X
|
|
CLC
|
|
ADC theSLOT16
|
|
STA |$0000,X
|
|
INY
|
|
INY
|
|
CPY #$004E
|
|
BCC L128E
|
|
|
|
SEP #$30 ; patch fast read/write from direct page
|
|
REP #$10
|
|
LDX #$0100
|
|
LDY #$0000
|
|
L12B7 LDA L19E5+1,Y
|
|
AND #$F0
|
|
CMP #$80
|
|
BNE L12E9 ; crash on error
|
|
CLC
|
|
ADC theSLOT16
|
|
STA L19E5+1,Y
|
|
LDA L14B7+1,Y
|
|
AND #$F0
|
|
CMP #$80
|
|
BNE L12E9
|
|
CLC
|
|
ADC theSLOT16
|
|
STA L14B7+1,Y
|
|
REP #$20
|
|
TYA
|
|
CLC
|
|
ADC #$0005
|
|
TAY
|
|
SEP #$20
|
|
DEX
|
|
BNE L12B7
|
|
REP #$30
|
|
L12E6 RTS
|
|
|
|
L12E7 BRK $01 ; Hum, a BNE goes here
|
|
L12E9 DRK $02 ; Hum, a BNE goes here
|
|
|
|
*----------------------------
|
|
* Patch $C0xy table
|
|
*----------------------------
|
|
|
|
L12EB DA L0A0F+1
|
|
DA L0AB3+1
|
|
DA L0BA3+1
|
|
DA L0BBA+1
|
|
DA L0EA7+1
|
|
DA L0EB9+1
|
|
DA L1498+1
|
|
DA L19C1+1
|
|
DA L1EEC+1
|
|
DA L0A09+1
|
|
DA L0AAD+1
|
|
DA L11EF+1
|
|
DA L1492+1
|
|
DA L1EE6+1
|
|
DA L09D0+1
|
|
DA L0A9F+1
|
|
DA L0B66+1
|
|
DA L103B+1
|
|
DA L119E+1
|
|
DA L1195+1
|
|
DA L0AC9+1
|
|
DA L0AD2+1
|
|
DA L0ADB+1
|
|
DA L0AE4+1
|
|
DA L0EAF+1
|
|
DA L0AED+1
|
|
DA L0AF6+1
|
|
DA L0AFF+1
|
|
DA L0B08+1
|
|
DA L08E7+1
|
|
DA L09EC+1
|
|
DA L0B82+1
|
|
DA L0B9F+1
|
|
DA L0990+1
|
|
DA L0A21+1
|
|
DA L0BB6+1
|
|
DA L09D9+1
|
|
DA L0AA5+1
|
|
DA L0B6F+1
|
|
|
|
*----------------------------
|
|
|
|
DB $AA
|
|
DB $AA
|
|
DB $AA
|
|
DB $AA
|
|
DB $AA
|
|
DB $AA
|
|
DB $AA
|
|
|
|
*--- This is a copy of the $C800..$C8FF page (the real one)
|
|
|
|
L1340 DB $CA
|
|
DB $CC
|
|
DB $64
|
|
DB $02
|
|
DB $64
|
|
DB $02
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
L134A DB $05
|
|
DB $00
|
|
DB $05
|
|
DB $00
|
|
L134E DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $01
|
|
DB $00
|
|
DB $01
|
|
DB $00
|
|
DB $05
|
|
DB $00
|
|
DB $03
|
|
DB $00
|
|
L135A DB $08
|
|
DB $00
|
|
DB $01
|
|
DB $00
|
|
DB $03
|
|
DB $00
|
|
DB $04
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $01
|
|
DB $00
|
|
L1366 DB $40
|
|
DB $00
|
|
DB $01
|
|
DB $00
|
|
DB $01
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
L137C DW $0000
|
|
L137E DB $00
|
|
L137F DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
L13BC DW $0000 ; number of blocks per device (16*4 bytes)
|
|
L13BE DB $00
|
|
L13BF DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
L1450 DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
L145E DW $0000
|
|
L1460 DW $0000
|
|
theRequest ADRL $00000000
|
|
L1466 DW $0000
|
|
L1468 DW $0000
|
|
DB $00
|
|
DB $00
|
|
L146C DW $0000
|
|
DB $00
|
|
DB $00
|
|
L1470 DW $0000
|
|
DB $00
|
|
DB $00
|
|
L1474 DW $0000
|
|
L1476 DW $0000
|
|
L1478 DW $0000
|
|
L147A DW $0000
|
|
L147C DW $0000
|
|
L147E DB $00
|
|
L147F DB $00
|
|
L1480 DW $0000
|
|
theCARD DW $0000
|
|
DB $00
|
|
DB $00
|
|
theSLOT DW $0000
|
|
theSLOT16 DW $0000
|
|
fgINIT DW $0000
|
|
DB $EE
|
|
DB $EE
|
|
DB $EE
|
|
DB $EE
|
|
|
|
*----------------------------
|
|
* Read data from card
|
|
*----------------------------
|
|
|
|
readFROMCARD
|
|
SEP #$30
|
|
L1492 LDAL RDBANK1
|
|
BPL L1492
|
|
L1498 LDAL $00C08F
|
|
BMI L1498
|
|
AND #$F9
|
|
CMP #$58
|
|
BEQ L14AA
|
|
LSR
|
|
BCC L1498
|
|
JMP L0A7F
|
|
|
|
L14AA LDA bufferPtr+2
|
|
PHA
|
|
PLB
|
|
REP #$30
|
|
LDY bufferPtr
|
|
PHD
|
|
LDA #$C000
|
|
TCD
|
|
L14B7 LDA $80 ; $C0s0 returns a 16-bit value from the disk
|
|
STA |$0000,Y
|
|
LDA $80
|
|
STA |$0002,Y
|
|
LDA $80
|
|
STA |$0004,Y
|
|
LDA $80
|
|
STA |$0006,Y
|
|
LDA $80
|
|
STA |$0008,Y
|
|
LDA $80
|
|
STA |$000A,Y
|
|
LDA $80
|
|
STA |$000C,Y
|
|
LDA $80
|
|
STA |$000E,Y
|
|
LDA $80
|
|
STA |$0010,Y
|
|
LDA $80
|
|
STA |$0012,Y
|
|
LDA $80
|
|
STA |$0014,Y
|
|
LDA $80
|
|
STA |$0016,Y
|
|
LDA $80
|
|
STA |$0018,Y
|
|
LDA $80
|
|
STA |$001A,Y
|
|
LDA $80
|
|
STA |$001C,Y
|
|
LDA $80
|
|
STA |$001E,Y
|
|
LDA $80
|
|
STA |$0020,Y
|
|
LDA $80
|
|
STA |$0022,Y
|
|
LDA $80
|
|
STA |$0024,Y
|
|
LDA $80
|
|
STA |$0026,Y
|
|
LDA $80
|
|
STA |$0028,Y
|
|
LDA $80
|
|
STA |$002A,Y
|
|
LDA $80
|
|
STA |$002C,Y
|
|
LDA $80
|
|
STA |$002E,Y
|
|
LDA $80
|
|
STA |$0030,Y
|
|
LDA $80
|
|
STA |$0032,Y
|
|
LDA $80
|
|
STA |$0034,Y
|
|
LDA $80
|
|
STA |$0036,Y
|
|
LDA $80
|
|
STA |$0038,Y
|
|
LDA $80
|
|
STA |$003A,Y
|
|
LDA $80
|
|
STA |$003C,Y
|
|
LDA $80
|
|
STA |$003E,Y
|
|
LDA $80
|
|
STA |$0040,Y
|
|
LDA $80
|
|
STA |$0042,Y
|
|
LDA $80
|
|
STA |$0044,Y
|
|
LDA $80
|
|
STA |$0046,Y
|
|
LDA $80
|
|
STA |$0048,Y
|
|
LDA $80
|
|
STA |$004A,Y
|
|
LDA $80
|
|
STA |$004C,Y
|
|
LDA $80
|
|
STA |$004E,Y
|
|
LDA $80
|
|
STA |$0050,Y
|
|
LDA $80
|
|
STA |$0052,Y
|
|
LDA $80
|
|
STA |$0054,Y
|
|
LDA $80
|
|
STA |$0056,Y
|
|
LDA $80
|
|
STA |$0058,Y
|
|
LDA $80
|
|
STA |$005A,Y
|
|
LDA $80
|
|
STA |$005C,Y
|
|
LDA $80
|
|
STA |$005E,Y
|
|
LDA $80
|
|
STA |$0060,Y
|
|
LDA $80
|
|
STA |$0062,Y
|
|
LDA $80
|
|
STA |$0064,Y
|
|
LDA $80
|
|
STA |$0066,Y
|
|
LDA $80
|
|
STA |$0068,Y
|
|
LDA $80
|
|
STA |$006A,Y
|
|
LDA $80
|
|
STA |$006C,Y
|
|
LDA $80
|
|
STA |$006E,Y
|
|
LDA $80
|
|
STA |$0070,Y
|
|
LDA $80
|
|
STA |$0072,Y
|
|
LDA $80
|
|
STA |$0074,Y
|
|
LDA $80
|
|
STA |$0076,Y
|
|
LDA $80
|
|
STA |$0078,Y
|
|
LDA $80
|
|
STA |$007A,Y
|
|
LDA $80
|
|
STA |$007C,Y
|
|
LDA $80
|
|
STA |$007E,Y
|
|
LDA $80
|
|
STA |$0080,Y
|
|
LDA $80
|
|
STA |$0082,Y
|
|
LDA $80
|
|
STA |$0084,Y
|
|
LDA $80
|
|
STA |$0086,Y
|
|
LDA $80
|
|
STA |$0088,Y
|
|
LDA $80
|
|
STA |$008A,Y
|
|
LDA $80
|
|
STA |$008C,Y
|
|
LDA $80
|
|
STA |$008E,Y
|
|
LDA $80
|
|
STA |$0090,Y
|
|
LDA $80
|
|
STA |$0092,Y
|
|
LDA $80
|
|
STA |$0094,Y
|
|
LDA $80
|
|
STA |$0096,Y
|
|
LDA $80
|
|
STA |$0098,Y
|
|
LDA $80
|
|
STA |$009A,Y
|
|
LDA $80
|
|
STA |$009C,Y
|
|
LDA $80
|
|
STA |$009E,Y
|
|
LDA $80
|
|
STA |$00A0,Y
|
|
LDA $80
|
|
STA |$00A2,Y
|
|
LDA $80
|
|
STA |$00A4,Y
|
|
LDA $80
|
|
STA |$00A6,Y
|
|
LDA $80
|
|
STA |$00A8,Y
|
|
LDA $80
|
|
STA |$00AA,Y
|
|
LDA $80
|
|
STA |$00AC,Y
|
|
LDA $80
|
|
STA |$00AE,Y
|
|
LDA $80
|
|
STA |$00B0,Y
|
|
LDA $80
|
|
STA |$00B2,Y
|
|
LDA $80
|
|
STA |$00B4,Y
|
|
LDA $80
|
|
STA |$00B6,Y
|
|
LDA $80
|
|
STA |$00B8,Y
|
|
LDA $80
|
|
STA |$00BA,Y
|
|
LDA $80
|
|
STA |$00BC,Y
|
|
LDA $80
|
|
STA |$00BE,Y
|
|
LDA $80
|
|
STA |$00C0,Y
|
|
LDA $80
|
|
STA |$00C2,Y
|
|
LDA $80
|
|
STA |$00C4,Y
|
|
LDA $80
|
|
STA |$00C6,Y
|
|
LDA $80
|
|
STA |$00C8,Y
|
|
LDA $80
|
|
STA |$00CA,Y
|
|
LDA $80
|
|
STA |$00CC,Y
|
|
LDA $80
|
|
STA |$00CE,Y
|
|
LDA $80
|
|
STA |$00D0,Y
|
|
LDA $80
|
|
STA |$00D2,Y
|
|
LDA $80
|
|
STA |$00D4,Y
|
|
LDA $80
|
|
STA |$00D6,Y
|
|
LDA $80
|
|
STA |$00D8,Y
|
|
LDA $80
|
|
STA |$00DA,Y
|
|
LDA $80
|
|
STA |$00DC,Y
|
|
LDA $80
|
|
STA |$00DE,Y
|
|
LDA $80
|
|
STA |$00E0,Y
|
|
LDA $80
|
|
STA |$00E2,Y
|
|
LDA $80
|
|
STA |$00E4,Y
|
|
LDA $80
|
|
STA |$00E6,Y
|
|
LDA $80
|
|
STA |$00E8,Y
|
|
LDA $80
|
|
STA |$00EA,Y
|
|
LDA $80
|
|
STA |$00EC,Y
|
|
LDA $80
|
|
STA |$00EE,Y
|
|
LDA $80
|
|
STA |$00F0,Y
|
|
LDA $80
|
|
STA |$00F2,Y
|
|
LDA $80
|
|
STA |$00F4,Y
|
|
LDA $80
|
|
STA |$00F6,Y
|
|
LDA $80
|
|
STA |$00F8,Y
|
|
LDA $80
|
|
STA |$00FA,Y
|
|
LDA $80
|
|
STA |$00FC,Y
|
|
LDA $80
|
|
STA |$00FE,Y
|
|
LDA $80
|
|
STA $0100,Y
|
|
LDA $80
|
|
STA $0102,Y
|
|
LDA $80
|
|
STA $0104,Y
|
|
LDA $80
|
|
STA $0106,Y
|
|
LDA $80
|
|
STA $0108,Y
|
|
LDA $80
|
|
STA $010A,Y
|
|
LDA $80
|
|
STA $010C,Y
|
|
LDA $80
|
|
STA $010E,Y
|
|
LDA $80
|
|
STA $0110,Y
|
|
LDA $80
|
|
STA $0112,Y
|
|
LDA $80
|
|
STA $0114,Y
|
|
LDA $80
|
|
STA $0116,Y
|
|
LDA $80
|
|
STA $0118,Y
|
|
LDA $80
|
|
STA $011A,Y
|
|
LDA $80
|
|
STA $011C,Y
|
|
LDA $80
|
|
STA $011E,Y
|
|
LDA $80
|
|
STA $0120,Y
|
|
LDA $80
|
|
STA $0122,Y
|
|
LDA $80
|
|
STA $0124,Y
|
|
LDA $80
|
|
STA $0126,Y
|
|
LDA $80
|
|
STA $0128,Y
|
|
LDA $80
|
|
STA $012A,Y
|
|
LDA $80
|
|
STA $012C,Y
|
|
LDA $80
|
|
STA $012E,Y
|
|
LDA $80
|
|
STA $0130,Y
|
|
LDA $80
|
|
STA $0132,Y
|
|
LDA $80
|
|
STA $0134,Y
|
|
LDA $80
|
|
STA $0136,Y
|
|
LDA $80
|
|
STA $0138,Y
|
|
LDA $80
|
|
STA $013A,Y
|
|
LDA $80
|
|
STA $013C,Y
|
|
LDA $80
|
|
STA $013E,Y
|
|
LDA $80
|
|
STA $0140,Y
|
|
LDA $80
|
|
STA $0142,Y
|
|
LDA $80
|
|
STA $0144,Y
|
|
LDA $80
|
|
STA $0146,Y
|
|
LDA $80
|
|
STA $0148,Y
|
|
LDA $80
|
|
STA $014A,Y
|
|
LDA $80
|
|
STA $014C,Y
|
|
LDA $80
|
|
STA $014E,Y
|
|
LDA $80
|
|
STA $0150,Y
|
|
LDA $80
|
|
STA $0152,Y
|
|
LDA $80
|
|
STA $0154,Y
|
|
LDA $80
|
|
STA $0156,Y
|
|
LDA $80
|
|
STA $0158,Y
|
|
LDA $80
|
|
STA $015A,Y
|
|
LDA $80
|
|
STA $015C,Y
|
|
LDA $80
|
|
STA $015E,Y
|
|
LDA $80
|
|
STA $0160,Y
|
|
LDA $80
|
|
STA $0162,Y
|
|
LDA $80
|
|
STA $0164,Y
|
|
LDA $80
|
|
STA $0166,Y
|
|
LDA $80
|
|
STA $0168,Y
|
|
LDA $80
|
|
STA $016A,Y
|
|
LDA $80
|
|
STA $016C,Y
|
|
LDA $80
|
|
STA $016E,Y
|
|
LDA $80
|
|
STA $0170,Y
|
|
LDA $80
|
|
STA $0172,Y
|
|
LDA $80
|
|
STA $0174,Y
|
|
LDA $80
|
|
STA $0176,Y
|
|
LDA $80
|
|
STA $0178,Y
|
|
LDA $80
|
|
STA $017A,Y
|
|
LDA $80
|
|
STA $017C,Y
|
|
LDA $80
|
|
STA $017E,Y
|
|
LDA $80
|
|
STA $0180,Y
|
|
LDA $80
|
|
STA $0182,Y
|
|
LDA $80
|
|
STA $0184,Y
|
|
LDA $80
|
|
STA $0186,Y
|
|
LDA $80
|
|
STA $0188,Y
|
|
LDA $80
|
|
STA $018A,Y
|
|
LDA $80
|
|
STA $018C,Y
|
|
LDA $80
|
|
STA $018E,Y
|
|
LDA $80
|
|
STA $0190,Y
|
|
LDA $80
|
|
STA $0192,Y
|
|
LDA $80
|
|
STA $0194,Y
|
|
LDA $80
|
|
STA $0196,Y
|
|
LDA $80
|
|
STA $0198,Y
|
|
LDA $80
|
|
STA $019A,Y
|
|
LDA $80
|
|
STA $019C,Y
|
|
LDA $80
|
|
STA $019E,Y
|
|
LDA $80
|
|
STA $01A0,Y
|
|
LDA $80
|
|
STA $01A2,Y
|
|
LDA $80
|
|
STA $01A4,Y
|
|
LDA $80
|
|
STA $01A6,Y
|
|
LDA $80
|
|
STA $01A8,Y
|
|
LDA $80
|
|
STA $01AA,Y
|
|
LDA $80
|
|
STA $01AC,Y
|
|
LDA $80
|
|
STA $01AE,Y
|
|
LDA $80
|
|
STA $01B0,Y
|
|
LDA $80
|
|
STA $01B2,Y
|
|
LDA $80
|
|
STA $01B4,Y
|
|
LDA $80
|
|
STA $01B6,Y
|
|
LDA $80
|
|
STA $01B8,Y
|
|
LDA $80
|
|
STA $01BA,Y
|
|
LDA $80
|
|
STA $01BC,Y
|
|
LDA $80
|
|
STA $01BE,Y
|
|
LDA $80
|
|
STA $01C0,Y
|
|
LDA $80
|
|
STA $01C2,Y
|
|
LDA $80
|
|
STA $01C4,Y
|
|
LDA $80
|
|
STA $01C6,Y
|
|
LDA $80
|
|
STA $01C8,Y
|
|
LDA $80
|
|
STA $01CA,Y
|
|
LDA $80
|
|
STA $01CC,Y
|
|
LDA $80
|
|
STA $01CE,Y
|
|
LDA $80
|
|
STA $01D0,Y
|
|
LDA $80
|
|
STA $01D2,Y
|
|
LDA $80
|
|
STA $01D4,Y
|
|
LDA $80
|
|
STA $01D6,Y
|
|
LDA $80
|
|
STA $01D8,Y
|
|
LDA $80
|
|
STA $01DA,Y
|
|
LDA $80
|
|
STA $01DC,Y
|
|
LDA $80
|
|
STA $01DE,Y
|
|
LDA $80
|
|
STA $01E0,Y
|
|
LDA $80
|
|
STA $01E2,Y
|
|
LDA $80
|
|
STA $01E4,Y
|
|
LDA $80
|
|
STA $01E6,Y
|
|
LDA $80
|
|
STA $01E8,Y
|
|
LDA $80
|
|
STA $01EA,Y
|
|
LDA $80
|
|
STA $01EC,Y
|
|
LDA $80
|
|
STA $01EE,Y
|
|
LDA $80
|
|
STA $01F0,Y
|
|
LDA $80
|
|
STA $01F2,Y
|
|
LDA $80
|
|
STA $01F4,Y
|
|
LDA $80
|
|
STA $01F6,Y
|
|
LDA $80
|
|
STA $01F8,Y
|
|
LDA $80
|
|
STA $01FA,Y
|
|
LDA $80
|
|
STA $01FC,Y
|
|
LDA $80
|
|
STA $01FE,Y
|
|
PLD
|
|
SEP #$30
|
|
PHK
|
|
PLB
|
|
JMP L0A25
|
|
|
|
*----------------------------
|
|
* Write data to card
|
|
*----------------------------
|
|
|
|
writeTOCARD
|
|
SEP #$30
|
|
L19C1 LDAL $00C08F
|
|
BMI L19C1
|
|
AND #$FD ; 1111_1101
|
|
CMP #$58 ; 0101_1000
|
|
BEQ L19D4
|
|
AND #$21 ; 0010_0001
|
|
BEQ L19C1
|
|
JMP L0C27
|
|
|
|
L19D4 PHB
|
|
LDA bufferPtr+2
|
|
PHA
|
|
PLB
|
|
REP #$30
|
|
LDY bufferPtr
|
|
PHD
|
|
LDA #$C000
|
|
TCD
|
|
LDA |$0000,Y
|
|
L19E5 STA $80
|
|
LDA |$0002,Y
|
|
STA $80
|
|
LDA |$0004,Y
|
|
STA $80
|
|
LDA |$0006,Y
|
|
STA $80
|
|
LDA |$0008,Y
|
|
STA $80
|
|
LDA |$000A,Y
|
|
STA $80
|
|
LDA |$000C,Y
|
|
STA $80
|
|
LDA |$000E,Y
|
|
STA $80
|
|
LDA |$0010,Y
|
|
STA $80
|
|
LDA |$0012,Y
|
|
STA $80
|
|
LDA |$0014,Y
|
|
STA $80
|
|
LDA |$0016,Y
|
|
STA $80
|
|
LDA |$0018,Y
|
|
STA $80
|
|
LDA |$001A,Y
|
|
STA $80
|
|
LDA |$001C,Y
|
|
STA $80
|
|
LDA |$001E,Y
|
|
STA $80
|
|
LDA |$0020,Y
|
|
STA $80
|
|
LDA |$0022,Y
|
|
STA $80
|
|
LDA |$0024,Y
|
|
STA $80
|
|
LDA |$0026,Y
|
|
STA $80
|
|
LDA |$0028,Y
|
|
STA $80
|
|
LDA |$002A,Y
|
|
STA $80
|
|
LDA |$002C,Y
|
|
STA $80
|
|
LDA |$002E,Y
|
|
STA $80
|
|
LDA |$0030,Y
|
|
STA $80
|
|
LDA |$0032,Y
|
|
STA $80
|
|
LDA |$0034,Y
|
|
STA $80
|
|
LDA |$0036,Y
|
|
STA $80
|
|
LDA |$0038,Y
|
|
STA $80
|
|
LDA |$003A,Y
|
|
STA $80
|
|
LDA |$003C,Y
|
|
STA $80
|
|
LDA |$003E,Y
|
|
STA $80
|
|
LDA |$0040,Y
|
|
STA $80
|
|
LDA |$0042,Y
|
|
STA $80
|
|
LDA |$0044,Y
|
|
STA $80
|
|
LDA |$0046,Y
|
|
STA $80
|
|
LDA |$0048,Y
|
|
STA $80
|
|
LDA |$004A,Y
|
|
STA $80
|
|
LDA |$004C,Y
|
|
STA $80
|
|
LDA |$004E,Y
|
|
STA $80
|
|
LDA |$0050,Y
|
|
STA $80
|
|
LDA |$0052,Y
|
|
STA $80
|
|
LDA |$0054,Y
|
|
STA $80
|
|
LDA |$0056,Y
|
|
STA $80
|
|
LDA |$0058,Y
|
|
STA $80
|
|
LDA |$005A,Y
|
|
STA $80
|
|
LDA |$005C,Y
|
|
STA $80
|
|
LDA |$005E,Y
|
|
STA $80
|
|
LDA |$0060,Y
|
|
STA $80
|
|
LDA |$0062,Y
|
|
STA $80
|
|
LDA |$0064,Y
|
|
STA $80
|
|
LDA |$0066,Y
|
|
STA $80
|
|
LDA |$0068,Y
|
|
STA $80
|
|
LDA |$006A,Y
|
|
STA $80
|
|
LDA |$006C,Y
|
|
STA $80
|
|
LDA |$006E,Y
|
|
STA $80
|
|
LDA |$0070,Y
|
|
STA $80
|
|
LDA |$0072,Y
|
|
STA $80
|
|
LDA |$0074,Y
|
|
STA $80
|
|
LDA |$0076,Y
|
|
STA $80
|
|
LDA |$0078,Y
|
|
STA $80
|
|
LDA |$007A,Y
|
|
STA $80
|
|
LDA |$007C,Y
|
|
STA $80
|
|
LDA |$007E,Y
|
|
STA $80
|
|
LDA |$0080,Y
|
|
STA $80
|
|
LDA |$0082,Y
|
|
STA $80
|
|
LDA |$0084,Y
|
|
STA $80
|
|
LDA |$0086,Y
|
|
STA $80
|
|
LDA |$0088,Y
|
|
STA $80
|
|
LDA |$008A,Y
|
|
STA $80
|
|
LDA |$008C,Y
|
|
STA $80
|
|
LDA |$008E,Y
|
|
STA $80
|
|
LDA |$0090,Y
|
|
STA $80
|
|
LDA |$0092,Y
|
|
STA $80
|
|
LDA |$0094,Y
|
|
STA $80
|
|
LDA |$0096,Y
|
|
STA $80
|
|
LDA |$0098,Y
|
|
STA $80
|
|
LDA |$009A,Y
|
|
STA $80
|
|
LDA |$009C,Y
|
|
STA $80
|
|
LDA |$009E,Y
|
|
STA $80
|
|
LDA |$00A0,Y
|
|
STA $80
|
|
LDA |$00A2,Y
|
|
STA $80
|
|
LDA |$00A4,Y
|
|
STA $80
|
|
LDA |$00A6,Y
|
|
STA $80
|
|
LDA |$00A8,Y
|
|
STA $80
|
|
LDA |$00AA,Y
|
|
STA $80
|
|
LDA |$00AC,Y
|
|
STA $80
|
|
LDA |$00AE,Y
|
|
STA $80
|
|
LDA |$00B0,Y
|
|
STA $80
|
|
LDA |$00B2,Y
|
|
STA $80
|
|
LDA |$00B4,Y
|
|
STA $80
|
|
LDA |$00B6,Y
|
|
STA $80
|
|
LDA |$00B8,Y
|
|
STA $80
|
|
LDA |$00BA,Y
|
|
STA $80
|
|
LDA |$00BC,Y
|
|
STA $80
|
|
LDA |$00BE,Y
|
|
STA $80
|
|
LDA |$00C0,Y
|
|
STA $80
|
|
LDA |$00C2,Y
|
|
STA $80
|
|
LDA |$00C4,Y
|
|
STA $80
|
|
LDA |$00C6,Y
|
|
STA $80
|
|
LDA |$00C8,Y
|
|
STA $80
|
|
LDA |$00CA,Y
|
|
STA $80
|
|
LDA |$00CC,Y
|
|
STA $80
|
|
LDA |$00CE,Y
|
|
STA $80
|
|
LDA |$00D0,Y
|
|
STA $80
|
|
LDA |$00D2,Y
|
|
STA $80
|
|
LDA |$00D4,Y
|
|
STA $80
|
|
LDA |$00D6,Y
|
|
STA $80
|
|
LDA |$00D8,Y
|
|
STA $80
|
|
LDA |$00DA,Y
|
|
STA $80
|
|
LDA |$00DC,Y
|
|
STA $80
|
|
LDA |$00DE,Y
|
|
STA $80
|
|
LDA |$00E0,Y
|
|
STA $80
|
|
LDA |$00E2,Y
|
|
STA $80
|
|
LDA |$00E4,Y
|
|
STA $80
|
|
LDA |$00E6,Y
|
|
STA $80
|
|
LDA |$00E8,Y
|
|
STA $80
|
|
LDA |$00EA,Y
|
|
STA $80
|
|
LDA |$00EC,Y
|
|
STA $80
|
|
LDA |$00EE,Y
|
|
STA $80
|
|
LDA |$00F0,Y
|
|
STA $80
|
|
LDA |$00F2,Y
|
|
STA $80
|
|
LDA |$00F4,Y
|
|
STA $80
|
|
LDA |$00F6,Y
|
|
STA $80
|
|
LDA |$00F8,Y
|
|
STA $80
|
|
LDA |$00FA,Y
|
|
STA $80
|
|
LDA |$00FC,Y
|
|
STA $80
|
|
LDA |$00FE,Y
|
|
STA $80
|
|
LDA $0100,Y
|
|
STA $80
|
|
LDA $0102,Y
|
|
STA $80
|
|
LDA $0104,Y
|
|
STA $80
|
|
LDA $0106,Y
|
|
STA $80
|
|
LDA $0108,Y
|
|
STA $80
|
|
LDA $010A,Y
|
|
STA $80
|
|
LDA $010C,Y
|
|
STA $80
|
|
LDA $010E,Y
|
|
STA $80
|
|
LDA $0110,Y
|
|
STA $80
|
|
LDA $0112,Y
|
|
STA $80
|
|
LDA $0114,Y
|
|
STA $80
|
|
LDA $0116,Y
|
|
STA $80
|
|
LDA $0118,Y
|
|
STA $80
|
|
LDA $011A,Y
|
|
STA $80
|
|
LDA $011C,Y
|
|
STA $80
|
|
LDA $011E,Y
|
|
STA $80
|
|
LDA $0120,Y
|
|
STA $80
|
|
LDA $0122,Y
|
|
STA $80
|
|
LDA $0124,Y
|
|
STA $80
|
|
LDA $0126,Y
|
|
STA $80
|
|
LDA $0128,Y
|
|
STA $80
|
|
LDA $012A,Y
|
|
STA $80
|
|
LDA $012C,Y
|
|
STA $80
|
|
LDA $012E,Y
|
|
STA $80
|
|
LDA $0130,Y
|
|
STA $80
|
|
LDA $0132,Y
|
|
STA $80
|
|
LDA $0134,Y
|
|
STA $80
|
|
LDA $0136,Y
|
|
STA $80
|
|
LDA $0138,Y
|
|
STA $80
|
|
LDA $013A,Y
|
|
STA $80
|
|
LDA $013C,Y
|
|
STA $80
|
|
LDA $013E,Y
|
|
STA $80
|
|
LDA $0140,Y
|
|
STA $80
|
|
LDA $0142,Y
|
|
STA $80
|
|
LDA $0144,Y
|
|
STA $80
|
|
LDA $0146,Y
|
|
STA $80
|
|
LDA $0148,Y
|
|
STA $80
|
|
LDA $014A,Y
|
|
STA $80
|
|
LDA $014C,Y
|
|
STA $80
|
|
LDA $014E,Y
|
|
STA $80
|
|
LDA $0150,Y
|
|
STA $80
|
|
LDA $0152,Y
|
|
STA $80
|
|
LDA $0154,Y
|
|
STA $80
|
|
LDA $0156,Y
|
|
STA $80
|
|
LDA $0158,Y
|
|
STA $80
|
|
LDA $015A,Y
|
|
STA $80
|
|
LDA $015C,Y
|
|
STA $80
|
|
LDA $015E,Y
|
|
STA $80
|
|
LDA $0160,Y
|
|
STA $80
|
|
LDA $0162,Y
|
|
STA $80
|
|
LDA $0164,Y
|
|
STA $80
|
|
LDA $0166,Y
|
|
STA $80
|
|
LDA $0168,Y
|
|
STA $80
|
|
LDA $016A,Y
|
|
STA $80
|
|
LDA $016C,Y
|
|
STA $80
|
|
LDA $016E,Y
|
|
STA $80
|
|
LDA $0170,Y
|
|
STA $80
|
|
LDA $0172,Y
|
|
STA $80
|
|
LDA $0174,Y
|
|
STA $80
|
|
LDA $0176,Y
|
|
STA $80
|
|
LDA $0178,Y
|
|
STA $80
|
|
LDA $017A,Y
|
|
STA $80
|
|
LDA $017C,Y
|
|
STA $80
|
|
LDA $017E,Y
|
|
STA $80
|
|
LDA $0180,Y
|
|
STA $80
|
|
LDA $0182,Y
|
|
STA $80
|
|
LDA $0184,Y
|
|
STA $80
|
|
LDA $0186,Y
|
|
STA $80
|
|
LDA $0188,Y
|
|
STA $80
|
|
LDA $018A,Y
|
|
STA $80
|
|
LDA $018C,Y
|
|
STA $80
|
|
LDA $018E,Y
|
|
STA $80
|
|
LDA $0190,Y
|
|
STA $80
|
|
LDA $0192,Y
|
|
STA $80
|
|
LDA $0194,Y
|
|
STA $80
|
|
LDA $0196,Y
|
|
STA $80
|
|
LDA $0198,Y
|
|
STA $80
|
|
LDA $019A,Y
|
|
STA $80
|
|
LDA $019C,Y
|
|
STA $80
|
|
LDA $019E,Y
|
|
STA $80
|
|
LDA $01A0,Y
|
|
STA $80
|
|
LDA $01A2,Y
|
|
STA $80
|
|
LDA $01A4,Y
|
|
STA $80
|
|
LDA $01A6,Y
|
|
STA $80
|
|
LDA $01A8,Y
|
|
STA $80
|
|
LDA $01AA,Y
|
|
STA $80
|
|
LDA $01AC,Y
|
|
STA $80
|
|
LDA $01AE,Y
|
|
STA $80
|
|
LDA $01B0,Y
|
|
STA $80
|
|
LDA $01B2,Y
|
|
STA $80
|
|
LDA $01B4,Y
|
|
STA $80
|
|
LDA $01B6,Y
|
|
STA $80
|
|
LDA $01B8,Y
|
|
STA $80
|
|
LDA $01BA,Y
|
|
STA $80
|
|
LDA $01BC,Y
|
|
STA $80
|
|
LDA $01BE,Y
|
|
STA $80
|
|
LDA $01C0,Y
|
|
STA $80
|
|
LDA $01C2,Y
|
|
STA $80
|
|
LDA $01C4,Y
|
|
STA $80
|
|
LDA $01C6,Y
|
|
STA $80
|
|
LDA $01C8,Y
|
|
STA $80
|
|
LDA $01CA,Y
|
|
STA $80
|
|
LDA $01CC,Y
|
|
STA $80
|
|
LDA $01CE,Y
|
|
STA $80
|
|
LDA $01D0,Y
|
|
STA $80
|
|
LDA $01D2,Y
|
|
STA $80
|
|
LDA $01D4,Y
|
|
STA $80
|
|
LDA $01D6,Y
|
|
STA $80
|
|
LDA $01D8,Y
|
|
STA $80
|
|
LDA $01DA,Y
|
|
STA $80
|
|
LDA $01DC,Y
|
|
STA $80
|
|
LDA $01DE,Y
|
|
STA $80
|
|
LDA $01E0,Y
|
|
STA $80
|
|
LDA $01E2,Y
|
|
STA $80
|
|
LDA $01E4,Y
|
|
STA $80
|
|
LDA $01E6,Y
|
|
STA $80
|
|
LDA $01E8,Y
|
|
STA $80
|
|
LDA $01EA,Y
|
|
STA $80
|
|
LDA $01EC,Y
|
|
STA $80
|
|
LDA $01EE,Y
|
|
STA $80
|
|
LDA $01F0,Y
|
|
STA $80
|
|
LDA $01F2,Y
|
|
STA $80
|
|
LDA $01F4,Y
|
|
STA $80
|
|
LDA $01F6,Y
|
|
STA $80
|
|
LDA $01F8,Y
|
|
STA $80
|
|
LDA $01FA,Y
|
|
STA $80
|
|
LDA $01FC,Y
|
|
STA $80
|
|
LDA $01FE,Y
|
|
STA $80
|
|
PLD
|
|
SEP #$30
|
|
PLB
|
|
L1EE6 LDAL RDBANK1
|
|
BPL L1EE6
|
|
L1EEC LDAL $00C08F
|
|
BMI L1EEC
|
|
JMP L0BBA
|