mirror of
https://github.com/A2osX/A2osX.git
synced 2024-06-08 08:33:37 +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
|
.LIST OFF
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CC.DECL jsr CC.IsLetter
|
CC.DECL jsr CC.IsLetter
|
||||||
bcc .10
|
bcs .80
|
||||||
|
|
||||||
* TODO: PREOPS ++ --.....
|
|
||||||
|
|
||||||
bcs .90
|
|
||||||
|
|
||||||
.10 >LDYA L.CC.SCSPEC
|
.10 >LDYA L.CC.SCSPEC
|
||||||
jsr CC.LookupID
|
jsr CC.LookupID
|
||||||
|
@ -16,7 +12,7 @@ CC.DECL jsr CC.IsLetter
|
||||||
* TODO: typedef ....
|
* TODO: typedef ....
|
||||||
|
|
||||||
bcs .90
|
bcs .90
|
||||||
*--------------------------------------
|
|
||||||
.20 >LDYA L.CC.TYPEQUAL
|
.20 >LDYA L.CC.TYPEQUAL
|
||||||
jsr CC.LookupID
|
jsr CC.LookupID
|
||||||
bcs .80
|
bcs .80
|
||||||
|
@ -36,9 +32,30 @@ CC.DECL jsr CC.IsLetter
|
||||||
.21 jsr CC.SYM.New Y,A=T/Q, add with undef value...
|
.21 jsr CC.SYM.New Y,A=T/Q, add with undef value...
|
||||||
bcs .99
|
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
|
.80 bit #$60
|
||||||
clc
|
clc
|
||||||
|
|
|
@ -2,6 +2,59 @@ NEW
|
||||||
AUTO 3,1
|
AUTO 3,1
|
||||||
.LIST OFF
|
.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
|
* X = KW.ID
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CC.STMT.CPStmt lda LocalPtr Locals
|
CC.STMT.CPStmt lda LocalPtr Locals
|
||||||
|
|
|
@ -3,136 +3,87 @@ NEW
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
ILDR.START jsr MLI check for file 'atinit'
|
ILDR.START jsr MLI check for file 'atinit'
|
||||||
.DA #MLIGETFILEINFO
|
.DA #MLIGETFILEINFO
|
||||||
.DA gfi_list
|
.DA ILDR.GFINFO
|
||||||
bcc gfi_ok branch if 'atinit' file found
|
bcs ILDR.ENUMPM
|
||||||
|
|
||||||
cmp #MLI.E.FNOTFND
|
lda ILDR.GFINFO+S.FI.T
|
||||||
beq ILDR.SYSTEM if so, continue loading interpreter
|
|
||||||
|
|
||||||
ATINIT.KO jmp badatinit
|
|
||||||
|
|
||||||
gfi_ok lda gfi_type
|
|
||||||
cmp #$E2 is 'atinit' correct file type?
|
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
|
ldy #ILDR.ATINIT
|
||||||
.DA #MLIOPEN
|
lda /ILDR.ATINIT
|
||||||
.DA atopen
|
jsr ILDR.LoadFile
|
||||||
bne ATINIT.KO error
|
bcc .1
|
||||||
|
|
||||||
lda #$9F max size = 39.75k ($2000-$BF00)
|
jmp ILDR.MLIERR
|
||||||
sta rdlen+1
|
|
||||||
stz rdlen
|
|
||||||
|
|
||||||
jsr MLI read 'atinit' file to 'sysentry'
|
.1 lda RROMBNK2 enable ROM
|
||||||
.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
|
|
||||||
jsr sysentry execute ATinit
|
jsr sysentry execute ATinit
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
ILDR.SYSTEM lda /dbuf search directory buffer
|
* BOOT block read 4 directory blocks at dbuf=$C00 -> $13FF
|
||||||
sta idxl+1
|
*--------------------------------------
|
||||||
lda #$04 start 1 entry past header
|
ILDR.ENUMPM .DO PM
|
||||||
bne H2434 always.
|
|
||||||
|
|
||||||
H2432 lda idxl calc next entry position
|
jsr ILDR.EnumInit
|
||||||
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.
|
|
||||||
|
|
||||||
H244D lda #$04 reset index to 1st entry in next block.
|
.1 ldx #S.FI.T.BIN
|
||||||
sta idxl
|
ldy #ILDR.KMSFX
|
||||||
H2451 inc idxl+1 inc to next page.
|
lda /ILDR.KMSFX
|
||||||
H2453 ldy #$10 check file type.
|
jsr ILDR.EnumNext
|
||||||
lda #$FF must be a prodos sys file
|
bcs .4
|
||||||
eor (idxl),y
|
|
||||||
bne H2432 if not sys.
|
|
||||||
|
|
||||||
tay see if active
|
jsr ILDR.LoadFilePBuf
|
||||||
lda (idxl),y
|
bcs ILDR.MLIERR
|
||||||
beq H2432 if deleted file.
|
|
||||||
|
|
||||||
and #$0F strip file 'kind'.
|
ldx #3
|
||||||
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
|
|
||||||
|
|
||||||
sta CLR80DISP
|
.2 lda idxl,x
|
||||||
sta CLR80STORE
|
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 init
|
||||||
jsr setvid
|
jsr setvid
|
||||||
jsr setkbd
|
jsr setkbd
|
||||||
|
@ -140,94 +91,265 @@ H24C8 jsr MLI close interpreter file
|
||||||
|
|
||||||
jmp sysentry go run interpreter
|
jmp sysentry go run interpreter
|
||||||
|
|
||||||
nointrp jsr MLI no interpreter found,so quit.
|
.9 jsr MLI no .SYSTEM found, so quit.
|
||||||
.DA #$65
|
.DA #MLIQUIT
|
||||||
.DA quitparm
|
.DA ILDR.QUIT
|
||||||
|
*--------------------------------------
|
||||||
badatinit ldy #6
|
ILDR.MLIERR cmp #MLI.E.BADBUF
|
||||||
|
|
||||||
.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
|
|
||||||
bne .1
|
bne .1
|
||||||
|
|
||||||
bra *
|
ldx #ILDR.MSG.SYSTOOLARG-ILDR.MSG
|
||||||
*--------------------------------------
|
|
||||||
ILDR.PrintX bit RROMBNK2
|
.HS 2C BIT ABS
|
||||||
lda INVFLG
|
.1 ldx #ILDR.MSG.SYSLOADERR-ILDR.MSG
|
||||||
pha
|
|
||||||
|
bit RROMBNK2
|
||||||
jsr SETINV
|
jsr SETINV
|
||||||
|
|
||||||
.1 lda ILDR.MSG,x
|
.2 lda ILDR.MSG,x
|
||||||
pha
|
pha
|
||||||
ora #$80
|
ora #$80
|
||||||
jsr COUT
|
jsr COUT
|
||||||
inx
|
inx
|
||||||
pla
|
pla
|
||||||
bpl .1
|
bpl .2
|
||||||
|
|
||||||
lda #$A0
|
lda #$A0
|
||||||
jsr COUT
|
jsr COUT
|
||||||
|
|
||||||
pla
|
ldy #0
|
||||||
sta INVFLG
|
|
||||||
|
.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
|
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.SYSLOADERR .AT "Unable to load"
|
||||||
ILDR.MSG.SYSTOOLARG .AT "Too Large"
|
ILDR.MSG.SYSTOOLARG .AT "Too Large"
|
||||||
|
ILDR.LCBits .HS 8040201008040201
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
gfi_list .DA #$0A
|
ILDR.GFINFO .DA #10 PARAM CNT
|
||||||
.DA atinitname
|
.DA ILDR.ATINIT
|
||||||
.HS 00
|
.BS S.FI-3
|
||||||
gfi_type .HS 00000000
|
|
||||||
.HS 0000000000000000
|
|
||||||
.HS 0000
|
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
atopen .HS 03
|
ILDR.OPEN .DA #3 PARAM CNT
|
||||||
.DA atinitname
|
.BS 2 Filename
|
||||||
.DA iobuf i/o buffer
|
.DA iobuf i/o buffer
|
||||||
.HS 01 ref# hard coded since no other files
|
.HS 01 REF
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
atinitname .DA #06 length of name
|
ILDR.GETEOF .DA #2 PARAM CNT
|
||||||
.AS "ATINIT" name of appletalk config file
|
.DA #01 REF
|
||||||
|
.HS 000000
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
opparm .HS 03
|
ILDR.READ .DA #4 PARAM CNT
|
||||||
.DA pbuf
|
.HS 01 REF
|
||||||
.DA iobuf
|
|
||||||
.HS 01
|
|
||||||
efparm .HS 02
|
|
||||||
.DA #01
|
|
||||||
eof .HS 000000 length of file.
|
|
||||||
rdparm .HS 04
|
|
||||||
.HS 01
|
|
||||||
.DA sysentry
|
.DA sysentry
|
||||||
rdlen .HS 0000
|
.DA $9F00 Max file size
|
||||||
.HS 0000
|
.HS 0000
|
||||||
clparm .HS 01
|
*--------------------------------------
|
||||||
.HS 00
|
ILDR.CLOSE .DA #1 PARAM CNT
|
||||||
quitparm .HS 04
|
.HS 01 REF
|
||||||
|
*--------------------------------------
|
||||||
|
ILDR.QUIT .DA #4 PARAM CNT
|
||||||
.HS 00
|
.HS 00
|
||||||
.HS 0000
|
.HS 0000
|
||||||
.HS 00
|
.HS 00
|
||||||
.HS 0000
|
.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
|
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
|
MAN
|
||||||
SAVE usr/src/prodos.fx/prodos.s.ildr
|
SAVE usr/src/prodos.fx/prodos.s.ildr
|
||||||
LOAD usr/src/prodos.fx/prodos.s
|
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.
|
bcc .1 if ok, read next block.
|
||||||
.FIN
|
.FIN
|
||||||
|
|
||||||
.8 jmp $800 jmp to "load interpreter" code
|
.8 jsr CROUT
|
||||||
|
|
||||||
|
jmp ILDR.START
|
||||||
|
|
||||||
.9 ldx #LDR.MSG.ROOTERR
|
.9 ldx #LDR.MSG.ROOTERR
|
||||||
jsr LDR.PrintX
|
jsr LDR.PrintX
|
||||||
|
@ -987,7 +989,7 @@ LDR.SetDevID ldy #$FE check attributes byte.
|
||||||
sta devid
|
sta devid
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
LDR.Scr80Init phx Save MDR.MSG
|
LDR.Scr80Init phx Save LDR.MSG
|
||||||
|
|
||||||
jsr LDR.IsIIc
|
jsr LDR.IsIIc
|
||||||
bcs LDR.Scr80Init2
|
bcs LDR.Scr80Init2
|
||||||
|
@ -1022,9 +1024,12 @@ LDR.Scr80Init2 lda #$8C Reset 80 col screen ($0C:HOME)
|
||||||
jsr setnorm
|
jsr setnorm
|
||||||
jsr home
|
jsr home
|
||||||
jsr SETINV
|
jsr SETINV
|
||||||
|
|
||||||
.DO LOGO
|
.DO LOGO
|
||||||
lda #20
|
lda #20
|
||||||
sta CV
|
sta CV
|
||||||
|
inc
|
||||||
|
sta WNDTOP
|
||||||
jsr VTAB
|
jsr VTAB
|
||||||
|
|
||||||
lda #LOGO.PAKED
|
lda #LOGO.PAKED
|
||||||
|
@ -1143,13 +1148,14 @@ LDR.Scr80Init2 lda #$8C Reset 80 col screen ($0C:HOME)
|
||||||
bne .1
|
bne .1
|
||||||
|
|
||||||
.FIN
|
.FIN
|
||||||
|
|
||||||
jsr CLREOL
|
jsr CLREOL
|
||||||
jsr setnorm
|
jsr setnorm
|
||||||
|
|
||||||
ldx #LDR.MSG.PRODOS
|
ldx #LDR.MSG.PRODOS
|
||||||
jsr LDR.PrintX
|
jsr LDR.PrintX
|
||||||
|
|
||||||
plx MDR.MSG.machine type
|
plx get back LDR.MSG.machine type
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
LDR.PrintX bit RROMBNK2
|
LDR.PrintX bit RROMBNK2
|
||||||
|
|
||||||
|
|
|
@ -10,6 +10,7 @@ ENHFILENAME .EQ 1
|
||||||
LOWERCASE .EQ 1
|
LOWERCASE .EQ 1
|
||||||
ACL .EQ 1
|
ACL .EQ 1
|
||||||
LOGO .EQ 1
|
LOGO .EQ 1
|
||||||
|
PM .EQ 1
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
XRWDBG .EQ 0
|
XRWDBG .EQ 0
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
|
|
@ -4,6 +4,7 @@ NEW
|
||||||
.OP 65C02
|
.OP 65C02
|
||||||
.OR $2000
|
.OR $2000
|
||||||
.TF sys/km/km.ramworks
|
.TF sys/km/km.ramworks
|
||||||
|
* .TF ramworks.pm
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
.INB inc/macros.i
|
.INB inc/macros.i
|
||||||
.INB inc/io.i
|
.INB inc/io.i
|
||||||
|
@ -15,10 +16,11 @@ TmpPtr1 .EQ $0
|
||||||
TmpPtr2 .EQ $2
|
TmpPtr2 .EQ $2
|
||||||
Type .EQ $4
|
Type .EQ $4
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
RW.SAVEZP0 .EQ $800
|
RW.SAVEZP0 .EQ $2800
|
||||||
RW.SAVEZP1 .EQ $900
|
RW.SAVEZP1 .EQ $2900
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
RW.BLOCK .EQ $A00
|
RW.BLOCK .EQ $2A00
|
||||||
|
RW.ONLINEBUFFER .EQ $2C00
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* A2OSX.SYSTEM relocated at $1000 !!!
|
* A2OSX.SYSTEM relocated at $1000 !!!
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
@ -27,14 +29,25 @@ RWBankSelect .EQ $C073
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
RW.Init >LDYAI RW.MSG
|
RW.Init >LDYAI RW.MSG
|
||||||
jsr PrintFYA
|
jsr PrintFYA
|
||||||
jsr RW.DetectRAM3
|
|
||||||
bcs .10
|
|
||||||
|
|
||||||
>LDYAI RW.MSG.OK
|
jsr RW.CheckRAM3
|
||||||
|
bcs .5
|
||||||
|
|
||||||
|
>LDYAI RW.MSG.RAM3OK
|
||||||
jsr PrintFYA
|
jsr PrintFYA
|
||||||
rts
|
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
|
jsr RW.DetectHW
|
||||||
bcc .1
|
bcc .1
|
||||||
|
|
||||||
|
@ -95,15 +108,80 @@ RW.Init >LDYAI RW.MSG
|
||||||
.9 jsr PrintFYA
|
.9 jsr PrintFYA
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
RW.DetectRAM3 jsr MLI
|
RW.CheckRAM3 jsr RW.ONLINE MLI Online at S3D2
|
||||||
.DA #MLIONLINE
|
bcs .9
|
||||||
.DA RW.ONLINE
|
|
||||||
|
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
|
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 #$B0 Slot 3,Drive 2
|
||||||
.DA RW.ONLINEBUFFER
|
.DA RW.ONLINEBUFFER
|
||||||
RW.ONLINEBUFFER .BS 16
|
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
RW.DetectHW php
|
RW.DetectHW php
|
||||||
sei
|
sei
|
||||||
|
@ -414,7 +492,9 @@ RW.BLOCK2.END .EQ *
|
||||||
.INB usr/src/shared/x.printf.s
|
.INB usr/src/shared/x.printf.s
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
RW.MSG .AZ "SuperExpander E, RAMWorks (I,II,III,z-Ram) Driver For A2osX\n"
|
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.OK1 .AZ "%D KB Detected (%d Pages), %D KB (%d Pages) Available for RamDrive.\n"
|
||||||
RW.MSG.KO1 .AZ "Not Detected.\n"
|
RW.MSG.KO1 .AZ "Not Detected.\n"
|
||||||
RW.MSG.OK2 .AZ "RamWorks Driver Installed.\n"
|
RW.MSG.OK2 .AZ "RamWorks Driver Installed.\n"
|
||||||
|
|
Loading…
Reference in New Issue
Block a user