mirror of
https://github.com/freitz85/AppleIISd.git
synced 2024-06-26 01:29:31 +00:00
Hex file for new address mapping
This commit is contained in:
parent
c5945ff0ec
commit
9e674fe0c6
BIN
AppleIISd.bin
BIN
AppleIISd.bin
Binary file not shown.
191
AppleIISd.hex
191
AppleIISd.hex
|
@ -1,64 +1,129 @@
|
||||||
:10000000A220A000A203A0FF2058FFBABD00018DCE
|
:10000000D8A9039D81C0BD83C009019D83C0A907F4
|
||||||
:10001000F807290F853D0A0A0A0A852BAA2CFFCF6B
|
:100010009D82C0A00AA9FF9D80C03C81C010FB88C2
|
||||||
:1000200020AECA9003A927002000C9C900F0010032
|
:10002000D0F5BD83C029FE9D83C0A9C58540A9CA5E
|
||||||
:10003000A9018542A62B85436444A90885456446E9
|
:10003000854120F0C82004C9C901D039A9D1854023
|
||||||
:1000400064472CFFCF20DDCA4C0108D82058FFBAE6
|
:10004000A9CA854120F0C8201FC9C901D02AA9DD4D
|
||||||
:10005000BD00018DF807290F853D0A0A0A0A852B84
|
:100050008540A9CA854120F0C82004C9A9E385408C
|
||||||
:10006000AA2CFFCF20AECA9004A927801BA9803CF0
|
:10006000A9CA854120F0C82004C9C901F0E0C9002F
|
||||||
:1000700083C0F022A542C900F010C901F00FC902E7
|
:10007000D0034CB2C84CDEC8A9DD8540A9CA854171
|
||||||
:10008000F00EC903F00DA90138604CC6CA4CDDCA98
|
:1000800020F0C8A9E98540A9CA854120F0C820040C
|
||||||
:100090004C4BCB4CC1CB2000C9B0ED80D700000049
|
:10009000C9C901F0E3C900D0034CB2C8A9CB85405F
|
||||||
:1000A0000000000000000000000000000000000050
|
:1000A000A9CA854120F0C82004C9C901F0F6C900D9
|
||||||
:1000B0000000000000000000000000000000000040
|
:1000B000D02CA9D78540A9CA854120F0C82004C901
|
||||||
:1000C0000000000000000000000000000000000030
|
:1000C000C900D01ABD83C009809D83C0BD81C0090D
|
||||||
:1000D0000000000000000000000000000000000020
|
:1000D000049D81C018A000900838A02FB00338A05C
|
||||||
:1000E0000000000000000000000000000000000010
|
:1000E00027BD83C009019D83C0A9009D82C098607F
|
||||||
:1000F000000000000000000000000000FFFF174BA0
|
:1000F0005AA000B1409D80C03C81C010FBC8C00622
|
||||||
:10010000D8A9039D81C0BD83C009019D83C0A907F3
|
:1001000090F17A60A9FF9D80C03C81C010FBBD804A
|
||||||
:100110009D82C0A00AA9FF9D80C03C81C010FB88C1
|
:10011000C0853C2980D0EDA9FF9D80C0A53C602012
|
||||||
:10012000D0F5BD83C029FE9D83C0A9C58540A9CB5C
|
:1001200004C9485AA004A9FF9D80C03C81C010FBAF
|
||||||
:10013000854120F0C92004CAC901D039A9D1854020
|
:10013000BD80C04888D0EFA43D6899F805689978DB
|
||||||
:10014000A9CB854120F0C9201FCAC901D02AA9DD49
|
:10014000056899F804689978047AA9FF9D80C068C9
|
||||||
:100150008540A9CB854120F0C92004CAA9E3854088
|
:1001500060DA5AA63DA5469DF805A5479D7805A9F4
|
||||||
:10016000A9CB854120F0C92004CAC901F0E0C9002B
|
:10016000009DF8049D7804A9802443F005A9019D11
|
||||||
:10017000D0034CB2C94CDEC9A9DD8540A9CB85416D
|
:10017000F804A0091EF8053E78053EF8043E780410
|
||||||
:1001800020F0C9A9E98540A9CB854120F0C9200408
|
:1001800088D0F17AFA605AA43D9D80C0B978049D68
|
||||||
:10019000CAC901F0E3C900D0034CB2C9A9CB85405C
|
:1001900080C0B9F8049D80C0B978059D80C0B9F8C9
|
||||||
:1001A000A9CB854120F0C92004CAC901F0F6C900D5
|
:1001A000059D80C0A9FF9D80C02004C97A6048A930
|
||||||
:1001B000D02CA9D78540A9CB854120F0C92004CAFD
|
:1001B000403C83C018F00138686048A9203C83C0E7
|
||||||
:1001C000C900D01ABD83C009809D83C0BD81C0090C
|
:1001C00018F001386860A900A2FFA0FF20AEC99016
|
||||||
:1001D000049D81C018A000900838A02FB00338A05B
|
:1001D00004A92F800720BAC99002A92B6020AEC9BC
|
||||||
:1001E00027BD83C009019D83C0A9009D82C098607E
|
:1001E000B0642051C9BD83C029FE9D83C0A95120A0
|
||||||
:1001F0005AA000B1409D80C03C81C010FBC8C00621
|
:1001F00086C9C900D050A9FF9D80C0BD80C0C9FE7E
|
||||||
:1002000090F17A60A9FF9D80C03C81C010FBBD8049
|
:10020000D0F4A002BD81C009109D81C0A9FF9D80CE
|
||||||
:10021000C0853C2980D0EDA9FF9D80C0A53C602011
|
:10021000C0643CBD80C09244E644D002E645E63C62
|
||||||
:1002200004CA485AA004A9FF9D80C03C81C010FBAD
|
:10022000D0F188D0ECBD80C0BD80C0BD80C0BD8194
|
||||||
:10023000BD80C04888D0EFA43D6899F805689978DA
|
:10023000C029EF9D81C018A9000848BD83C00901ED
|
||||||
:10024000056899F804689978047AA9FF9D80C068C8
|
:100240009D83C068286038A92780EE20AEC9B067BA
|
||||||
:1002500060DA5AA63DA5469DF805A5479D7805A9F3
|
:1002500020BAC9B0672051C9BD83C029FE9D83C0A3
|
||||||
:10026000009DF8049D7804A9802443F005A9019D10
|
:10026000A9582086C9C900D04EA9FF9D80C0A9FE0B
|
||||||
:10027000F804A0091EF8053E78053EF8043E78040F
|
:100270009D80C0A002643CB2449D80C0E644D00290
|
||||||
:1002800088D0F17AFA605AA43D9D80C0B978049D67
|
:10028000E645E63CD0F188D0EC9D80C09D80C09DC5
|
||||||
:1002900080C0B9F8049D80C0B978059D80C0B9F8C8
|
:1002900080C0BD80C0291FC905D01C18A90008480E
|
||||||
:1002A000059D80C0A9FF9D80C02004CA7A6048A92E
|
:1002A000A9FF9D80C0BD80C0C900F0F4BD83C00916
|
||||||
:1002B000403C83C018F00138686048A9203C83C0E6
|
:1002B000019D83C068286038A92780E238A92B8077
|
||||||
:1002C00018F001386860A900A2FFA0FF20AECA9014
|
:1002C000DD38A901604000000000954100000000F9
|
||||||
:1002D00004A92F800720BACA9002A92B6020AECAB9
|
:1002D000F948000001AA875000000200FF770000E3
|
||||||
:1002E000B0642051CABD83C029FE9D83C0A951209E
|
:1002E0000000656940000000776900000000FF0021
|
||||||
:1002F00086CAC900D050A9FF9D80C0BD80C0C9FE7C
|
:1002F00000000000000000000000000000000000FE
|
||||||
:10030000D0F4A002BD81C009109D81C0A9FF9D80CD
|
:1003000000000000000000000000000000000000ED
|
||||||
:10031000C0643CBD80C09244E644D002E645E63C61
|
:1003100000000000000000000000000000000000DD
|
||||||
:10032000D0F188D0ECBD80C0BD80C0BD80C0BD8193
|
:1003200000000000000000000000000000000000CD
|
||||||
:10033000C029EF9D81C018A9000848BD83C00901EC
|
:1003300000000000000000000000000000000000BD
|
||||||
:100340009D83C068286038A92780EE20AECAB067B8
|
:1003400000000000000000000000000000000000AD
|
||||||
:1003500020BACAB0672051CABD83C029FE9D83C0A0
|
:10035000000000000000000000000000000000009D
|
||||||
:10036000A9582086CAC900D04EA9FF9D80C0A9FE09
|
:10036000000000000000000000000000000000008D
|
||||||
:100370009D80C0A002643CB2449D80C0E644D0028F
|
:10037000000000000000000000000000000000007D
|
||||||
:10038000E645E63CD0F188D0EC9D80C09D80C09DC4
|
:10038000000000000000000000000000000000006D
|
||||||
:1003900080C0BD80C0291FC905D01C18A90008480D
|
:10039000000000000000000000000000000000005D
|
||||||
:1003A000A9FF9D80C0BD80C0C900F0F4BD83C00915
|
:1003A000000000000000000000000000000000004D
|
||||||
:1003B000019D83C068286038A92780E238A92B8076
|
:1003B000000000000000000000000000000000003D
|
||||||
:1003C000DD38A901604000000000954100000000F8
|
:1003C000000000000000000000000000000000002D
|
||||||
:1003D000F948000001AA875000000200FF770000E2
|
:1003D000000000000000000000000000000000001D
|
||||||
:0F03E0000000656940000000776900000000FF21
|
:1003E000000000000000000000000000000000000D
|
||||||
|
:1003F00000000000000000000000000000000000FD
|
||||||
|
:1004000000000000000000000000000000000000EC
|
||||||
|
:1004100000000000000000000000000000000000DC
|
||||||
|
:1004200000000000000000000000000000000000CC
|
||||||
|
:1004300000000000000000000000000000000000BC
|
||||||
|
:1004400000000000000000000000000000000000AC
|
||||||
|
:10045000000000000000000000000000000000009C
|
||||||
|
:10046000000000000000000000000000000000008C
|
||||||
|
:10047000000000000000000000000000000000007C
|
||||||
|
:10048000000000000000000000000000000000006C
|
||||||
|
:10049000000000000000000000000000000000005C
|
||||||
|
:1004A000000000000000000000000000000000004C
|
||||||
|
:1004B000000000000000000000000000000000003C
|
||||||
|
:1004C000000000000000000000000000000000002C
|
||||||
|
:1004D000000000000000000000000000000000001C
|
||||||
|
:1004E000000000000000000000000000000000000C
|
||||||
|
:1004F00000000000000000000000000000000000FC
|
||||||
|
:1005000000000000000000000000000000000000EB
|
||||||
|
:1005100000000000000000000000000000000000DB
|
||||||
|
:1005200000000000000000000000000000000000CB
|
||||||
|
:1005300000000000000000000000000000000000BB
|
||||||
|
:1005400000000000000000000000000000000000AB
|
||||||
|
:10055000000000000000000000000000000000009B
|
||||||
|
:10056000000000000000000000000000000000008B
|
||||||
|
:10057000000000000000000000000000000000007B
|
||||||
|
:10058000000000000000000000000000000000006B
|
||||||
|
:10059000000000000000000000000000000000005B
|
||||||
|
:1005A000000000000000000000000000000000004B
|
||||||
|
:1005B000000000000000000000000000000000003B
|
||||||
|
:1005C000000000000000000000000000000000002B
|
||||||
|
:1005D000000000000000000000000000000000001B
|
||||||
|
:1005E000000000000000000000000000000000000B
|
||||||
|
:1005F00000000000000000000000000000000000FB
|
||||||
|
:1006000000000000000000000000000000000000EA
|
||||||
|
:1006100000000000000000000000000000000000DA
|
||||||
|
:1006200000000000000000000000000000000000CA
|
||||||
|
:1006300000000000000000000000000000000000BA
|
||||||
|
:1006400000000000000000000000000000000000AA
|
||||||
|
:10065000000000000000000000000000000000009A
|
||||||
|
:10066000000000000000000000000000000000008A
|
||||||
|
:10067000000000000000000000000000000000007A
|
||||||
|
:10068000000000000000000000000000000000006A
|
||||||
|
:10069000000000000000000000000000000000005A
|
||||||
|
:1006A000000000000000000000000000000000004A
|
||||||
|
:1006B000000000000000000000000000000000003A
|
||||||
|
:1006C000000000000000000000000000000000002A
|
||||||
|
:1006D000000000000000000000000000000000001A
|
||||||
|
:1006E000000000000000000000000000000000000A
|
||||||
|
:1006F00000000000000000000000000000000000FA
|
||||||
|
:10070000A220A000A203A0FF2058FFBABD00018DC7
|
||||||
|
:10071000F807290F853D0A0A0A0A852BAA2CFFCF64
|
||||||
|
:1007200020AEC99003A927002000C8C900F001002D
|
||||||
|
:10073000A9018542A62B85436444A90885456446E2
|
||||||
|
:1007400064472CFFCF20DDC94C0108D82058FFBAE0
|
||||||
|
:10075000BD00018DF807290F853D0A0A0A0A852B7D
|
||||||
|
:10076000AA2CFFCF20AEC99004A927801BA9803CEA
|
||||||
|
:1007700083C0F022A542C900F010C901F00FC902E0
|
||||||
|
:10078000F00EC903F00DA90138604CC6C94CDDC993
|
||||||
|
:100790004C4BCA4CC1CA2000C8B0ED80D700000045
|
||||||
|
:1007A0000000000000000000000000000000000049
|
||||||
|
:1007B0000000000000000000000000000000000039
|
||||||
|
:1007C0000000000000000000000000000000000029
|
||||||
|
:1007D0000000000000000000000000000000000019
|
||||||
|
:1007E0000000000000000000000000000000000009
|
||||||
|
:1007F000000000000000000000000000FFFF174B99
|
||||||
:00000001FF
|
:00000001FF
|
||||||
|
|
1959
AppleIISd.lst
1959
AppleIISd.lst
File diff suppressed because it is too large
Load Diff
406
AppleIISd.s
406
AppleIISd.s
|
@ -53,202 +53,6 @@ CD = $40
|
||||||
INITED = $80
|
INITED = $80
|
||||||
|
|
||||||
|
|
||||||
* signature bytes
|
|
||||||
|
|
||||||
LDX #$20
|
|
||||||
LDY #$00
|
|
||||||
LDX #$03
|
|
||||||
LDY #$FF ; neither 5.25 nor Smartport
|
|
||||||
|
|
||||||
* find slot nr
|
|
||||||
|
|
||||||
DO DEBUG
|
|
||||||
LDA #$04
|
|
||||||
STA SLOT
|
|
||||||
LDA #$C4
|
|
||||||
STA CURSLOT
|
|
||||||
LDA #$40
|
|
||||||
|
|
||||||
ELSE
|
|
||||||
JSR $FF58
|
|
||||||
TSX
|
|
||||||
LDA $0100,X
|
|
||||||
STA CURSLOT ; $Cs
|
|
||||||
AND #$0F
|
|
||||||
STA SLOT ; $0s
|
|
||||||
ASL A
|
|
||||||
ASL A
|
|
||||||
ASL A
|
|
||||||
ASL A
|
|
||||||
FIN
|
|
||||||
|
|
||||||
STA SLOT16 ; $s0
|
|
||||||
TAX ; X holds now SLOT16
|
|
||||||
BIT $CFFF
|
|
||||||
JSR CARDDET
|
|
||||||
BCC :INIT
|
|
||||||
LDA #$27 ; no card inserted
|
|
||||||
BRK
|
|
||||||
|
|
||||||
:INIT JSR INIT
|
|
||||||
|
|
||||||
|
|
||||||
********************************
|
|
||||||
*
|
|
||||||
* Install SD card driver
|
|
||||||
*
|
|
||||||
********************************
|
|
||||||
|
|
||||||
DO DEBUG
|
|
||||||
|
|
||||||
* see if slot has a driver already
|
|
||||||
|
|
||||||
LDX $BF31 ; get devcnt
|
|
||||||
INSTALL LDA $BF32,X ; get a devnum
|
|
||||||
AND #$70 ; isolate slot
|
|
||||||
CMP SLOT16 ; slot?
|
|
||||||
BEQ :INSOUT ; yes, skip it
|
|
||||||
DEX
|
|
||||||
BPL INSTALL ; keep up the search
|
|
||||||
|
|
||||||
* restore the devnum to the list
|
|
||||||
|
|
||||||
LDX $BF31 ; get devcnt again
|
|
||||||
CPX #$0D ; device table full?
|
|
||||||
BNE :INST2
|
|
||||||
|
|
||||||
JSR $FF3A ; bell
|
|
||||||
JMP :INSOUT ; do something!
|
|
||||||
|
|
||||||
:INST2 LDA $BF32-1,X ; move all entries down
|
|
||||||
STA $BF32,X ; to make room at front
|
|
||||||
DEX ; for a new entry
|
|
||||||
BNE :INST2
|
|
||||||
LDA #$04 ; ProFile type device
|
|
||||||
ORA SLOT16
|
|
||||||
STA $BF32 ; slot, drive 1 at top of list
|
|
||||||
INC $BF31 ; update devcnt
|
|
||||||
|
|
||||||
* now insert the device driver vector
|
|
||||||
|
|
||||||
LDA SLOT
|
|
||||||
ASL
|
|
||||||
TAX
|
|
||||||
LDA #<DRIVER
|
|
||||||
STA $BF10,X ; write to driver table
|
|
||||||
LDA #>DRIVER
|
|
||||||
STA $BF11,X
|
|
||||||
:INSOUT RTS
|
|
||||||
|
|
||||||
|
|
||||||
********************************
|
|
||||||
*
|
|
||||||
* Boot from SD card
|
|
||||||
*
|
|
||||||
********************************
|
|
||||||
|
|
||||||
ELSE
|
|
||||||
|
|
||||||
BOOT CMP #0 ; check for error
|
|
||||||
BEQ :BOOT1
|
|
||||||
BRK
|
|
||||||
|
|
||||||
:BOOT1 LDA #$01
|
|
||||||
STA DCMD ; load command
|
|
||||||
LDX SLOT16
|
|
||||||
STA $43 ; slot number
|
|
||||||
STZ BUFFER ; buffer lo
|
|
||||||
LDA #$08
|
|
||||||
STA BUFFER+1 ; buffer hi
|
|
||||||
STZ BLOCK ; block lo
|
|
||||||
STZ BLOCK+1 ; block hi
|
|
||||||
BIT $CFFF
|
|
||||||
JSR READ ; call driver
|
|
||||||
JMP $801 ; goto bootloader
|
|
||||||
|
|
||||||
FIN
|
|
||||||
|
|
||||||
|
|
||||||
********************************
|
|
||||||
*
|
|
||||||
* Jump table
|
|
||||||
*
|
|
||||||
********************************
|
|
||||||
|
|
||||||
DRIVER CLD
|
|
||||||
|
|
||||||
DO DEBUG
|
|
||||||
LDA #$04
|
|
||||||
STA SLOT
|
|
||||||
LDA #$C4
|
|
||||||
STA CURSLOT
|
|
||||||
LDA #$40
|
|
||||||
|
|
||||||
ELSE
|
|
||||||
JSR $FF58 ; find slot nr
|
|
||||||
TSX
|
|
||||||
LDA $0100,X
|
|
||||||
STA CURSLOT ; $Cs
|
|
||||||
AND #$0F
|
|
||||||
STA SLOT ; $0s
|
|
||||||
ASL A
|
|
||||||
ASL A
|
|
||||||
ASL A
|
|
||||||
ASL A
|
|
||||||
FIN
|
|
||||||
|
|
||||||
STA SLOT16 ; $s0
|
|
||||||
TAX ; X holds now SLOT16
|
|
||||||
BIT $CFFF
|
|
||||||
JSR CARDDET
|
|
||||||
BCC :INITED
|
|
||||||
LDA #$27 ; no card inserted
|
|
||||||
BRA :DONE
|
|
||||||
|
|
||||||
:INITED LDA #INITED ; check for init
|
|
||||||
BIT SS,X
|
|
||||||
BEQ :INIT
|
|
||||||
|
|
||||||
:CMD LDA DCMD ; get command
|
|
||||||
CMP #0
|
|
||||||
BEQ :STATUS
|
|
||||||
CMP #1
|
|
||||||
BEQ :READ
|
|
||||||
CMP #2
|
|
||||||
BEQ :WRITE
|
|
||||||
CMP #3
|
|
||||||
BEQ :FORMAT
|
|
||||||
DO DEBUG
|
|
||||||
CMP #$FF
|
|
||||||
BEQ :TEST
|
|
||||||
FIN
|
|
||||||
LDA #1 ; unknown command
|
|
||||||
|
|
||||||
:DONE SEC
|
|
||||||
RTS
|
|
||||||
|
|
||||||
:STATUS JMP STATUS
|
|
||||||
:READ JMP READ
|
|
||||||
:WRITE JMP WRITE
|
|
||||||
:FORMAT JMP FORMAT
|
|
||||||
:INIT JSR INIT
|
|
||||||
BCS :DONE ; init failure
|
|
||||||
BRA :CMD
|
|
||||||
|
|
||||||
DO DEBUG
|
|
||||||
:TEST JMP TEST ; do device test
|
|
||||||
FIN
|
|
||||||
|
|
||||||
|
|
||||||
* Signature bytes
|
|
||||||
|
|
||||||
DS \ ; fill with zeroes
|
|
||||||
DS -4 ; locate to $xxFC
|
|
||||||
DW $FFFF ; 65535 blocks
|
|
||||||
DB $17 ; Status bits
|
|
||||||
DB #<DRIVER ; LSB of driver
|
|
||||||
|
|
||||||
|
|
||||||
********************************
|
********************************
|
||||||
*
|
*
|
||||||
* Initialize SD card
|
* Initialize SD card
|
||||||
|
@ -870,3 +674,213 @@ ACMD4140 HEX 694000
|
||||||
ACMD410 HEX 690000
|
ACMD410 HEX 690000
|
||||||
HEX 0000FF
|
HEX 0000FF
|
||||||
|
|
||||||
|
|
||||||
|
********************************
|
||||||
|
*
|
||||||
|
* This region is mapped to
|
||||||
|
* the $CsXX space. On the ROM
|
||||||
|
* it must appear at address $700
|
||||||
|
*
|
||||||
|
********************************
|
||||||
|
|
||||||
|
DO DEBUG-1
|
||||||
|
DS \
|
||||||
|
DS $400
|
||||||
|
ERR *-1/$CF00 ; must be at $CF00
|
||||||
|
FIN
|
||||||
|
|
||||||
|
* signature bytes
|
||||||
|
|
||||||
|
START LDX #$20
|
||||||
|
LDY #$00
|
||||||
|
LDX #$03
|
||||||
|
LDY #$FF ; neither 5.25 nor Smartport
|
||||||
|
|
||||||
|
* find slot nr
|
||||||
|
|
||||||
|
DO DEBUG
|
||||||
|
LDA #$04
|
||||||
|
STA SLOT
|
||||||
|
LDA #$C4
|
||||||
|
STA CURSLOT
|
||||||
|
LDA #$40
|
||||||
|
|
||||||
|
ELSE
|
||||||
|
JSR $FF58
|
||||||
|
TSX
|
||||||
|
LDA $0100,X
|
||||||
|
STA CURSLOT ; $Cs
|
||||||
|
AND #$0F
|
||||||
|
STA SLOT ; $0s
|
||||||
|
ASL A
|
||||||
|
ASL A
|
||||||
|
ASL A
|
||||||
|
ASL A
|
||||||
|
FIN
|
||||||
|
|
||||||
|
STA SLOT16 ; $s0
|
||||||
|
TAX ; X holds now SLOT16
|
||||||
|
BIT $CFFF
|
||||||
|
JSR CARDDET
|
||||||
|
BCC :INIT
|
||||||
|
LDA #$27 ; no card inserted
|
||||||
|
BRK
|
||||||
|
|
||||||
|
:INIT JSR INIT
|
||||||
|
|
||||||
|
|
||||||
|
********************************
|
||||||
|
*
|
||||||
|
* Install SD card driver
|
||||||
|
*
|
||||||
|
********************************
|
||||||
|
|
||||||
|
DO DEBUG
|
||||||
|
|
||||||
|
* see if slot has a driver already
|
||||||
|
|
||||||
|
LDX $BF31 ; get devcnt
|
||||||
|
INSTALL LDA $BF32,X ; get a devnum
|
||||||
|
AND #$70 ; isolate slot
|
||||||
|
CMP SLOT16 ; slot?
|
||||||
|
BEQ :INSOUT ; yes, skip it
|
||||||
|
DEX
|
||||||
|
BPL INSTALL ; keep up the search
|
||||||
|
|
||||||
|
* restore the devnum to the list
|
||||||
|
|
||||||
|
LDX $BF31 ; get devcnt again
|
||||||
|
CPX #$0D ; device table full?
|
||||||
|
BNE :INST2
|
||||||
|
|
||||||
|
JSR $FF3A ; bell
|
||||||
|
JMP :INSOUT ; do something!
|
||||||
|
|
||||||
|
:INST2 LDA $BF32-1,X ; move all entries down
|
||||||
|
STA $BF32,X ; to make room at front
|
||||||
|
DEX ; for a new entry
|
||||||
|
BNE :INST2
|
||||||
|
LDA #$04 ; ProFile type device
|
||||||
|
ORA SLOT16
|
||||||
|
STA $BF32 ; slot, drive 1 at top of list
|
||||||
|
INC $BF31 ; update devcnt
|
||||||
|
|
||||||
|
* now insert the device driver vector
|
||||||
|
|
||||||
|
LDA SLOT
|
||||||
|
ASL
|
||||||
|
TAX
|
||||||
|
LDA #<DRIVER
|
||||||
|
STA $BF10,X ; write to driver table
|
||||||
|
LDA #>DRIVER
|
||||||
|
STA $BF11,X
|
||||||
|
:INSOUT RTS
|
||||||
|
|
||||||
|
|
||||||
|
********************************
|
||||||
|
*
|
||||||
|
* Boot from SD card
|
||||||
|
*
|
||||||
|
********************************
|
||||||
|
|
||||||
|
ELSE
|
||||||
|
|
||||||
|
BOOT CMP #0 ; check for error
|
||||||
|
BEQ :BOOT1
|
||||||
|
BRK
|
||||||
|
|
||||||
|
:BOOT1 LDA #$01
|
||||||
|
STA DCMD ; load command
|
||||||
|
LDX SLOT16
|
||||||
|
STA $43 ; slot number
|
||||||
|
STZ BUFFER ; buffer lo
|
||||||
|
LDA #$08
|
||||||
|
STA BUFFER+1 ; buffer hi
|
||||||
|
STZ BLOCK ; block lo
|
||||||
|
STZ BLOCK+1 ; block hi
|
||||||
|
BIT $CFFF
|
||||||
|
JSR READ ; call driver
|
||||||
|
JMP $801 ; goto bootloader
|
||||||
|
|
||||||
|
FIN
|
||||||
|
|
||||||
|
|
||||||
|
********************************
|
||||||
|
*
|
||||||
|
* Jump table
|
||||||
|
*
|
||||||
|
********************************
|
||||||
|
|
||||||
|
DRIVER CLD
|
||||||
|
|
||||||
|
DO DEBUG
|
||||||
|
LDA #$04
|
||||||
|
STA SLOT
|
||||||
|
LDA #$C4
|
||||||
|
STA CURSLOT
|
||||||
|
LDA #$40
|
||||||
|
|
||||||
|
ELSE
|
||||||
|
JSR $FF58 ; find slot nr
|
||||||
|
TSX
|
||||||
|
LDA $0100,X
|
||||||
|
STA CURSLOT ; $Cs
|
||||||
|
AND #$0F
|
||||||
|
STA SLOT ; $0s
|
||||||
|
ASL A
|
||||||
|
ASL A
|
||||||
|
ASL A
|
||||||
|
ASL A
|
||||||
|
FIN
|
||||||
|
|
||||||
|
STA SLOT16 ; $s0
|
||||||
|
TAX ; X holds now SLOT16
|
||||||
|
BIT $CFFF
|
||||||
|
JSR CARDDET
|
||||||
|
BCC :INITED
|
||||||
|
LDA #$27 ; no card inserted
|
||||||
|
BRA :DONE
|
||||||
|
|
||||||
|
:INITED LDA #INITED ; check for init
|
||||||
|
BIT SS,X
|
||||||
|
BEQ :INIT
|
||||||
|
|
||||||
|
:CMD LDA DCMD ; get command
|
||||||
|
CMP #0
|
||||||
|
BEQ :STATUS
|
||||||
|
CMP #1
|
||||||
|
BEQ :READ
|
||||||
|
CMP #2
|
||||||
|
BEQ :WRITE
|
||||||
|
CMP #3
|
||||||
|
BEQ :FORMAT
|
||||||
|
DO DEBUG
|
||||||
|
CMP #$FF
|
||||||
|
BEQ :TEST
|
||||||
|
FIN
|
||||||
|
LDA #1 ; unknown command
|
||||||
|
|
||||||
|
:DONE SEC
|
||||||
|
RTS
|
||||||
|
|
||||||
|
:STATUS JMP STATUS
|
||||||
|
:READ JMP READ
|
||||||
|
:WRITE JMP WRITE
|
||||||
|
:FORMAT JMP FORMAT
|
||||||
|
:INIT JSR INIT
|
||||||
|
BCS :DONE ; init failure
|
||||||
|
BRA :CMD
|
||||||
|
|
||||||
|
DO DEBUG
|
||||||
|
:TEST JMP TEST ; do device test
|
||||||
|
FIN
|
||||||
|
|
||||||
|
|
||||||
|
* Signature bytes
|
||||||
|
|
||||||
|
DS \ ; fill with zeroes
|
||||||
|
DS -4 ; locate to $xxFC
|
||||||
|
DW $FFFF ; 65535 blocks
|
||||||
|
DB $17 ; Status bits
|
||||||
|
DB #<DRIVER ; LSB of driver
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user