mirror of
https://github.com/A2osX/A2osX.git
synced 2025-01-12 17:30:23 +00:00
ProDOS.FX:Added .PM modules support & bugfixes for 40/80 col display
This commit is contained in:
parent
0102a1c1e0
commit
6d85a16ad1
Binary file not shown.
Binary file not shown.
BIN
.Floppies/ProDOSFX.BOOT.po
Normal file
BIN
.Floppies/ProDOSFX.BOOT.po
Normal file
Binary file not shown.
@ -3,11 +3,7 @@ NEW
|
||||
.LIST OFF
|
||||
*--------------------------------------
|
||||
CC.DECL jsr CC.IsLetter
|
||||
bcc .10
|
||||
|
||||
* TODO: PREOPS ++ --.....
|
||||
|
||||
bcs .90
|
||||
bcs .80
|
||||
|
||||
.10 >LDYA L.CC.SCSPEC
|
||||
jsr CC.LookupID
|
||||
@ -16,7 +12,7 @@ CC.DECL jsr CC.IsLetter
|
||||
* TODO: typedef ....
|
||||
|
||||
bcs .90
|
||||
*--------------------------------------
|
||||
|
||||
.20 >LDYA L.CC.TYPEQUAL
|
||||
jsr CC.LookupID
|
||||
bcs .80
|
||||
@ -36,9 +32,30 @@ CC.DECL jsr CC.IsLetter
|
||||
.21 jsr CC.SYM.New Y,A=T/Q, add with undef value...
|
||||
bcs .99
|
||||
|
||||
jsr CC.SYM.Store
|
||||
bcs .99
|
||||
|
||||
* TODO: AOPS
|
||||
|
||||
cmp #'='
|
||||
bne .90
|
||||
|
||||
jsr CC.GetNextCharNB skip '='
|
||||
bcs .99
|
||||
|
||||
jsr CC.SYM.GetTypeInYA expected T/Q
|
||||
jsr CC.EXP.Eval
|
||||
bcs .99
|
||||
|
||||
jsr CC.SYM.PopValue Y,A = T/Q, Set value to this var
|
||||
.29 bcs .99
|
||||
|
||||
|
||||
jsr CC.SYM.FreeBuf
|
||||
|
||||
clv
|
||||
clc
|
||||
rts
|
||||
|
||||
.80 bit #$60
|
||||
clc
|
||||
|
@ -2,6 +2,59 @@ NEW
|
||||
AUTO 3,1
|
||||
.LIST OFF
|
||||
*--------------------------------------
|
||||
CC.STMT jsr CC.SYM.Lookup var= or func() ?
|
||||
bcs .80
|
||||
|
||||
ldy #SYM.Q
|
||||
lda (ZPSymBufPtr),y
|
||||
bit #SYM.Q.FUNC
|
||||
bne .20
|
||||
|
||||
jsr CC.GetCharNB var = ?
|
||||
bcs .90
|
||||
|
||||
* TODO: AOPS
|
||||
|
||||
cmp #'='
|
||||
bne .90
|
||||
|
||||
jsr CC.GetNextChar Skip =
|
||||
bcs .99
|
||||
|
||||
jsr CC.SYM.GetTypeInYA
|
||||
jsr CC.EXP.Eval
|
||||
bcs .99
|
||||
|
||||
jsr CC.SYM.PopValue
|
||||
bcs .99
|
||||
|
||||
jsr CC.SYM.FreeBufPop
|
||||
|
||||
|
||||
clv
|
||||
clc
|
||||
rts
|
||||
|
||||
|
||||
.20 ldy #0 func( ... );
|
||||
lda #0
|
||||
jsr CC.F.CallNoRetV
|
||||
bcs .9
|
||||
|
||||
jsr CC.SYM.FreeBufPop
|
||||
|
||||
clv
|
||||
clc
|
||||
rts
|
||||
|
||||
.80 bit #$60
|
||||
clc
|
||||
rts
|
||||
|
||||
.90 lda #E.CSYN
|
||||
sec
|
||||
.99 rts
|
||||
*--------------------------------------
|
||||
* X = KW.ID
|
||||
*--------------------------------------
|
||||
CC.STMT.CPStmt lda LocalPtr Locals
|
||||
|
@ -3,136 +3,87 @@ NEW
|
||||
*--------------------------------------
|
||||
ILDR.START jsr MLI check for file 'atinit'
|
||||
.DA #MLIGETFILEINFO
|
||||
.DA gfi_list
|
||||
bcc gfi_ok branch if 'atinit' file found
|
||||
.DA ILDR.GFINFO
|
||||
bcs ILDR.ENUMPM
|
||||
|
||||
cmp #MLI.E.FNOTFND
|
||||
beq ILDR.SYSTEM if so, continue loading interpreter
|
||||
|
||||
ATINIT.KO jmp badatinit
|
||||
|
||||
gfi_ok lda gfi_type
|
||||
lda ILDR.GFINFO+S.FI.T
|
||||
cmp #$E2 is 'atinit' correct file type?
|
||||
bne ATINIT.KO error - wrong file type
|
||||
bne ILDR.ENUMPM error - wrong file type
|
||||
|
||||
jsr MLI open 'atinit' file
|
||||
.DA #MLIOPEN
|
||||
.DA atopen
|
||||
bne ATINIT.KO error
|
||||
ldy #ILDR.ATINIT
|
||||
lda /ILDR.ATINIT
|
||||
jsr ILDR.LoadFile
|
||||
bcc .1
|
||||
|
||||
lda #$9F max size = 39.75k ($2000-$BF00)
|
||||
sta rdlen+1
|
||||
stz rdlen
|
||||
jmp ILDR.MLIERR
|
||||
|
||||
jsr MLI read 'atinit' file to 'sysentry'
|
||||
.DA #MLIREAD
|
||||
.DA rdparm
|
||||
bne ATINIT.KO error - too big
|
||||
|
||||
jsr MLI close 'atinit' file
|
||||
.DA #MLICLOSE
|
||||
.DA clparm
|
||||
bne ATINIT.KO error
|
||||
|
||||
lda RROMBNK2 enable ROM
|
||||
.1 lda RROMBNK2 enable ROM
|
||||
jsr sysentry execute ATinit
|
||||
*--------------------------------------
|
||||
ILDR.SYSTEM lda /dbuf search directory buffer
|
||||
sta idxl+1
|
||||
lda #$04 start 1 entry past header
|
||||
bne H2434 always.
|
||||
* BOOT block read 4 directory blocks at dbuf=$C00 -> $13FF
|
||||
*--------------------------------------
|
||||
ILDR.ENUMPM .DO PM
|
||||
|
||||
H2432 lda idxl calc next entry position
|
||||
H2434 clc
|
||||
adc dbuf+35 inc to next entry address
|
||||
sta idxl
|
||||
bcs H2451 branch if page cross.
|
||||
adc dbuf+35 test for end of block.
|
||||
bcc H2453 branch if not page cross
|
||||
lda idxl+1
|
||||
lsr end of block?
|
||||
bcc H2453 no.
|
||||
cmp #$09 end of directory?
|
||||
bne H244D no.
|
||||
jmp nointrp no interpreter, go quit.
|
||||
jsr ILDR.EnumInit
|
||||
|
||||
H244D lda #$04 reset index to 1st entry in next block.
|
||||
sta idxl
|
||||
H2451 inc idxl+1 inc to next page.
|
||||
H2453 ldy #$10 check file type.
|
||||
lda #$FF must be a prodos sys file
|
||||
eor (idxl),y
|
||||
bne H2432 if not sys.
|
||||
.1 ldx #S.FI.T.BIN
|
||||
ldy #ILDR.KMSFX
|
||||
lda /ILDR.KMSFX
|
||||
jsr ILDR.EnumNext
|
||||
bcs .4
|
||||
|
||||
tay see if active
|
||||
lda (idxl),y
|
||||
beq H2432 if deleted file.
|
||||
jsr ILDR.LoadFilePBuf
|
||||
bcs ILDR.MLIERR
|
||||
|
||||
and #$0F strip file 'kind'.
|
||||
sta pbuf save length of name.
|
||||
cmp #$08 must be at least 'x.system'
|
||||
bcc H2432 else, ignore it.
|
||||
|
||||
tay compare last 7 chars for '.system'
|
||||
ldx #$06
|
||||
|
||||
H246C lda (idxl),y
|
||||
eor iterp,x
|
||||
asl ignore bit 7
|
||||
bne H2432 branch if something else
|
||||
|
||||
dey
|
||||
dex
|
||||
bpl H246C
|
||||
|
||||
ldy #$00
|
||||
|
||||
H247A iny
|
||||
lda (idxl),y
|
||||
sta pbuf,y
|
||||
cpy pbuf
|
||||
bne H247A
|
||||
|
||||
jsr MLI open interpreter file
|
||||
.DA #$C8
|
||||
.DA opparm
|
||||
bne badlod
|
||||
|
||||
jsr MLI get eof (length of file)
|
||||
.DA #$D1
|
||||
.DA efparm
|
||||
bne badlod
|
||||
|
||||
lda eof+2
|
||||
bne toolong
|
||||
|
||||
lda eof+1
|
||||
cmp #$9F max size = 39.75k ($2000-$BF00)
|
||||
bcs toolong
|
||||
|
||||
sta rdlen+1
|
||||
lda eof
|
||||
sta rdlen (read entire file)
|
||||
|
||||
jsr MLI read interpreter file
|
||||
.DA #$CA
|
||||
.DA rdparm
|
||||
beq H24C8 go close if successfully read.
|
||||
|
||||
cmp #$56 memory conflict?
|
||||
beq toolong then too large
|
||||
bne badlod else, unable to load.
|
||||
|
||||
H24C8 jsr MLI close interpreter file
|
||||
.DA #$CC
|
||||
.DA clparm
|
||||
bne badlod hopefully never taken
|
||||
|
||||
lda RROMBNK2 enable ROM
|
||||
ldx #3
|
||||
|
||||
sta CLR80DISP
|
||||
sta CLR80STORE
|
||||
.2 lda idxl,x
|
||||
pha
|
||||
dex
|
||||
bpl .2
|
||||
|
||||
jsr sysentry
|
||||
|
||||
bit RROMBNK2 enable ROM
|
||||
|
||||
ldx #0
|
||||
|
||||
.3 pla
|
||||
sta idxl,x
|
||||
inx
|
||||
cpx #4
|
||||
bne .3
|
||||
|
||||
>DEBUGOA
|
||||
|
||||
bra .1
|
||||
|
||||
.FIN
|
||||
*--------------------------------------
|
||||
.4 jsr ILDR.EnumInit
|
||||
|
||||
ldx #S.FI.T.SYS
|
||||
ldy #ILDR.SYSTEMSFX
|
||||
lda /ILDR.SYSTEMSFX
|
||||
jsr ILDR.EnumNext
|
||||
bcs .9
|
||||
|
||||
jsr ILDR.LoadFilePBuf
|
||||
bcs ILDR.MLIERR
|
||||
|
||||
bit RROMBNK2 enable ROM
|
||||
|
||||
bit RDIOUDIS
|
||||
sta SETIOUDIS
|
||||
sta CLRDHIRES
|
||||
bmi .5
|
||||
|
||||
sta CLRIOUDIS
|
||||
|
||||
.5 sta CLR80DISP
|
||||
sta CLR80STORE
|
||||
sta SETTEXT
|
||||
sta CLRMIXED
|
||||
jsr init
|
||||
jsr setvid
|
||||
jsr setkbd
|
||||
@ -140,94 +91,265 @@ H24C8 jsr MLI close interpreter file
|
||||
|
||||
jmp sysentry go run interpreter
|
||||
|
||||
nointrp jsr MLI no interpreter found,so quit.
|
||||
.DA #$65
|
||||
.DA quitparm
|
||||
|
||||
badatinit ldy #6
|
||||
|
||||
.1 lda atinitname,y
|
||||
sta pbuf,y
|
||||
dey
|
||||
bpl .1
|
||||
|
||||
badlod ldx #ILDR.MSG.SYSLOADERR-ILDR.MSG
|
||||
.HS 2C BIT ABS
|
||||
|
||||
toolong ldx #ILDR.MSG.SYSTOOLARG-ILDR.MSG
|
||||
jsr ILDR.PrintX
|
||||
|
||||
ldy #0
|
||||
|
||||
.1 iny
|
||||
lda pbuf,y
|
||||
jsr COUT
|
||||
cpy pbuf
|
||||
.9 jsr MLI no .SYSTEM found, so quit.
|
||||
.DA #MLIQUIT
|
||||
.DA ILDR.QUIT
|
||||
*--------------------------------------
|
||||
ILDR.MLIERR cmp #MLI.E.BADBUF
|
||||
bne .1
|
||||
|
||||
bra *
|
||||
*--------------------------------------
|
||||
ILDR.PrintX bit RROMBNK2
|
||||
lda INVFLG
|
||||
pha
|
||||
ldx #ILDR.MSG.SYSTOOLARG-ILDR.MSG
|
||||
|
||||
.HS 2C BIT ABS
|
||||
.1 ldx #ILDR.MSG.SYSLOADERR-ILDR.MSG
|
||||
|
||||
bit RROMBNK2
|
||||
jsr SETINV
|
||||
|
||||
.1 lda ILDR.MSG,x
|
||||
.2 lda ILDR.MSG,x
|
||||
pha
|
||||
ora #$80
|
||||
jsr COUT
|
||||
inx
|
||||
pla
|
||||
bpl .1
|
||||
|
||||
bpl .2
|
||||
|
||||
lda #$A0
|
||||
jsr COUT
|
||||
|
||||
pla
|
||||
sta INVFLG
|
||||
|
||||
ldy #0
|
||||
|
||||
.3 iny
|
||||
lda pbuf,y
|
||||
jsr COUT
|
||||
cpy pbuf
|
||||
bne .3
|
||||
|
||||
bra *
|
||||
*--------------------------------------
|
||||
ILDR.EnumInit lda /dbuf search directory buffer
|
||||
sta idxl+1
|
||||
lda #dbuf+4 skip Prev/next Block Ptr
|
||||
sta idxl
|
||||
|
||||
lda dbuf+35 EL
|
||||
sta ILDR.EL
|
||||
|
||||
lda dbuf+36 EPB
|
||||
sta ILDR.EPB
|
||||
sta ILDR.EITB
|
||||
|
||||
lda dbuf+37 FCLO
|
||||
eor #$ff
|
||||
sta ILDR.nFC
|
||||
|
||||
lda dbuf+38 FCHI
|
||||
eor #$ff
|
||||
sta ILDR.nFC+1
|
||||
|
||||
ILDR.EnumInit.RTS
|
||||
rts
|
||||
*--------------------------------------
|
||||
ILDR.MSG .EQ *
|
||||
* X = expected FileType
|
||||
* Y,A = expected suffix
|
||||
*--------------------------------------
|
||||
ILDR.EnumNext stx ILDR.FT
|
||||
sty src
|
||||
sta src+1
|
||||
|
||||
.1 inc ILDR.nFC
|
||||
bne .2
|
||||
|
||||
inc ILDR.nFC+1
|
||||
sec
|
||||
beq ILDR.EnumInit.RTS
|
||||
|
||||
.2 dec ILDR.EITB
|
||||
beq .3
|
||||
|
||||
lda idxl
|
||||
clc
|
||||
adc ILDR.EL
|
||||
sta idxl
|
||||
bcc .4 same page
|
||||
|
||||
inc idxl+1 512b block, 2nd page
|
||||
bra .4
|
||||
|
||||
.3 inc idxl+1
|
||||
lda idxl+1
|
||||
cmp #$14 last block read at $0C00-$13FF
|
||||
bcs ILDR.EnumInit.RTS
|
||||
|
||||
lda #4
|
||||
sta idxl
|
||||
|
||||
lda ILDR.EPB
|
||||
sta ILDR.EITB
|
||||
|
||||
.4 lda (idxl)
|
||||
beq .2 deleted / empty
|
||||
|
||||
bmi .1 $D, $E, or $F...
|
||||
|
||||
and #$0F
|
||||
sta pbuf filename Len
|
||||
|
||||
tay
|
||||
|
||||
.5 lda (idxl),y
|
||||
sta pbuf,y
|
||||
dey
|
||||
bne .5
|
||||
|
||||
ldy #16
|
||||
lda (idxl),y
|
||||
|
||||
cmp ILDR.FT expected file type
|
||||
bne .1
|
||||
|
||||
lda (src) expected suffix len
|
||||
cmp pbuf
|
||||
bcs .1 filename LE suffix
|
||||
|
||||
tay
|
||||
ldx pbuf
|
||||
|
||||
.11 lda pbuf,x
|
||||
eor (src),y
|
||||
asl
|
||||
bne .1
|
||||
|
||||
dex
|
||||
dey
|
||||
bne .11
|
||||
|
||||
ldy #$1D MIN_VERSION
|
||||
lda (idxl),y
|
||||
bpl .10 no lowercase information
|
||||
|
||||
ldx pbuf
|
||||
|
||||
.6 cpx #8 CS if MIN_VERSION to use
|
||||
bcs .7
|
||||
|
||||
ldy #$1D MIN_VERSION
|
||||
lda (idxl),y
|
||||
and ILDR.LCBits,x
|
||||
bne .8
|
||||
|
||||
bra .9
|
||||
|
||||
.7 ldy #$1C VERSION
|
||||
lda (idxl),y
|
||||
|
||||
and ILDR.LCBits-8,x
|
||||
beq .9
|
||||
|
||||
.8 lda pbuf,x
|
||||
eor #$20 to lowercase
|
||||
sta pbuf,x
|
||||
|
||||
.9 dex
|
||||
bne .6
|
||||
|
||||
.10 clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
ILDR.LoadFilePBuf
|
||||
ldy #pbuf
|
||||
lda /pbuf
|
||||
|
||||
ILDR.LoadFile sty ILDR.OPEN+1 Filename
|
||||
sta ILDR.OPEN+2
|
||||
|
||||
jsr MLI
|
||||
.DA #MLIOPEN
|
||||
.DA ILDR.OPEN
|
||||
bcs .9
|
||||
|
||||
jsr MLI
|
||||
.DA #MLIGETEOF
|
||||
.DA ILDR.GETEOF
|
||||
bcs .9
|
||||
|
||||
lda ILDR.GETEOF+4
|
||||
bne .99
|
||||
|
||||
lda ILDR.GETEOF+3
|
||||
cmp #$9F
|
||||
bcc .1
|
||||
|
||||
bne .99 more than $9Fxx
|
||||
|
||||
lda ILDR.GETEOF+2
|
||||
bne .99 more than $9F00
|
||||
|
||||
.1 jsr MLI
|
||||
.DA #MLIREAD
|
||||
.DA ILDR.READ
|
||||
bcs .9
|
||||
|
||||
jsr MLI
|
||||
.DA #MLICLOSE
|
||||
.DA ILDR.CLOSE
|
||||
|
||||
.9 rts
|
||||
|
||||
.99 lda #MLI.E.BADBUF
|
||||
sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
ILDR.MSG .EQ *
|
||||
ILDR.MSG.SYSLOADERR .AT "Unable to load"
|
||||
ILDR.MSG.SYSTOOLARG .AT "Too Large"
|
||||
ILDR.LCBits .HS 8040201008040201
|
||||
*--------------------------------------
|
||||
gfi_list .DA #$0A
|
||||
.DA atinitname
|
||||
.HS 00
|
||||
gfi_type .HS 00000000
|
||||
.HS 0000000000000000
|
||||
.HS 0000
|
||||
ILDR.GFINFO .DA #10 PARAM CNT
|
||||
.DA ILDR.ATINIT
|
||||
.BS S.FI-3
|
||||
*--------------------------------------
|
||||
atopen .HS 03
|
||||
.DA atinitname
|
||||
ILDR.OPEN .DA #3 PARAM CNT
|
||||
.BS 2 Filename
|
||||
.DA iobuf i/o buffer
|
||||
.HS 01 ref# hard coded since no other files
|
||||
.HS 01 REF
|
||||
*--------------------------------------
|
||||
atinitname .DA #06 length of name
|
||||
.AS "ATINIT" name of appletalk config file
|
||||
ILDR.GETEOF .DA #2 PARAM CNT
|
||||
.DA #01 REF
|
||||
.HS 000000
|
||||
*--------------------------------------
|
||||
opparm .HS 03
|
||||
.DA pbuf
|
||||
.DA iobuf
|
||||
.HS 01
|
||||
efparm .HS 02
|
||||
.DA #01
|
||||
eof .HS 000000 length of file.
|
||||
rdparm .HS 04
|
||||
.HS 01
|
||||
ILDR.READ .DA #4 PARAM CNT
|
||||
.HS 01 REF
|
||||
.DA sysentry
|
||||
rdlen .HS 0000
|
||||
.DA $9F00 Max file size
|
||||
.HS 0000
|
||||
clparm .HS 01
|
||||
.HS 00
|
||||
quitparm .HS 04
|
||||
*--------------------------------------
|
||||
ILDR.CLOSE .DA #1 PARAM CNT
|
||||
.HS 01 REF
|
||||
*--------------------------------------
|
||||
ILDR.QUIT .DA #4 PARAM CNT
|
||||
.HS 00
|
||||
.HS 0000
|
||||
.HS 00
|
||||
.HS 0000
|
||||
iterp .AS ".SYSTEM" interpreter suffix that is required
|
||||
*--------------------------------------
|
||||
ILDR.ATINIT .DA #6
|
||||
.AS "ATINIT"
|
||||
ILDR.KMSFX .DA #3
|
||||
.AS ".PM"
|
||||
ILDR.SYSTEMSFX .DA #7
|
||||
.AS ".SYSTEM"
|
||||
*--------------------------------------
|
||||
ILDR.LEN .EQ *-ILDR.START
|
||||
*--------------------------------------
|
||||
.DUMMY
|
||||
ILDR.EPB .BS 1
|
||||
ILDR.EL .BS 1
|
||||
ILDR.nFC .BS 2
|
||||
ILDR.FT .BS 1
|
||||
ILDR.EITB .BS 1
|
||||
.ED
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE usr/src/prodos.fx/prodos.s.ildr
|
||||
LOAD usr/src/prodos.fx/prodos.s
|
||||
|
@ -330,7 +330,9 @@ LDR.ReadRoot lda LDR.MLIOL.P+1 place boot devnum in globals
|
||||
bcc .1 if ok, read next block.
|
||||
.FIN
|
||||
|
||||
.8 jmp $800 jmp to "load interpreter" code
|
||||
.8 jsr CROUT
|
||||
|
||||
jmp ILDR.START
|
||||
|
||||
.9 ldx #LDR.MSG.ROOTERR
|
||||
jsr LDR.PrintX
|
||||
@ -987,7 +989,7 @@ LDR.SetDevID ldy #$FE check attributes byte.
|
||||
sta devid
|
||||
rts
|
||||
*--------------------------------------
|
||||
LDR.Scr80Init phx Save MDR.MSG
|
||||
LDR.Scr80Init phx Save LDR.MSG
|
||||
|
||||
jsr LDR.IsIIc
|
||||
bcs LDR.Scr80Init2
|
||||
@ -1022,9 +1024,12 @@ LDR.Scr80Init2 lda #$8C Reset 80 col screen ($0C:HOME)
|
||||
jsr setnorm
|
||||
jsr home
|
||||
jsr SETINV
|
||||
|
||||
.DO LOGO
|
||||
lda #20
|
||||
sta CV
|
||||
inc
|
||||
sta WNDTOP
|
||||
jsr VTAB
|
||||
|
||||
lda #LOGO.PAKED
|
||||
@ -1143,13 +1148,14 @@ LDR.Scr80Init2 lda #$8C Reset 80 col screen ($0C:HOME)
|
||||
bne .1
|
||||
|
||||
.FIN
|
||||
|
||||
jsr CLREOL
|
||||
jsr setnorm
|
||||
|
||||
ldx #LDR.MSG.PRODOS
|
||||
jsr LDR.PrintX
|
||||
|
||||
plx MDR.MSG.machine type
|
||||
plx get back LDR.MSG.machine type
|
||||
*--------------------------------------
|
||||
LDR.PrintX bit RROMBNK2
|
||||
|
||||
|
@ -10,6 +10,7 @@ ENHFILENAME .EQ 1
|
||||
LOWERCASE .EQ 1
|
||||
ACL .EQ 1
|
||||
LOGO .EQ 1
|
||||
PM .EQ 1
|
||||
*--------------------------------------
|
||||
XRWDBG .EQ 0
|
||||
*--------------------------------------
|
||||
|
@ -4,6 +4,7 @@ NEW
|
||||
.OP 65C02
|
||||
.OR $2000
|
||||
.TF sys/km/km.ramworks
|
||||
* .TF ramworks.pm
|
||||
*--------------------------------------
|
||||
.INB inc/macros.i
|
||||
.INB inc/io.i
|
||||
@ -15,10 +16,11 @@ TmpPtr1 .EQ $0
|
||||
TmpPtr2 .EQ $2
|
||||
Type .EQ $4
|
||||
*--------------------------------------
|
||||
RW.SAVEZP0 .EQ $800
|
||||
RW.SAVEZP1 .EQ $900
|
||||
RW.SAVEZP0 .EQ $2800
|
||||
RW.SAVEZP1 .EQ $2900
|
||||
*--------------------------------------
|
||||
RW.BLOCK .EQ $A00
|
||||
RW.BLOCK .EQ $2A00
|
||||
RW.ONLINEBUFFER .EQ $2C00
|
||||
*--------------------------------------
|
||||
* A2OSX.SYSTEM relocated at $1000 !!!
|
||||
*--------------------------------------
|
||||
@ -27,14 +29,25 @@ RWBankSelect .EQ $C073
|
||||
*--------------------------------------
|
||||
RW.Init >LDYAI RW.MSG
|
||||
jsr PrintFYA
|
||||
jsr RW.DetectRAM3
|
||||
bcs .10
|
||||
|
||||
>LDYAI RW.MSG.OK
|
||||
jsr RW.CheckRAM3
|
||||
bcs .5
|
||||
|
||||
>LDYAI RW.MSG.RAM3OK
|
||||
jsr PrintFYA
|
||||
rts
|
||||
|
||||
.10 lda #RWBankSelect
|
||||
.5 jsr RW.DisableRAM
|
||||
bcc .10
|
||||
|
||||
>LDYAI RW.MSG.RAMDISKO
|
||||
jsr PrintFYA
|
||||
rts
|
||||
|
||||
.10 >LDYAI RW.MSG.RAMDISOK
|
||||
jsr PrintFYA
|
||||
|
||||
lda #RWBankSelect
|
||||
jsr RW.DetectHW
|
||||
bcc .1
|
||||
|
||||
@ -95,15 +108,80 @@ RW.Init >LDYAI RW.MSG
|
||||
.9 jsr PrintFYA
|
||||
rts
|
||||
*--------------------------------------
|
||||
RW.DetectRAM3 jsr MLI
|
||||
.DA #MLIONLINE
|
||||
.DA RW.ONLINE
|
||||
RW.CheckRAM3 jsr RW.ONLINE MLI Online at S3D2
|
||||
bcs .9
|
||||
|
||||
lda RW.ONLINEBUFFER
|
||||
and #$0F
|
||||
|
||||
cmp #4 'RAM3' ?
|
||||
sec
|
||||
bne .9
|
||||
|
||||
tax
|
||||
|
||||
.1 lda RW.ONLINEBUFFER,x
|
||||
eor RW.MSG.RAM3OK,x
|
||||
asl ignore b7
|
||||
bne .9
|
||||
|
||||
dex
|
||||
bne .1
|
||||
|
||||
clc
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
RW.DisableRAM lda DEVPTRS3D2
|
||||
cmp DEVPTRS S0D1=NOVEV
|
||||
bne .1
|
||||
|
||||
lda DEVPTRS3D2+1
|
||||
cmp DEVPTRS+1 S0D1=NODEV
|
||||
beq .8 S3D2=NODEV, nothing to do
|
||||
|
||||
.1 ldx DEVCNT
|
||||
|
||||
.2 lda DEVLST,x LOOKING FOR $BF, $BB, $B7, $B3
|
||||
and #$F3
|
||||
cmp #$B3
|
||||
beq .3
|
||||
|
||||
dex
|
||||
bpl .2
|
||||
|
||||
sec No device found, exit with error
|
||||
rts
|
||||
|
||||
.3 cpx DEVCNT
|
||||
beq .5
|
||||
|
||||
.4 lda DEVLST+1,x
|
||||
sta DEVLST,x
|
||||
inx
|
||||
cpx DEVCNT
|
||||
bne .4
|
||||
|
||||
.5 ldx DEVCNT
|
||||
stz DEVLST,x
|
||||
dec DEVCNT
|
||||
lda DEVPTRS
|
||||
sta DEVPTRS3D2
|
||||
lda DEVPTRS+1
|
||||
sta DEVPTRS3D2+1
|
||||
|
||||
jsr RW.ONLINE
|
||||
|
||||
.8 clc Success!!
|
||||
rts
|
||||
*--------------------------------------
|
||||
RW.ONLINE .DA #2
|
||||
RW.ONLINE jsr MLI
|
||||
.DA #MLIONLINE
|
||||
.DA RW.ONLINEPARAM
|
||||
rts
|
||||
*--------------------------------------
|
||||
RW.ONLINEPARAM .DA #2
|
||||
.DA #$B0 Slot 3,Drive 2
|
||||
.DA RW.ONLINEBUFFER
|
||||
RW.ONLINEBUFFER .BS 16
|
||||
*--------------------------------------
|
||||
RW.DetectHW php
|
||||
sei
|
||||
@ -414,7 +492,9 @@ RW.BLOCK2.END .EQ *
|
||||
.INB usr/src/shared/x.printf.s
|
||||
*--------------------------------------
|
||||
RW.MSG .AZ "SuperExpander E, RAMWorks (I,II,III,z-Ram) Driver For A2osX\n"
|
||||
RW.MSG.OK .AZ "/RAM3 Device Already Installed.\n"
|
||||
RW.MSG.RAMDISOK .AZ "/RAM Device Disabled/Not Present.\n"
|
||||
RW.MSG.RAMDISKO .AZ "Problem Disabling /RAM Device.\n"
|
||||
RW.MSG.RAM3OK .AZ "/RAM3 Device Already Installed.\n"
|
||||
RW.MSG.OK1 .AZ "%D KB Detected (%d Pages), %D KB (%d Pages) Available for RamDrive.\n"
|
||||
RW.MSG.KO1 .AZ "Not Detected.\n"
|
||||
RW.MSG.OK2 .AZ "RamWorks Driver Installed.\n"
|
||||
|
Loading…
x
Reference in New Issue
Block a user