KMs & PMs Cleanup

This commit is contained in:
burniouf 2022-03-13 13:52:24 +01:00
parent 3e95bd27d7
commit cec2764d5c
26 changed files with 1637 additions and 1166 deletions

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -19,6 +19,7 @@ A2osX.QC.ROOT .BS 64
A2osX.QC.Start1 sei A2osX.QC.Start1 sei
ldx #$FF ldx #$FF
txs txs
cli cli
bit RROMBNK1 bit RROMBNK1
>LDYAI A2osX.QC >LDYAI A2osX.QC
@ -271,6 +272,6 @@ QC.FREE .EQ $1300-*
.EP .EP
*-------------------------------------- *--------------------------------------
MAN MAN
SAVE USR/SRC/A2OSX.S.QC SAVE usr/src/a2osx.s.qc
LOAD USR/SRC/A2OSX.S LOAD usr/src/a2osx.s
ASM ASM

View File

@ -17,15 +17,16 @@ NEW
TmpPtr1 .EQ $0 main & aux ZP TmpPtr1 .EQ $0 main & aux ZP
TmpPtr2 .EQ $2 main & aux ZP TmpPtr2 .EQ $2 main & aux ZP
*-------------------------------------- *--------------------------------------
A2osX.KMLOAD .EQ $2000 A2osX.PMLOAD .EQ $2000
A2osX.LOGOLOAD .EQ $4000 A2osX.LOGOLOAD .EQ $4000
A2osX.KMMAXLEN .EQ $6000 A2osX.PMMAXLEN .EQ $6000
A2osX.OpenBuff1 .EQ $8000 1024 Buffer for MLIOPEN01 A2osX.OpenBuff1 .EQ $8000 1024 Buffer for MLIOPEN01
A2osX.OpenBuff2 .EQ $8400 1024 Buffer for MLIOPEN02 A2osX.OpenBuff2 .EQ $8400 1024 Buffer for MLIOPEN02
A2osX.ReadBuff .EQ $8800 512 Buffer for MLIREAD01 A2osX.ReadBuff .EQ $8800 512 Buffer for MLIREAD01
Boot.Prefix .EQ $8A00 MLI.MAXPATH Boot.Prefix .EQ $8A00 MLI.MAXPATH
LOGO.Filename .EQ $8A80 MLI.MAXPATH Logo.Filename .EQ $8A80 MLI.MAXPATH
KM.Filename .EQ $8B00 MLI.MAXPATH Sys.Prefix .EQ $8B00 MLI.MAXPATH
PM.Filename .EQ $8B80 MLI.MAXPATH
MLIONLINE01BUF .EQ $8C00 256 MLIONLINE01BUF .EQ $8C00 256
*-------------------------------------- *--------------------------------------
* Kernel Stage 0 * Kernel Stage 0
@ -37,12 +38,14 @@ A2osX.Init0 >LDYAI $2000
>LDYAI $1000 >LDYAI $1000
>STYA TmpPtr2 >STYA TmpPtr2
ldx #$10 reloc $2000-$2FFF to $1000-$1FFF ldx /SYSTEM.END-$1F00
ldy #0 ldy #0
.1 lda (TmpPtr1),y .1 lda (TmpPtr1),y
sta (TmpPtr2),y sta (TmpPtr2),y
iny iny
bne .1 bne .1
inc TmpPtr1+1 inc TmpPtr1+1
inc TmpPtr2+1 inc TmpPtr2+1
dex dex
@ -76,6 +79,9 @@ A2osX.Init1.128 jsr MLI
ldx Boot.Prefix ldx Boot.Prefix
.1 lda Boot.Prefix,x .1 lda Boot.Prefix,x
sta Logo.Filename,x
sta Sys.Prefix,x
sta PM.Filename,x
sta A2osX.QC.B.BOOT,x sta A2osX.QC.B.BOOT,x
sta A2osX.QC.B.ROOT,x sta A2osX.QC.B.ROOT,x
dex dex
@ -140,15 +146,11 @@ A2osX.RamDrv >LDYAI MSG.RAMDRV
.8 jsr PrintFYA .8 jsr PrintFYA
*-------------------------------------- *--------------------------------------
A2osX.EnumKM >LDYAI MSG.KMENUM
jsr PrintFYA
jsr EnumKM
*--------------------------------------
A2osX.SetupQC lda RRAMWRAMBNK2 A2osX.SetupQC lda RRAMWRAMBNK2
lda RRAMWRAMBNK2 lda RRAMWRAMBNK2
ldx #0 ldx #0
.1 lda A2osX.QC.B.Start,x .1 lda A2osX.QC.B.Start,x Still at $2xxx !!! not moved to $1xxx
sta $D100,x sta $D100,x
lda A2osX.QC.B.Start+$100,x lda A2osX.QC.B.Start+$100,x
sta $D200,x sta $D200,x
@ -159,6 +161,10 @@ A2osX.SetupQC lda RRAMWRAMBNK2
lda RROMBNK1 lda RROMBNK1
*-------------------------------------- *--------------------------------------
A2osX.EnumPM >LDYAI MSG.PMENUM do this After SetupQC, a PM could override QC
jsr PrintFYA
jsr EnumPM
*--------------------------------------
A2osX.MLIQuit >LDYAI MSG.INIT0OK A2osX.MLIQuit >LDYAI MSG.INIT0OK
jsr PrintFYA jsr PrintFYA
>DEBUGOA >DEBUGOA
@ -174,23 +180,16 @@ A2osX.Screen80 lda #$8C Reset 80 col screen ($0C:HOME)
jsr $C300 jsr $C300
ldx Boot.Prefix ldx Boot.Prefix
.1 lda Boot.Prefix,x
sta LOGO.Filename,x
dex
bne .1
ldx Boot.Prefix
ldy #0 ldy #0
.2 inx .2 inx
iny iny
lda A2osX.LOGO,y lda A2osX.LOGO,y
sta LOGO.Filename,x sta Logo.Filename,x
cpy A2osX.LOGO cpy A2osX.LOGO
bne .2 bne .2
stx LOGO.Filename stx Logo.Filename
jsr MLI jsr MLI
.DA #MLIOPEN .DA #MLIOPEN
.DA MLIOPEN00 .DA MLIOPEN00
@ -387,34 +386,42 @@ DisableRamDRV php
sec sec
rts rts
*-------------------------------------- *--------------------------------------
EnumKM.EPB .EQ $0D EnumPM.EPB .EQ $0D
EnumKM.EL .EQ $27 EnumPM.EL .EQ $27
*-------------------------------------- *--------------------------------------
EnumKM ldx #0 EnumPM ldx #0
ldy Boot.Prefix ldy Boot.Prefix
.1 inx .1 inx
lda SYS,x lda SYS,x
sta Boot.Prefix+1,y sta Sys.Prefix+1,y
sta PM.Filename+1,y
iny iny
cpx SYS cpx SYS
bne .1 bne .1
sty Boot.Prefix sty Sys.Prefix
lda #Boot.Prefix sty PM.Filename
lda #Sys.Prefix
pha pha
lda /Boot.Prefix lda /Sys.Prefix
pha pha
>LDYAI MSG.KMSYSDIR >LDYAI MSG.PMSYSDIR
jsr PrintFYA jsr PrintFYA
jsr MLI
.DA #MLISETPREFIX
.DA MLISETPREFIX02
bcs .19
jsr MLI jsr MLI
.DA #MLIOPEN .DA #MLIOPEN
.DA MLIOPEN01 .DA MLIOPEN01
bcc .10 bcc .10
pha .19 pha
>LDYAI MSG.KMSYSDIR.KO >LDYAI MSG.PMSYSDIR.KO
jsr PrintFYA jsr PrintFYA
sec sec
rts rts
@ -428,13 +435,13 @@ EnumKM ldx #0
.DA MLIREAD01 .DA MLIREAD01
bcs .98 bcs .98
lda #EnumKM.EPB lda #EnumPM.EPB
sta EnumKM.EC sta EnumPM.EC
>LDYAI A2osX.ReadBuff+4 >LDYAI A2osX.ReadBuff+4
>STYA EnumKM.BPTR >STYA EnumPM.BPTR
.3 >LDYA EnumKM.BPTR .3 >LDYA EnumPM.BPTR
>STYA TmpPtr1 >STYA TmpPtr1
lda (TmpPtr1) lda (TmpPtr1)
@ -446,7 +453,7 @@ EnumKM ldx #0
lda (TmpPtr1) lda (TmpPtr1)
and #$0F and #$0F
cmp KM.PREFIX at least enough chars for KM.*? cmp PM. at least enough chars for PM.*?
bcc .5 no, skip bcc .5 no, skip
ldy #$10 file type ldy #$10 file type
@ -454,26 +461,26 @@ EnumKM ldx #0
cmp #$06 'BIN'? cmp #$06 'BIN'?
bne .5 skip bne .5 skip
ldy KM.PREFIX ldy PM.
.4 lda (TmpPtr1),y KM.* ? .4 lda (TmpPtr1),y PM.* ?
cmp KM.PREFIX,y cmp PM.,y
bne .5 bne .5
dey dey
bne .4 bne .4
jsr LoadKM jsr LoadPM
.5 lda EnumKM.BPTR .5 lda EnumPM.BPTR
clc clc
adc #EnumKM.EL adc #EnumPM.EL
sta EnumKM.BPTR sta EnumPM.BPTR
bcc .6 bcc .6
inc EnumKM.BPTR+1 inc EnumPM.BPTR+1
.6 dec EnumKM.EC .6 dec EnumPM.EC
bne .3 bne .3
bra .2 bra .2
@ -491,47 +498,46 @@ EnumKM ldx #0
.8 jsr MLI .8 jsr MLI
.DA #MLICLOSE .DA #MLICLOSE
.DA MLICLOSE01 .DA MLICLOSE01
rts bcs .99
*--------------------------------------
EnumKM.EC .BS 1
EnumKM.BPTR .BS 2
*--------------------------------------
LoadKM ldx Boot.Prefix
.1 lda Boot.Prefix,x jsr MLI
sta KM.Filename,x .DA #MLISETPREFIX
dex .DA MLISETPREFIX01
bne .1
ldy #$1c .99 rts
*--------------------------------------
EnumPM.EC .BS 1
EnumPM.BPTR .BS 2
*--------------------------------------
LoadPM ldy #$1c
lda (TmpPtr1),y lda (TmpPtr1),y
sta LoadKM.VERSION sta LoadPM.VERSION
iny iny
lda (TmpPtr1),y lda (TmpPtr1),y
sta LoadKM.MVERSION sta LoadPM.MVERSION
ldx Boot.Prefix ldx Sys.Prefix
lda (TmpPtr1) lda (TmpPtr1)
and #$0F and #$0F
tay tay
clc clc
adc Boot.Prefix adc sys.Prefix
sta KM.Filename sta PM.Filename
tax tax
.2 bit LoadKM.MVERSION .2 bit LoadPM.MVERSION
bpl .6 bpl .6
cpy #8 cpy #8
bcs .3 bcs .3
lda LoadKM.Bits,y lda LoadPM.Bits,y
bit LoadKM.MVERSION bit LoadPM.MVERSION
beq .6 beq .6
bra .4 bra .4
.3 lda LoadKM.Bits-8,y .3 lda LoadPM.Bits-8,y
bit LoadKM.VERSION bit LoadPM.VERSION
beq .6 beq .6
.4 lda (TmpPtr1),y .4 lda (TmpPtr1),y
@ -539,17 +545,17 @@ LoadKM ldx Boot.Prefix
.HS 2C BIT ABS .HS 2C BIT ABS
.6 lda (TmpPtr1),y .6 lda (TmpPtr1),y
sta KM.Filename,x sta PM.Filename,x
dex dex
dey dey
bne .2 bne .2
lda #KM.Filename lda #PM.Filename
pha pha
lda /KM.Filename lda /PM.Filename
pha pha
>LDYAI MSG.KMLOAD >LDYAI MSG.PMLOAD
jsr PrintFYA jsr PrintFYA
jsr MLI jsr MLI
@ -567,7 +573,7 @@ LoadKM ldx Boot.Prefix
bcs .98 bcs .98
jsr .9 jsr .9
jmp A2osX.KMLOAD jmp A2osX.PMLOAD
.98 pha .98 pha
jsr .9 jsr .9
@ -581,9 +587,9 @@ LoadKM ldx Boot.Prefix
.DA MLICLOSE02 .DA MLICLOSE02
.99 rts .99 rts
*-------------------------------------- *--------------------------------------
LoadKM.VERSION .BS 1 LoadPM.VERSION .BS 1
LoadKM.MVERSION .BS 1 LoadPM.MVERSION .BS 1
LoadKM.Bits .HS 8040201008040201 LoadPM.Bits .HS 8040201008040201
*-------------------------------------- *--------------------------------------
.INB usr/src/shared/x.printf.s .INB usr/src/shared/x.printf.s
*-------------------------------------- *--------------------------------------
@ -599,26 +605,30 @@ MSG.CPU.KO .AZ "A2osX Requires At Least A 65C02 CPU.\n"
MSG.RAMDRV .AZ "Checking ProDOS RamDrive..." MSG.RAMDRV .AZ "Checking ProDOS RamDrive..."
MSG.RAMDRV.OK .AZ "Successfully Disabled.\n" MSG.RAMDRV.OK .AZ "Successfully Disabled.\n"
MSG.RAMDRV.KO0 .AZ "Not Detected.\n" MSG.RAMDRV.KO0 .AZ "Not Detected.\n"
MSG.RAMDRV.KO1 .AZ "Uninstall Failed !!!\n" MSG.RAMDRV.KO1 .AZ "Uninstall Failed.\n"
MSG.BOOTPREFIX .AZ "Boot Prefix:%S\n" MSG.BOOTPREFIX .AZ "Boot Prefix:%S\n"
MSG.KMENUM .AZ "Looking For Kernel Modules...\n" MSG.PMENUM .AZ "Looking For ProDOS Modules...\n"
MSG.KMSYSDIR .AZ "SYS dir is %S\n" MSG.PMSYSDIR .AZ "SYS dir is %S\n"
MSG.KMSYSDIR.KO .AZ "***Error : $%h\n" MSG.PMSYSDIR.KO .AZ "***Error : $%h\n"
MSG.KMLOAD .AZ "***Loading KM : %S\n" MSG.PMLOAD .AZ "***Loading PM : %S\n"
MSG.INIT0OK .AZ "A2osX[Stage0]:Complete.\n" MSG.INIT0OK .AZ "A2osX[Stage0]:Complete.\n"
*-------------------------------------- *--------------------------------------
MLIGETPREFIX01 .DA #1 MLIGETPREFIX01
MLISETPREFIX01 .DA #1
.DA Boot.Prefix .DA Boot.Prefix
*-------------------------------------- *--------------------------------------
MLISETPREFIX02 .DA #1
.DA Sys.Prefix
*--------------------------------------
MLIONLINE01 .DA #2 MLIONLINE01 .DA #2
* .DA #0 * .DA #0
.DA #$B0 S3D2 .DA #$B0 S3D2
.DA MLIONLINE01BUF .DA MLIONLINE01BUF
*-------------------------------------- *--------------------------------------
MLIOPEN00 .DA #3 For DIR listing MLIOPEN00 .DA #3 For DIR listing
.DA LOGO.Filename .DA Logo.Filename
.DA A2osX.OpenBuff1 .DA A2osX.OpenBuff1
.BS 1 .BS 1
MLIREAD00 .DA #4 MLIREAD00 .DA #4
@ -630,7 +640,7 @@ MLICLOSE00 .DA #1
.BS 1 .BS 1
*-------------------------------------- *--------------------------------------
MLIOPEN01 .DA #3 For DIR listing MLIOPEN01 .DA #3 For DIR listing
.DA Boot.Prefix .DA Sys.Prefix
.DA A2osX.OpenBuff1 .DA A2osX.OpenBuff1
.BS 1 .BS 1
MLIREAD01 .DA #4 MLIREAD01 .DA #4
@ -642,13 +652,13 @@ MLICLOSE01 .DA #1
.BS 1 .BS 1
*-------------------------------------- *--------------------------------------
MLIOPEN02 .DA #3 MLIOPEN02 .DA #3
.DA KM.Filename .DA PM.Filename
.DA A2osX.OpenBuff2 .DA A2osX.OpenBuff2
.BS 1 .BS 1
MLIREAD02 .DA #4 MLIREAD02 .DA #4
.BS 1 .BS 1
.DA A2osX.KMLOAD Load address for KMs .DA A2osX.PMLOAD Load address for PMs
.DA A2osX.KMMAXLEN Maxlen of KM .DA A2osX.PMMAXLEN Maxlen of PM
.BS 2 .BS 2
MLICLOSE02 .DA #1 MLICLOSE02 .DA #1
.BS 1 .BS 1
@ -661,7 +671,7 @@ MLIQUIT01 .DA #4
*-------------------------------------- *--------------------------------------
A2osX.LOGO >PSTR "A2osX.logo" A2osX.LOGO >PSTR "A2osX.logo"
SYS >PSTR "sys/" SYS >PSTR "sys/"
KM.PREFIX >PSTR "KM." PM. >PSTR "PM."
*-------------------------------------- *--------------------------------------
SCR.BASEL .HS 00.80.00.80.00.80.00.80.28.A8.28.A8.28.A8.28.A8.50.D0.50.D0.50.D0.50.D0 SCR.BASEL .HS 00.80.00.80.00.80.00.80.28.A8.28.A8.28.A8.28.A8.50.D0.50.D0.50.D0.50.D0
SCR.BASEH .HS 04.04.05.05.06.06.07.07.04.04.05.05.06.06.07.07.04.04.05.05.06.06.07.07 SCR.BASEH .HS 04.04.05.05.06.06.07.07.04.04.05.05.06.06.07.07.04.04.05.05.06.06.07.07
@ -672,15 +682,16 @@ PALETTE.AUX .HS 00.01.02.03.04.05.06.07
.HS 08.09.0A.0B.0C.0D.0E.0F .HS 08.09.0A.0B.0C.0D.0E.0F
*-------------------------------------- *--------------------------------------
.EP .EP
.LIST ON
SYSTEM.END .EQ *
.LIST OFF
*-------------------------------------- *--------------------------------------
A2osX.QC.B.Start A2osX.QC.B.Start
A2osX.QC.B.BOOT .EQ *+4 A2osX.QC.B.BOOT .EQ *+4
A2osX.QC.B.ROOT .EQ *+4+64 A2osX.QC.B.ROOT .EQ *+4+64
.INB usr/src/a2osx.s.qc .INB usr/src/a2osx.s.qc
.LIST ON
SYSTEM.END .EQ *
.LIST OFF
*-------------------------------------- *--------------------------------------
MAN MAN
SAVE USR/SRC/A2OSX.S SAVE usr/src/a2osx.s
ASM ASM

View File

@ -12,32 +12,31 @@ BS.ResetCSWKSW pha
sta ZP.KSW+1 sta ZP.KSW+1
pla pla
rts rts
*--------------------------------------
BS.SetState0 ldx #$00 BS.SetState0 ldx #$00
jsr BS.SetState jsr BS.SetState
lda ZP.KSW+1 lda ZP.KSW+1
cmp GP.VDOSI+1 cmp GP.VDOSI+1
bne L9A26 beq BS.SetCSWKSW2VDOS
jmp BS.SetCSWKSW2VDOS lda ZP.CSW+1
L9A26 lda ZP.CSW+1
cmp GP.VDOSO+1 cmp GP.VDOSO+1
beq BS.SetCSWKSW2VDOS beq BS.SetCSWKSW2VDOS
bne BS.SaveCSWKSW bne BS.SaveCSWKSW
*--------------------------------------
BS.IO.OUT cmp X9F65 BS.IO.OUT cmp X9F65
bne L9A54 bne L9A54
stx GP.PREGX stx GP.PREGX
tsx tsx
lda $103,x lda $103,x
cmp #$12 cmp #$12 From AS rom: TRACE
bne L9A6E bne L9A6E
lda $104,x lda $104,x
cmp #$D8 cmp #$D8 jsr from $D810, then JSR MON.COUT
bne L9A6E bne L9A6E
ldx #$04 ldx #$04
@ -81,6 +80,7 @@ L9A74 jsr BS.ResetCSWKSW
sta AS.TRCFLG sta AS.TRCFLG
L9A8B lda #$8D L9A8B lda #$8D
BS.SaveCSWKSW pha BS.SaveCSWKSW pha
lda ZP.KSW+1 lda ZP.KSW+1
sta GP.VECTIN+1 sta GP.VECTIN+1
@ -104,7 +104,7 @@ BS.SetCSWKSW2VDOS
sta ZP.KSW+1 sta ZP.KSW+1
pla pla
rts rts
*--------------------------------------
BS.IO.IN bit GP.EXECACTV BS.IO.IN bit GP.EXECACTV
bpl L9AC5 bpl L9AC5
@ -142,11 +142,12 @@ BS.ERROUT sta GP.ERRCODE
php php
lda #$0F lda #$0F
sta MLI.LEVEL sta MLI.LEVEL
lda #$00
sta GP.IFILACTV stz GP.IFILACTV
sta GP.OFILACTV stz GP.OFILACTV
sta GP.PFXACTV stz GP.PFXACTV
sta GP.MLICF.REFNUM stz GP.MLICF.REFNUM
lda #MLI.C.CLOSE lda #MLI.C.CLOSE
jsr GP.GOSYSTEM jsr GP.GOSYSTEM
bcs L9B27 bcs L9B27
@ -154,9 +155,8 @@ BS.ERROUT sta GP.ERRCODE
jsr LA004 jsr LA004
bcs L9B27 bcs L9B27
lda #$00 stz MLI.LEVEL
sta MLI.LEVEL stz GP.MLICF.REFNUM
sta GP.MLICF.REFNUM
lda #MLI.C.FLUSH lda #MLI.C.FLUSH
jsr GP.GOSYSTEM jsr GP.GOSYSTEM
@ -192,8 +192,7 @@ L9B4D ldx AS.REMSTK
L9B53 lda #$03 L9B53 lda #$03
jmp AS.BITERRFLG jmp AS.BITERRFLG
L9B58 lda #$00 L9B58 stz AS.ERRNUM
sta AS.ERRNUM
lda #$A3 lda #$A3
sta X9F65 sta X9F65
jsr AS.NORMAL jsr AS.NORMAL
@ -206,6 +205,7 @@ L9B58 lda #$00
BS.IO.IN0 jsr BS.SaveAXY BS.IO.IN0 jsr BS.SaveAXY
bit GP.PFXACTV bit GP.PFXACTV
bpl L9B7E bpl L9B7E
jmp BS.IO.IN.CAT jmp BS.IO.IN.CAT
L9B7E bit GP.IFILACTV L9B7E bit GP.IFILACTV
@ -296,6 +296,7 @@ L9C01 ldx #$00
L9C0E lda (ZP.BASL),y L9C0E lda (ZP.BASL),y
jmp (ZP.KSW) jmp (ZP.KSW)
L9C13 jmp BS.ERROUT L9C13 jmp BS.ERROUT
BS.IO.IN.FILE lda ZP.PROMPT BS.IO.IN.FILE lda ZP.PROMPT
@ -395,12 +396,8 @@ L9C95 cmp #$BE
jsr BS.ReadDirEnt jsr BS.ReadDirEnt
bcs L9D1F bcs L9D1F
lda GP.MLIRW.REFNUM jsr BS.GetFTableIdx
lsr
ror
ror
ror
tax
lda XBC12 lda XBC12
sta XBC5A,x sta XBC5A,x
lda XBC13 lda XBC13
@ -416,10 +413,13 @@ L9CD3 lda #$A2
L9CDF lda GP.CATFLAG L9CDF lda GP.CATFLAG
beq L9D22 beq L9D22
bmi L9CF9 bmi L9CF9
ldx #$00 ldx #$00
dec GP.CATFLAG dec GP.CATFLAG
beq L9CD3 beq L9CD3
jsr BS.LINEBUFCLR80 jsr BS.LINEBUFCLR80
ldx #$10 ldx #$10
jsr BS.PRINTERRMSGX jsr BS.PRINTERRMSGX
@ -431,9 +431,10 @@ L9CF9 cmp #$FF
bne L9D1C bne L9D1C
dec GP.CATFLAG dec GP.CATFLAG
lda #$00
sta GP.MLIRW.COUNT stz GP.MLIRW.COUNT
sta GP.MLIRW.COUNT+1 stz GP.MLIRW.COUNT+1
lda #MLI.C.READ lda #MLI.C.READ
jsr GP.GOSYSTEM jsr GP.GOSYSTEM
jsr LB157 jsr LB157
@ -452,12 +453,9 @@ L9D1F jmp BS.ERROUT
L9D22 lda #$FF L9D22 lda #$FF
sta XBC16 sta XBC16
lda GP.MLIRW.REFNUM
lsr jsr BS.GetFTableIdx
ror
ror
ror
tax
lda XBC5A,x lda XBC5A,x
sta XBC12 sta XBC12
lda XBC5B,x lda XBC5B,x
@ -498,8 +496,8 @@ BS.IO.IN.CAT cmp #$DD
L9D72 lda GP.PREGA L9D72 lda GP.PREGA
sta (ZP.BASL),y sta (ZP.BASL),y
lda #$00
sta GP.PFXACTV stz GP.PFXACTV
ldx BS.CMDBUF.LEN ldx BS.CMDBUF.LEN
L9D7F lda BS.CMDBUF.LEN,x L9D7F lda BS.CMDBUF.LEN,x
@ -518,9 +516,9 @@ BS.Setup4readEFBytesAt200
sta GP.MLIRW.DATAPTR+1 sta GP.MLIRW.DATAPTR+1
lda #$EF lda #$EF
sta GP.MLIRW.COUNT sta GP.MLIRW.COUNT
lda #$00
sta GP.MLIRW.COUNT+1 stz GP.MLIRW.COUNT+1
sta GP.MLIRW.DATAPTR stz GP.MLIRW.DATAPTR
rts rts
BS.VSYSO jsr BS.SaveAXY BS.VSYSO jsr BS.SaveAXY
@ -614,9 +612,6 @@ BS.IO.OUT.TRACE pha
bcs L9EBA bcs L9EBA
L9E46 pla L9E46 pla
nop
nop
nop
ldx GP.PREGX ldx GP.PREGX
bit GP.OFILACTV bit GP.OFILACTV
bpl L9E70 bpl L9E70
@ -762,10 +757,13 @@ L9F2E lda #$4A
L9F32 tya L9F32 tya
jmp AS.EXECSTMT jmp AS.EXECSTMT
lda #$00 brk
sta AS.ERRNUM
tya * UNREACHABLE CODE ????
bne L9EF0 * lda #$00
* sta AS.ERRNUM
* tya
* bne L9EF0
L9F3D jsr BS.ResetCSWKSW L9F3D jsr BS.ResetCSWKSW
lda #$A3 lda #$A3
@ -805,12 +803,12 @@ BS.RestoreAXY lda GP.PREGA
BS.SetState stx GP.STATE BS.SetState stx GP.STATE
ldy #$00 ldy #$00
L9F7F lda BS.SYSIOVECTS,x .1 lda BS.SYSIOVECTS,x
sta GP.VSYSO,y sta GP.VSYSO,y
inx inx
iny iny
cpy #$04 cpy #$04
bne L9F7F bne .1
rts rts
@ -826,15 +824,15 @@ BS.PRINTERRX jsr BS.PRINTERRMSGX
BS.LINEBUFOUT ldx #$00 BS.LINEBUFOUT ldx #$00
L9FA3 lda IO.LINEBUF+1,x .1 lda IO.LINEBUF+1,x
jsr BS.COUT jsr BS.COUT
inx inx
cpx BS.CATWIDTH cpx BS.CATWIDTH
bcc L9FA3 bcc .1
BS.CROUT lda #$8D BS.CROUT lda #$8D
BS.COUT jmp MON.COUT BS.COUT jmp MON.COUT
*--------------------------------------
BS.PRINTERRMSGX ldy #$00 BS.PRINTERRMSGX ldy #$00
clc clc
sty GP.INPTR sty GP.INPTR
@ -878,7 +876,7 @@ L9FED inx
and #$0F and #$0F
clc clc
rts rts
*--------------------------------------
BS.WriteTBUF256 lda #$00 BS.WriteTBUF256 lda #$00
ldy #$01 ldy #$01
bne LA00B bne LA00B
@ -900,10 +898,9 @@ LA00B sta GP.MLIRW.COUNT
sty GP.MLIRW.COUNT+1 sty GP.MLIRW.COUNT+1
lda #MLI.C.WRITE lda #MLI.C.WRITE
jsr GP.GOSYSTEM jsr GP.GOSYSTEM
pha
lda #$00 stz GP.TBUFPTR
sta GP.TBUFPTR
pla
bcs LA020 bcs LA020
LA01F clc LA01F clc
@ -922,14 +919,14 @@ LA021 jsr BS.KW.01
sta XBBD9 sta XBBD9
lda AS.STRINGSTART+1 lda AS.STRINGSTART+1
sta BS.MEMSIZE+1 sta BS.MEMSIZE+1
lda #$00 lda #$00
sta BS.MEMSIZE sta BS.MEMSIZE
jsr LA089 jsr LA089 Z
LA047 rts LA047 rts
BS.KW.01 lda #$00 BS.KW.01 stz BS.TXTTAB
sta BS.TXTTAB
lda #$03 lda #$03
sta XBBD9 sta XBBD9
lda AS.HIMEM+1 lda AS.HIMEM+1
@ -1281,10 +1278,11 @@ LA29B pla
LA29D rts LA29D rts
LA29E pla LA29E pla
LA29F sta GP.SBUFADR+1 LA29F sta GP.SBUFADR+1
sta XBBEE,x sta XBBEE,x
lda #$00
sta GP.SBUFADR stz GP.SBUFADR
lda XBBF6,x lda XBBF6,x
sta GP.MLIMRKEOFBUF.REFNUM sta GP.MLIMRKEOFBUF.REFNUM
lda #MLI.C.SETBUF lda #MLI.C.SETBUF

View File

@ -1,6 +1,8 @@
NEW NEW
AUTO 3,1 AUTO 3,1
*-------------------------------------- *--------------------------------------
BS.WHICHBITS .HS 8040201008040201
BS.GETBUFR jsr LA1FB BS.GETBUFR jsr LA1FB
bcs LA304 bcs LA304
pha pha
@ -217,7 +219,7 @@ LA3FD lda (ZP.A2L),y
sta (ZP.A2L),y sta (ZP.A2L),y
LA410 rts LA410 rts
*--------------------------------------
LA411 jsr LA021 LA411 jsr LA021
bcs LA47F bcs LA47F
@ -308,7 +310,7 @@ LA480 lda BS.BAS.HDR
LA4D0 clc LA4D0 clc
rts rts
*--------------------------------------
LA4D2 jsr BS.LINEBUFCLR80 LA4D2 jsr BS.LINEBUFCLR80
lda #$A2 lda #$A2
sta IO.LINEBUF sta IO.LINEBUF
@ -322,7 +324,38 @@ LA4E0 lda DIRENTBUF,y
dey dey
bne LA4E0 bne LA4E0
sty BS.TMPBUF4+2 .DO LOWERCASE=1
lda DIRENTBUF+$1D
bpl .18
lda DIRENTBUF
and #$0f
tay
.10 cpy #8
bcs .13
lda DIRENTBUF+$1D
and BS.WHICHBITS,y
beq .15
bne .14
.13 lda DIRENTBUF+$1C
and BS.WHICHBITS-8,y
beq .15
.14 lda IO.LINEBUF+1,y
eor #$20
sta IO.LINEBUF+1,y
.15 dey
bne .10
.18 .FIN
stz BS.TMPBUF4+2
lda DIRENTBUF.TYPE lda DIRENTBUF.TYPE
ldx #$0E ldx #$0E
@ -347,6 +380,7 @@ LA508 lda BS.PRODOSTYPES.ASC,y
dey dey
dex dex
bpl LA508 bpl LA508
pla pla
bit BS.CATWIDTH bit BS.CATWIDTH
bvc LA561 bvc LA561
@ -566,7 +600,7 @@ LA67E sta IO.LINEBUF+1,x
bpl LA67E bpl LA67E
rts rts
*--------------------------------------
BS.DOSCMD lda #$FF BS.DOSCMD lda #$FF
sta GP.XCNUM sta GP.XCNUM
lda #$20 lda #$20
@ -575,10 +609,10 @@ BS.DOSCMD lda #$FF
sta BS.GetCharMax sta BS.GetCharMax
jsr BS.GetKWInCmdBuf jsr BS.GetKWInCmdBuf
lda BS.CMDBUF lda BS.CMDBUF
cmp #$41 cmp #'A'
bcs LA6A5 bcs LA6A5
eor #$2D eor #'-'
beq LA6A5 beq LA6A5
LA6A2 jmp BS.ERR10 LA6A2 jmp BS.ERR10
@ -595,11 +629,11 @@ LA6A5 jsr BS.IsIntCmdMTR
jsr MON.CLREOL jsr MON.CLREOL
jsr BS.CROUT jsr BS.CROUT
LA6BA lda #$00 LA6BA stz GP.FoundBITS
sta GP.FoundBITS stz GP.FoundBITS+1
sta GP.FoundBITS+1 stz BS.CMDBUF
sta BS.CMDBUF stz MLI.PATHBUF
sta MLI.PATHBUF
lda GP.VDEFSLT lda GP.VDEFSLT
sta GP.ParamS sta GP.ParamS
lda GP.VDEFDRV lda GP.VDEFDRV
@ -629,14 +663,14 @@ LA6F8 pla
plp plp
beq LA744 beq LA744
cmp #$2C cmp #','
bne LA703 bne LA703
jmp LA795 jmp LA795
LA703 cmp #$2F LA703 cmp #'/'
beq LA70B beq LA70B
cmp #$41 cmp #'A'
bcc LA73D bcc LA73D
LA70B dex LA70B dex
@ -648,7 +682,7 @@ LA70B dex
jsr LAA2D jsr LAA2D
dey dey
sty BS.CMDBUF.LEN sty BS.CMDBUF.LEN
lda #$01 lda #CMDBITS0.FN1
sta GP.FoundBITS sta GP.FoundBITS
LA723 lda BS.CMDBUF.LEN,y LA723 lda BS.CMDBUF.LEN,y
@ -681,11 +715,13 @@ LA747 jsr BS.GetKWInCmdBuf
beq LA79A beq LA79A
jsr BS.TMPBUF3Reset jsr BS.TMPBUF3Reset
sty XBC08 stz XBC08
ldy #$13 ldy #$13
sty XBC09 sty XBC09
ldy #$40 ldy #$40
sty GP.FoundBITS sty GP.FoundBITS
jsr LA96E jsr LA96E
bcs LA76F bcs LA76F
@ -783,9 +819,9 @@ LA7ED lda GP.FoundBITS+1
bcs LA806 bcs LA806
lda #$00 stz BS.CMDBUF.LEN
sta BS.CMDBUF.LEN stz BS.CMDBUF
sta BS.CMDBUF
lda #$01 lda #$01
ora GP.FoundBITS ora GP.FoundBITS
sta GP.FoundBITS sta GP.FoundBITS
@ -796,10 +832,13 @@ LA806 jsr BS.GetVolAtSxDy
LA80B lda GP.XCNUM LA80B lda GP.XCNUM
asl asl
tax tax
lda BS.KW.JMP,x lda BS.KW.JMP,x
sta BS.KW.JMPADDR sta BS.KW.JMPADDR
lda BS.KW.JMP+1,x lda BS.KW.JMP+1,x
sta BS.KW.JMPADDR+1 sta BS.KW.JMPADDR+1
* >DEBUG
clc clc
txa txa
beq LA844 beq LA844
@ -833,7 +872,7 @@ LA844 jmp (BS.KW.JMPADDR)
BS.ERR10 lda #$10 BS.ERR10 lda #$10
LA849 sec LA849 sec
rts rts
*--------------------------------------
BS.GetVolAtSxDy lda GP.ParamS BS.GetVolAtSxDy lda GP.ParamS
asl asl
asl asl
@ -847,10 +886,11 @@ BS.GetVolAtSxDy lda GP.ParamS
pla pla
ror ror
sta GP.MLIMRKEOFBUF.REFNUM sta GP.MLIMRKEOFBUF.REFNUM
lda #$01
sta GP.SBUFADR ldx #$01
lda #$02 ldy #$02
sta GP.SBUFADR+1 jsr BS.SetSBUFADRXY
lda #MLI.C.ONLINE lda #MLI.C.ONLINE
jsr GP.GOSYSTEM jsr GP.GOSYSTEM
bcs LA849 bcs LA849
@ -936,13 +976,15 @@ LA8F5 rts
LA8F6 jsr BS.TMPBUF3Reset LA8F6 jsr BS.TMPBUF3Reset
ldy #$09 ldy #$09
jsr BS.ToUpper
LA8FB cmp BS.KW.OPT,y LA8FB cmp BS.KW.OPT,y
beq LA935 beq LA935
dey dey
bpl LA8FB bpl LA8FB
cmp #$54 cmp #'T'
beq LA90A beq LA90A
LA907 jmp BS.ERR10 LA907 jmp BS.ERR10
@ -953,8 +995,9 @@ LA90A lda #$04
ora GP.FoundBITS ora GP.FoundBITS
sta GP.FoundBITS sta GP.FoundBITS
lda #$00
sta XBC08 stz XBC08
lda #$12 lda #$12
sta XBC09 sta XBC09
jsr BS.GetCharSpaceSep jsr BS.GetCharSpaceSep
@ -1005,7 +1048,7 @@ LA955 lda BS.KW.OPT.PBITSHI,y
beq LA984 beq LA984
LA96E stx GP.INPTR LA96E stx GP.INPTR
jsr LAA6A jsr BS.GetDecDigit
bcc LA97A bcc LA97A
bmi LA9C1 bmi LA9C1
@ -1022,7 +1065,7 @@ LA984 jsr BS.GetCharSpaceSep
beq LA9BE beq LA9BE
LA989 stx GP.INPTR LA989 stx GP.INPTR
jsr LAABC jsr BS.GetHexDigit
bcc LA995 bcc LA995
bmi LA9C1 bmi LA9C1
@ -1103,9 +1146,9 @@ LA9FC lda #$0E
ldx GP.INPTR ldx GP.INPTR
clc clc
rts rts
*--------------------------------------
BS.GetPathInPathBuf BS.GetPathInPathBuf
jsr BS.GetCharUC jsr BS.GetChar UC
sta MLI.PATHBUF,y sta MLI.PATHBUF,y
iny iny
cmp #$2C cmp #$2C
@ -1122,15 +1165,15 @@ BS.GetPathInPathBuf
ora #$00 ora #$00
rts rts
*--------------------------------------
BS.GetKWInCmdBuf BS.GetKWInCmdBuf
ldx #$00 ldx #$00
ldy #$00 ldy #$00
LAA2D jsr BS.GetCharUC LAA2D jsr BS.GetChar UC
sta BS.CMDBUF,y sta BS.CMDBUF,y
iny iny
cmp #$2C cmp #','
beq LAA45 beq LAA45
cmp #$20 cmp #$20
@ -1144,33 +1187,42 @@ LAA2D jsr BS.GetCharUC
LAA45 ora #$00 LAA45 ora #$00
rts rts
*--------------------------------------
BS.GetCharSpaceSep BS.GetCharSpaceSep
lda #$20 lda #$20
sta BS.GetCharSep sta BS.GetCharSep
jsr BS.GetCharUC jsr BS.GetChar UC
cmp #$2C cmp #','
beq LAA57 beq LAA57
cmp #$0D cmp #$0D
LAA56 clc LAA56 clc
LAA57 rts LAA57 rts
*--------------------------------------
BS.GetCharUC lda IO.LINEBUF,x BS.GetCharUC lda IO.LINEBUF,x
and #$7F and #$7F
cmp #$61 cmp #$61
bcc LAA63 bcc .1
and #$5F and #$5F
LAA63 inx .1 inx
cmp BS.GetCharSep cmp BS.GetCharSep
beq BS.GetCharUC beq BS.GetCharUC
rts rts
*--------------------------------------
BS.GetChar lda IO.LINEBUF,x
and #$7F
LAA6A cmp #$30 inx
cmp BS.GetCharSep
beq BS.GetChar
rts
*--------------------------------------
BS.GetDecDigit cmp #$30
bcc LAA72 bcc LAA72
cmp #$3A cmp #$3A
@ -1225,8 +1277,8 @@ LAAA2 pla
LAAB8 lda #$FF LAAB8 lda #$FF
sec sec
LAABB rts LAABB rts
*--------------------------------------
LAABC cmp #$30 BS.GetHexDigit cmp #$30
bcc LAACC bcc LAACC
cmp #$3A cmp #$3A
@ -1243,6 +1295,7 @@ LAACC sec
rts rts
LAAD0 sbc #$06 LAAD0 sbc #$06
LAAD2 and #$0F LAAD2 and #$0F
ldx #$03 ldx #$03
@ -1255,16 +1308,16 @@ LAAD6 jsr BS.TMPBUF3x2
ora BS.TMPBUF4 ora BS.TMPBUF4
sta BS.TMPBUF4 sta BS.TMPBUF4
rts rts
*--------------------------------------
BS.TMPBUF3x2 asl BS.TMPBUF4 BS.TMPBUF3x2 asl BS.TMPBUF4
rol BS.TMPBUF4+1 rol BS.TMPBUF4+1
rol BS.TMPBUF4+2 rol BS.TMPBUF4+2
rts rts
*--------------------------------------
BS.IsIntCmd ldx #$1F BS.IsIntCmd ldx #$1F
stx GP.XCNUM stx GP.XCNUM
lda BS.CMDBUF lda BS.CMDBUF
eor #$2D eor #'-'
bne LAB03 bne LAB03
inc GP.XCNUM inc GP.XCNUM
@ -1282,7 +1335,9 @@ LAB08 lda BS.KW.LEN,x
dec GP.XLEN dec GP.XLEN
LAB13 tax LAB13 tax
LAB14 lda BS.CMDBUF,y LAB14 lda BS.CMDBUF,y
jsr BS.ToUpper
cmp BS.KW.TABLE,x cmp BS.KW.TABLE,x
bne LAB33 bne LAB33
@ -1308,16 +1363,15 @@ LAB33 ldy GP.XLEN
dec GP.XCNUM dec GP.XCNUM
sec sec
jmp GP.EXTRNCMD jmp GP.EXTRNCMD
*--------------------------------------
BS.TMPBUF3Reset ldy #$00 BS.TMPBUF3Reset stz BS.TMPBUF4
sty BS.TMPBUF4 stz BS.TMPBUF4+1
sty BS.TMPBUF4+1 stz BS.TMPBUF4+2
sty BS.TMPBUF4+2
rts rts
*--------------------------------------
BS.KW.APPEND lda GP.FITYPE BS.KW.APPEND lda GP.FITYPE
cmp #$FC cmp #$FC
beq BS.KW.02 beq BS.KW.RUN
cmp #$06 cmp #$06
beq LABA3 beq LABA3
@ -1338,12 +1392,13 @@ LAB63 cmp #$FF
LAB6F pha LAB6F pha
jsr LB562 jsr LB562
jsr LB36B jsr LB36B
lda #$00
sta GP.ParamA stz GP.ParamA
sta MLI.MEMTABL+19 stz MLI.MEMTABL+19
sta MLI.MEMTABL+20 stz MLI.MEMTABL+20
sta MLI.MEMTABL+21 stz MLI.MEMTABL+21
sta MLI.MEMTABL+22 stz MLI.MEMTABL+22
lda #$01 lda #$01
sta MLI.MEMTABL+23 sta MLI.MEMTABL+23
lda #$20 lda #$20
@ -1363,7 +1418,7 @@ LABA6 sec
jsr MON.IIGSID jsr MON.IIGSID
bcs LABA3 bcs LABA3
jmp LB099 jmp BS.QUIT.IIgs
BS.KW.X05 jsr LA411 BS.KW.X05 jsr LA411
lda AS.HIMEM+1 lda AS.HIMEM+1
@ -1381,9 +1436,9 @@ BS.KW.X05 jsr LA411
lda #$00 lda #$00
beq LABE6 beq LABE6
BS.KW.02 lda #$00 BS.KW.RUN stz GP.IFILACTV
sta GP.IFILACTV stz AS.ERRNUM
sta AS.ERRNUM
lda GP.FoundBITS lda GP.FoundBITS
lsr lsr
bcc LABF4 bcc LABF4
@ -1524,7 +1579,7 @@ LACB6 lda GP.FoundBITS+1
sta AS.TXTPTR+1 sta AS.TXTPTR+1
clc clc
LACD9 rts LACD9 rts
*--------------------------------------
BS.KW.STORE bcc LACFE BS.KW.STORE bcc LACFE
lda #$FC lda #$FC
@ -1550,13 +1605,16 @@ LACFE lda #$02
sec sec
sbc AS.PGRMSTART sbc AS.PGRMSTART
tax tax
sta GP.SBUFADR * sta GP.SBUFADR
lda AS.PGRMEND+1 lda AS.PGRMEND+1
sbc AS.PGRMSTART+1 sbc AS.PGRMSTART+1
tay tay
sta GP.SBUFADR+1 * sta GP.SBUFADR+1
lda #$00 * lda #$00
sta GP.SBUFADR+2 * sta GP.SBUFADR+2
jsr BS.SetSBUFADRXY0
lda AS.PGRMSTART lda AS.PGRMSTART
sta GP.MLIRW.DATAPTR sta GP.MLIRW.DATAPTR
lda AS.PGRMSTART+1 lda AS.PGRMSTART+1
@ -1585,12 +1643,12 @@ LAD47 rts
LAD48 stx GP.FIAUXTYPE LAD48 stx GP.FIAUXTYPE
sta GP.FIAUXTYPE+1 sta GP.FIAUXTYPE+1
jmp BS.SetFileInfoNoDate jmp BS.SetFileInfoNoDate
*--------------------------------------
BS.KW.CREATE lda #$00 BS.KW.CREATE stz GP.CRAUXTYPE
sta GP.CRAUXTYPE stz GP.CRAUXTYPE+1
sta GP.CRAUXTYPE+1 >DEBUG
lda GP.FoundBITS lda GP.FoundBITS
and #$04 and #CMDBITS0.T
bne BS.CreateFileOrDir bne BS.CreateFileOrDir
lda #$0F lda #$0F

View File

@ -163,12 +163,9 @@ LAEF7 ldx GP.XCNUM
and #$30 and #$30
beq LAF22 beq LAF22
lda GP.MLIRW.COUNT ldx GP.MLIRW.COUNT
sta GP.SBUFADR ldy GP.MLIRW.COUNT+1
lda GP.MLIRW.COUNT+1 jsr BS.SetSBUFADRXY0
sta GP.SBUFADR+1
lda #$00
sta GP.SBUFADR+2
lda #MLI.C.SETEOF lda #MLI.C.SETEOF
jsr GP.GOSYSTEM jsr GP.GOSYSTEM
@ -176,6 +173,7 @@ LAF22 lda #MLI.C.WRITE
LAF24 jsr GP.GOSYSTEM LAF24 jsr GP.GOSYSTEM
bcs LAF38 bcs LAF38
bit GP.FoundBITS+1 bit GP.FoundBITS+1
bvs LAF35 bvs LAF35
@ -224,6 +222,7 @@ LAF4E jsr LA411
lda #MLI.C.GETMARK lda #MLI.C.GETMARK
jsr GP.GOSYSTEM jsr GP.GOSYSTEM
lda #MLI.C.SETEOF lda #MLI.C.SETEOF
jsr GP.GOSYSTEM jsr GP.GOSYSTEM
bcs LAF95 bcs LAF95
@ -308,6 +307,7 @@ BS.KW.IN lda #$00
BS.KW.PR lda #$02 BS.KW.PR lda #$02
sta BS.GetCharSep sta BS.GetCharSep
lda #$08 lda #$08
LB018 ora GP.ParamINPR LB018 ora GP.ParamINPR
asl asl
tax tax
@ -372,30 +372,29 @@ LB081 lda (ZP.PCL),y
LB087 lda #$03 LB087 lda #$03
sec sec
rts rts
*--------------------------------------
BS.KW.BYE jsr LB562 BS.KW.BYE jsr LB562
jsr LB36B jsr LB36B
lda #$65 lda #$65
jsr MLI jsr MLI
.DA #MLI.C.QUIT .DA #MLI.C.QUIT
.DA GP.MLIRW .DA GP.MLIRW
*--------------------------------------
LB099 jsr MLI BS.QUIT.IIgs jsr MLI
.DA #MLI.C.QUIT .DA #MLI.C.QUIT
.DA BS.MLIQUIT2.Param .DA .1
BS.MLIQUIT2.Param
.DA #4 .1 .DA #4
.DA #$EE .DA #$EE
.DA MLI.PATHBUF .DA MLI.PATHBUF
.DA #0 .DA #0
.DA 0 .DA 0
*--------------------------------------
BS.KW.CAT lda #$27 BS.KW.CAT lda #$27
bne LB0AC .HS 2C BIT ABS
BS.KW.CATALOG lda #$4F BS.KW.CATALOG lda #$4F
LB0AC sta BS.CATWIDTH sta BS.CATWIDTH
lda GP.FoundBITS lda GP.FoundBITS
and #$05 and #$05
lsr lsr
@ -422,8 +421,6 @@ LB0C1 jsr LB1BA
jsr BS.CROUT jsr BS.CROUT
lda XBC14 lda XBC14
ora XBC15 ora XBC15
nop
nop
LB0E8 jsr LB241 LB0E8 jsr LB241
bcs LB113 bcs LB113
@ -447,8 +444,7 @@ LB0FD lda IO.KBD
bit IO.KSTROBE bit IO.KSTROBE
bcs LB113 bcs LB113
LB10E nop LB10E lda #$FF
lda #$FF
bne LB0E8 bne LB0E8
LB113 jsr BS.FileClose LB113 jsr BS.FileClose
@ -463,7 +459,7 @@ LB113 jsr BS.FileClose
clc clc
LB127 rts LB127 rts
*--------------------------------------
LB128 jsr BS.LINEBUFCLR80 LB128 jsr BS.LINEBUFCLR80
ldx #$01 ldx #$01
ldy DIRENTBUF.STNL ldy DIRENTBUF.STNL
@ -491,10 +487,13 @@ LB142 lda DIRENTBUF,y
sta IO.LINEBUF sta IO.LINEBUF
rts rts
LB157 lda #$18 LB157 ldx #BS.CMDBUF
sta GP.SBUFADR * sta GP.SBUFADR
lda #$BC ldy /BS.CMDBUF
sta GP.SBUFADR+1 * sta GP.SBUFADR+1
jsr BS.SetSBUFADRXY
lda MLI.DEVNUM lda MLI.DEVNUM
sta GP.MLIMRKEOFBUF.REFNUM sta GP.MLIMRKEOFBUF.REFNUM
lda #MLI.C.ONLINE lda #MLI.C.ONLINE
@ -535,7 +534,7 @@ LB157 lda #$18
jsr BS.AXDEC2LINEBUFY jsr BS.AXDEC2LINEBUFY
clc clc
rts rts
*--------------------------------------
LB1BA lda #$01 LB1BA lda #$01
ldx #$0F ldx #$0F
ldy GP.STTYPE ldy GP.STTYPE
@ -553,8 +552,8 @@ BS.ReadDirEnt lda #$59
sta GP.MLIRW.DATAPTR+1 sta GP.MLIRW.DATAPTR+1
lda #$2B lda #$2B
sta GP.MLIRW.COUNT sta GP.MLIRW.COUNT
lda #$00
sta GP.MLIRW.COUNT+1 stz GP.MLIRW.COUNT+1
lda #MLI.C.READ lda #MLI.C.READ
jsr GP.GOSYSTEM jsr GP.GOSYSTEM
bcs LB203 bcs LB203
@ -569,9 +568,9 @@ LB1EA lda $27C,x
sta GP.MLIRW.COUNT sta GP.MLIRW.COUNT
lda #$01 lda #$01
sta XBC16 sta XBC16
lda #$00
sta GP.SBUFADR+1 stz GP.SBUFADR+1
sta GP.SBUFADR+2 stz GP.SBUFADR+2
LB203 rts LB203 rts
BS.CheckFTypeXAccessA BS.CheckFTypeXAccessA
@ -612,7 +611,7 @@ LB239 lda #$0D
LB23D lda #$0A LB23D lda #$0A
sec sec
rts rts
*--------------------------------------
LB241 lda GP.SBUFADR+1 LB241 lda GP.SBUFADR+1
and #$FE and #$FE
sta GP.SBUFADR+1 sta GP.SBUFADR+1
@ -650,13 +649,14 @@ LB268 adc #$04
lda DIRENTBUF lda DIRENTBUF
and #$F0 and #$F0
beq LB241 beq LB241
* BUG on DEC word
dec XBC14 dec XBC14
bne LB28D bne LB28D
dec XBC15 dec XBC15
LB28D rts LB28D rts
BS.JMP.XTRNADDR jmp (GP.XTRNADDR) BS.JMP.XTRNADDR jmp (GP.XTRNADDR)
BS.KW.EXEC jsr BS.CheckFilename BS.KW.EXEC jsr BS.CheckFilename
@ -666,10 +666,9 @@ BS.KW.EXEC jsr BS.CheckFilename
bpl LB2BC bpl LB2BC
sta GP.MLIMRKEOFBUF.REFNUM sta GP.MLIMRKEOFBUF.REFNUM
lda #$00
sta GP.SBUFADR jsr BS.ZeroSBUFADR
sta GP.SBUFADR+1
sta GP.SBUFADR+2
lda #MLI.C.SETMARK lda #MLI.C.SETMARK
jsr GP.GOSYSTEM jsr GP.GOSYSTEM
bcs LB2B5 bcs LB2B5
@ -704,8 +703,8 @@ LB2D3 sec
LB2D5 jsr LA1F9 LB2D5 jsr LA1F9
bcs LB2D3 bcs LB2D3
lda #$00 stz GP.SBUFADR
sta GP.SBUFADR
lda XBBE3 lda XBBE3
sta GP.SBUFADR+1 sta GP.SBUFADR+1
ldx GP.OPENCNT ldx GP.OPENCNT
@ -738,8 +737,9 @@ LB2FB tya
LB30D pla LB30D pla
LB30E sta XBBE3 LB30E sta XBBE3
sta GP.OSYSBUF+1 sta GP.OSYSBUF+1
lda #$00
sta MLI.LEVEL stz MLI.LEVEL
lda #MLI.C.OPEN lda #MLI.C.OPEN
jsr GP.GOSYSTEM jsr GP.GOSYSTEM
bcc LB327 bcc LB327
@ -754,6 +754,7 @@ LB327 ldx GP.OSYSBUF+1
stx XBBF6 stx XBBF6
lda GP.OREFNUM lda GP.OREFNUM
sta XBBFE sta XBBFE
LB333 sta GP.MLIRW.REFNUM LB333 sta GP.MLIRW.REFNUM
sta GP.MLIMRKEOFBUF.REFNUM sta GP.MLIMRKEOFBUF.REFNUM
sta GP.NEWLREF sta GP.NEWLREF
@ -803,8 +804,8 @@ BS.KW.X10 bcs LB3B7
LB38D clc LB38D clc
rts rts
lda #$00 * lda #$00
beq LB39F * beq LB39F
BS.KW.FLUSH lda GP.FoundBITS BS.KW.FLUSH lda GP.FoundBITS
and #$01 and #$01
@ -918,6 +919,7 @@ LB443 lda #$00
lda GP.OREFNUM lda GP.OREFNUM
sta XBBF7,x sta XBBF7,x
inc GP.OPENCNT inc GP.OPENCNT
LB45B asl LB45B asl
asl asl
asl asl
@ -1056,8 +1058,8 @@ LB515 sta GP.MLICF.REFNUM
pla pla
sta XBBF6,y sta XBBF6,y
LB53F lda #$00 LB53F stz MLI.LEVEL
sta MLI.LEVEL
lda #MLI.C.CLOSE lda #MLI.C.CLOSE
jsr GP.GOSYSTEM jsr GP.GOSYSTEM
bcs LB572 bcs LB572
@ -1066,11 +1068,9 @@ LB53F lda #$00
bit GP.EXECFILE bit GP.EXECFILE
bpl LB55E bpl LB55E
pha stz GP.EXECACTV
lda #$00 stz GP.EXECFILE
sta GP.EXECACTV
sta GP.EXECFILE
pla
rts rts
LB55E dec GP.OPENCNT LB55E dec GP.OPENCNT
@ -1086,8 +1086,8 @@ LB562 ldx GP.OPENCNT
LB572 rts LB572 rts
LB573 lda #$00 LB573 stz GP.MLICF.REFNUM
sta GP.MLICF.REFNUM
lda #$07 lda #$07
sta MLI.LEVEL sta MLI.LEVEL
lda #MLI.C.CLOSE lda #MLI.C.CLOSE
@ -1118,9 +1118,10 @@ LB592 lda GP.FoundBITS+1
LB5AD lda #$EF LB5AD lda #$EF
sta GP.MLIRW.COUNT sta GP.MLIRW.COUNT
lda #$00
sta GP.MLIRW.COUNT+1 stz GP.MLIRW.COUNT+1
sta GP.MLIRW.DATAPTR stz GP.MLIRW.DATAPTR
lda #$02 lda #$02
sta GP.MLIRW.DATAPTR+1 sta GP.MLIRW.DATAPTR+1
lda #$7F lda #$7F
@ -1154,12 +1155,12 @@ LB5F1 lda XBBFF
sta BS.TMPBUF4 sta BS.TMPBUF4
lda XBC00 lda XBC00
sta BS.TMPBUF4+1 sta BS.TMPBUF4+1
lda #$00
sta BS.TMPBUF4+2 stz BS.TMPBUF4+2
sta BS.TMPBUF4+3 stz BS.TMPBUF4+3
sta GP.SBUFADR
sta GP.SBUFADR+1 jsr BS.ZeroSBUFADR
sta GP.SBUFADR+2
LB60E lsr GP.ParamR+1 LB60E lsr GP.ParamR+1
ror GP.ParamR ror GP.ParamR
ldx #$00 ldx #$00
@ -1232,8 +1233,9 @@ LB67C sta GP.MLIRW.DATAPTR
stx GP.NLINEMASK stx GP.NLINEMASK
lda #$02 lda #$02
sta GP.MLIRW.DATAPTR+1 sta GP.MLIRW.DATAPTR+1
lda #$00
sta GP.MLIRW.COUNT+1 stz GP.MLIRW.COUNT+1
lda #MLI.C.NEWLINE lda #MLI.C.NEWLINE
jsr GP.GOSYSTEM jsr GP.GOSYSTEM
bcs LB69B bcs LB69B
@ -1253,10 +1255,8 @@ LB69C lda #$59
clc clc
beq LB696 beq LB696
lda #$00 jsr BS.ZeroSBUFADR
sta GP.SBUFADR
sta GP.SBUFADR+1
sta GP.SBUFADR+2
lda #MLI.C.SETMARK lda #MLI.C.SETMARK
jsr GP.GOSYSTEM jsr GP.GOSYSTEM
bcs LB6CA bcs LB6CA
@ -1333,8 +1333,7 @@ BS.KW.X08 jsr BS.CheckFilename
LB732 sec LB732 sec
rts rts
LB734 lda #$00 LB734 stz GP.MLIRW.DATAPTR
sta GP.MLIRW.DATAPTR
lda #$02 lda #$02
sta GP.MLIRW.DATAPTR+1 sta GP.MLIRW.DATAPTR+1
jsr LB6D0 jsr LB6D0
@ -1397,12 +1396,7 @@ LB78A ldx GP.ParamL
ldy GP.FIAUXTYPE+1 ldy GP.FIAUXTYPE+1
LB79D txa LB79D txa
pha pha
lda GP.MLIRW.REFNUM jsr BS.GetFTableIdx
lsr
ror
ror
ror
tax
pla pla
sta XBC5A,x sta XBC5A,x
sta XBBFF sta XBBFF
@ -1485,11 +1479,10 @@ BS.GetFileInfo lda #$0A
bne LB858 bne LB858
BS.SetFileInfoNoDate BS.SetFileInfoNoDate
lda #$00 stz GP.FIMDATE
sta GP.FIMDATE stz GP.FIMDATE+1
sta GP.FIMDATE+1 stz GP.FICDATE
sta GP.FICDATE stz GP.FICDATE+1
sta GP.FICDATE+1
BS.SetFileInfo lda #$07 BS.SetFileInfo lda #$07
sta GP.SSGINFO sta GP.SSGINFO
@ -1500,6 +1493,37 @@ LB858 jmp GP.GOSYSTEM
BS.JMP.GP.VSYSO jmp (GP.VSYSO) BS.JMP.GP.VSYSO jmp (GP.VSYSO)
BS.JMP.GP.VSYSI jmp (GP.VSYSI) BS.JMP.GP.VSYSI jmp (GP.VSYSI)
*-------------------------------------- *--------------------------------------
BS.ToUpper cmp #'a'
bcc .9
cmp #'z'+1
bcs .9
eor #$20
.9 rts
*--------------------------------------
BS.GetFTableIdx lda GP.MLIRW.REFNUM
lsr
ror
ror
ror
tax
rts
*--------------------------------------
BS.SetSBUFADRXY0
stz GP.SBUFADR+2
BS.SetSBUFADRXY stx GP.SBUFADR
sty GP.SBUFADR+1
rts
*--------------------------------------
BS.ZeroSBUFADR lda #0
sta GP.SBUFADR
sta GP.SBUFADR+1
sta GP.SBUFADR+2
rts
*--------------------------------------
MAN MAN
SAVE usr/src/basic.fx/basic.s.c SAVE usr/src/basic.fx/basic.s.c
LOAD usr/src/basic.fx/basic.s LOAD usr/src/basic.fx/basic.s

View File

@ -1,5 +1,10 @@
NEW NEW
AUTO 3,1 AUTO 3,1
*--------------------------------------
.LIST ON
BS.FREESPACE .EQ $B861-*
.BS BS.FREESPACE
.LIST OFF
*-------------------------------------- *--------------------------------------
BS.SYSIOVECTS .DA BS.IO.OUT BS.SYSIOVECTS .DA BS.IO.OUT
.DA BS.IO.IN .DA BS.IO.IN
@ -7,8 +12,8 @@ BS.SYSIOVECTS .DA BS.IO.OUT
.DA BS.IO.IN0 .DA BS.IO.IN0
.DA BS.IO.OUT.CAT .DA BS.IO.OUT.CAT
.DA BS.IO.IN0 .DA BS.IO.IN0
BS.VSYSO.LO .DA #$A7 BS.VSYSO.LO .DA #BS.VSYSO
BS.VSYSO.HI .DA #$9D BS.VSYSO.HI .DA /BS.VSYSO
BS.ParamLByte .DA #$A0 BS.ParamLByte .DA #$A0
.DA #$AC .DA #$AC
.DA #$AF .DA #$AF
@ -125,15 +130,15 @@ BS.KW.LEN .DA #$BF
.DA #$B5 .DA #$B5
.DA #$D8 .DA #$D8
BS.KW.TABLE .AS "BSAVERIFYBLOADELETEBYECATALOGOPENWRITEXECREATEFRESTORENAMEBRUNLOCKCHAIN#FLUSHREADPOSITIONOMONPR#PREFIXCLOSEAPPEND" BS.KW.TABLE .AS "BSAVERIFYBLOADELETEBYECATALOGOPENWRITEXECREATEFRESTORENAMEBRUNLOCKCHAIN#FLUSHREADPOSITIONOMONPR#PREFIXCLOSEAPPEND"
BS.KW.JMP .DA BS.JMP.XTRNADDR BS.KW.JMP .DA BS.JMP.XTRNADDR $00
.DA BS.KW.PR .DA BS.KW.PR
.DA BS.KW.IN .DA BS.KW.IN
.DA BS.KW.CAT .DA BS.KW.CAT
.DA BS.KW.01 .DA BS.KW.01
.DA BS.KW.BYE .DA BS.KW.BYE
.DA BS.KW.02 .DA BS.KW.RUN
.DA BS.KW.BRUN .DA BS.KW.BRUN
.DA BS.KW.EXEC .DA BS.KW.EXEC $10
.DA BS.KW.RESTORE .DA BS.KW.RESTORE
.DA BS.KW.LOCK .DA BS.KW.LOCK
.DA BS.KW.03 .DA BS.KW.03
@ -141,7 +146,7 @@ BS.KW.JMP .DA BS.JMP.XTRNADDR
.DA BS.KW.STORE .DA BS.KW.STORE
.DA BS.KW.BLOAD .DA BS.KW.BLOAD
.DA BS.KW.BSAVE .DA BS.KW.BSAVE
.DA BS.KW.X05 .DA BS.KW.X05 $20
.DA BS.KW.X06 .DA BS.KW.X06
.DA BS.KW.FLUSH .DA BS.KW.FLUSH
.DA BS.KW.X07 .DA BS.KW.X07
@ -149,7 +154,7 @@ BS.KW.JMP .DA BS.JMP.XTRNADDR
.DA BS.KW.X08 .DA BS.KW.X08
.DA BS.KW.X09 .DA BS.KW.X09
.DA BS.KW.CREATE .DA BS.KW.CREATE
.DA BS.KW.DELETE .DA BS.KW.DELETE $30
.DA BS.KW.PREFIX .DA BS.KW.PREFIX
.DA BS.KW.RENAME .DA BS.KW.RENAME
.DA BS.KW.UNLOCK .DA BS.KW.UNLOCK
@ -157,7 +162,7 @@ BS.KW.JMP .DA BS.JMP.XTRNADDR
.DA BS.KW.CATALOG .DA BS.KW.CATALOG
.DA BS.KW.LOAD .DA BS.KW.LOAD
.DA BS.KW.CLOSE .DA BS.KW.CLOSE
.DA BS.KW.APPEND .DA BS.KW.APPEND $40
BS.KW.PBITS .DA $8040 BS.KW.PBITS .DA $8040
.DA $8040 .DA $8040
.DA $0495 .DA $0495

View File

@ -279,11 +279,9 @@ LDR.GFINFO.P.PATHBUF
LDR.GETSETPFX1.P LDR.GETSETPFX1.P
.DA #1 .DA #1
LDR.GETSETPFX1.P.BUF .DA LDR.GETSETPFX1.SLASH
.DA LDR.GETSETPFX1.SLASHLEN
LDR.GETSETPFX1.SLASHLEN
.DA #1
LDR.GETSETPFX1.SLASH LDR.GETSETPFX1.SLASH
.DA #1
.AS "/" .AS "/"
LDR.STARTUP.LEN1 LDR.STARTUP.LEN1
.DA #0 .DA #0
@ -295,12 +293,11 @@ LDR.ONLINE.P.BUF
.DA MLI.PATHBUF+1 .DA MLI.PATHBUF+1
LDR.GETSETPFX2.P LDR.GETSETPFX2.P
.DA #1 .DA #1
LDR.GETSETPFX2.P.BUF
.DA MLI.PATHBUF .DA MLI.PATHBUF
LDR.PFXLEN .DA #0 LDR.PFXLEN .DA #0
LDR.UNABLE .AS -"*** UNABLE TO EXECUTE BASIC SYSTEM ***" LDR.UNABLE .AS -"*** UNABLE TO EXECUTE BASIC SYSTEM ***"
LDR.PRODOSBASIC .AS -" PRODOS BASIC 1.5 " LDR.PRODOSBASIC .AS -" PRODOS BASIC FX"
LDR.COPYRIGHT .AS -" COPYRIGHT APPLE 1983-92" LDR.COPYRIGHT .AS -" COPYRIGHT APPLE 1983-92"
.BS $2400-* .BS $2400-*
*-------------------------------------- *--------------------------------------

View File

@ -1,9 +1,36 @@
NEW NEW
AUTO 3,1 AUTO 3,1
.LIST OFF .LIST OFF
.OP 6502 .OP 65c02
.OR $2000 .OR $2000
.TF BASIC.FX,TSYS .TF BASIC.SYSTEM,TSYS
*--------------------------------------
.MA DEBUG
:1 bit $C000
bpl :1
sta $C010
.EM
*--------------------------------------
LOWERCASE .EQ 1
*--------------------------------------
CMDBITS0.PFIX .EQ $80 ;Prefix needs fetching, pathname optional
CMDBITS0.SLOT .EQ $40 ;No parameters to be processed
CMDBITS0.RRUN .EQ $20 ;Command only valid during program
CMDBITS0.FNOPT .EQ $10 ;Filename is optional
CMDBITS0.CRFLG .EQ $08 ;CREATE allowed
CMDBITS0.T .EQ $04 ;File type
CMDBITS0.FN2 .EQ $02 ;Filename '2' for RENAME
CMDBITS0.FN1 .EQ $01 ;Filename expected
CMDBITS1.AD .EQ $80 ;Address
CMDBITS1.B .EQ $40 ;Byte
CMDBITS1.E .EQ $20 ;End address
CMDBITS1.L .EQ $10 ;Length
CMDBITS1.LINE .EQ $08 ;'@' line number
CMDBITS1.SD .EQ $04 ;Slot and drive numbers
CMDBITS1.F .EQ $02 ;Field
CMDBITS1.R .EQ $01 ;Record
CMDBITS1.V .EQ $00 ;Volume number ignored
*-------------------------------------- *--------------------------------------
Ptr1 .EQ 0 Ptr1 .EQ 0
Ptr2 .EQ 2 Ptr2 .EQ 2

View File

@ -27,8 +27,9 @@ ILDR.ENUMPM .DO PM
jsr ILDR.EnumInit jsr ILDR.EnumInit
.1 ldx #S.FI.T.BIN .1 ldx #S.FI.T.BIN
ldy #ILDR.KMSFX ldy #ILDR.KMPFX
lda /ILDR.KMSFX lda /ILDR.KMPFX
clc prefix
jsr ILDR.EnumNext jsr ILDR.EnumNext
bcs .4 bcs .4
@ -65,6 +66,7 @@ ILDR.ENUMPM .DO PM
ldx #S.FI.T.SYS ldx #S.FI.T.SYS
ldy #ILDR.SYSTEMSFX ldy #ILDR.SYSTEMSFX
lda /ILDR.SYSTEMSFX lda /ILDR.SYSTEMSFX
sec suffix
jsr ILDR.EnumNext jsr ILDR.EnumNext
bcs .9 bcs .9
@ -151,12 +153,14 @@ ILDR.EnumInit.RTS
rts rts
*-------------------------------------- *--------------------------------------
* X = expected FileType * X = expected FileType
* Y,A = expected suffix * Y,A = expected prefix/suffix
*-------------------------------------- *--------------------------------------
ILDR.EnumNext stx ILDR.FT ILDR.EnumNext stx ILDR.FT
sty src sty src
sta src+1 sta src+1
ror ILDR.bPFXSFX
.1 inc ILDR.nFC .1 inc ILDR.nFC
bne .2 bne .2
@ -208,9 +212,12 @@ ILDR.EnumNext stx ILDR.FT
cmp ILDR.FT expected file type cmp ILDR.FT expected file type
bne .1 bne .1
lda (src) expected suffix len lda (src) expected prefix/suffix len
cmp pbuf cmp pbuf
bcs .1 filename LE suffix bcs .1 filename LE prefix/suffix
bit ILDR.bPFXSFX
bpl .12 go check prefix
tay tay
ldx pbuf ldx pbuf
@ -223,8 +230,20 @@ ILDR.EnumNext stx ILDR.FT
dex dex
dey dey
bne .11 bne .11
bra .15
ldy #$1D MIN_VERSION .12 lda (src) expected prefix/suffix len
tay
.13 lda pbuf,y
eor (src),y
asl
bne .1
dey
bne .13
.15 ldy #$1D MIN_VERSION
lda (idxl),y lda (idxl),y
bpl .10 no lowercase information bpl .10 no lowercase information
@ -335,8 +354,8 @@ ILDR.QUIT .DA #4 PARAM CNT
*-------------------------------------- *--------------------------------------
ILDR.ATINIT .DA #6 ILDR.ATINIT .DA #6
.AS "ATINIT" .AS "ATINIT"
ILDR.KMSFX .DA #3 ILDR.KMPFX .DA #3
.AS ".PM" .AS "PM."
ILDR.SYSTEMSFX .DA #7 ILDR.SYSTEMSFX .DA #7
.AS ".SYSTEM" .AS ".SYSTEM"
*-------------------------------------- *--------------------------------------
@ -348,6 +367,7 @@ ILDR.EL .BS 1
ILDR.nFC .BS 2 ILDR.nFC .BS 2
ILDR.FT .BS 1 ILDR.FT .BS 1
ILDR.EITB .BS 1 ILDR.EITB .BS 1
ILDR.bPFXSFX .BS 1
.ED .ED
*-------------------------------------- *--------------------------------------
MAN MAN

View File

@ -3,7 +3,7 @@ NEW
.LIST OFF .LIST OFF
.OP 65816 .OP 65816
.OR $2000 .OR $2000
.TF PRODOS.FX,TSYS .TF PRODOS,TSYS
*-------------------------------------- *--------------------------------------
READCAT .EQ 0 Boot Block read Catalog at $C00 READCAT .EQ 0 Boot Block read Catalog at $C00
ENHFILENAME .EQ 1 ENHFILENAME .EQ 1

View File

@ -299,6 +299,10 @@ CS.QUIT
.8 clc .8 clc
rts rts
*-------------------------------------- *--------------------------------------
*
*--------------------------------------
CS.DRV
*--------------------------------------
CS.END CS.END
*-------------------------------------- *--------------------------------------
* Initialized DATA * Initialized DATA

View File

@ -460,19 +460,18 @@ CPU.Init >PUSHWI MSG.CPU
>PUSHBI 1 >PUSHBI 1
>SYSCALL2 printf >SYSCALL2 printf
ldy #0
stz A2osX.CPUSPEED+1 stz A2osX.CPUSPEED+1
ldx A2osX.HZ
ldy #0
php php
sei sei
ldx A2osX.HWType lda A2osX.HWType
cpx #A2osX.HWType.IIc cmp #A2osX.HWType.IIc
beq CPU.Init2c beq CPU.Init2c
ldx A2osX.HZ
.1 bit VBL //e : Wait VBL high.... .1 bit VBL //e : Wait VBL high....
bpl .1 bpl .1
@ -489,8 +488,6 @@ CPU.Init >PUSHWI MSG.CPU
pla (4) pla (4)
pha (3) pha (3)
pla (4) pla (4)
pha (3)
pla (4)
iny iny
cpy #100 cpy #100
@ -507,21 +504,22 @@ CPU.Init >PUSHWI MSG.CPU
bra CPU.InitOK bra CPU.InitOK
*-------------------------------------- *--------------------------------------
CPU.Init2c sta CLRIOUDIS CPU.Init2c lda RDIOUDIS
pha
sta CLRIOUDIS
lda IO.IIC.RDVBLMSK lda IO.IIC.RDVBLMSK
pha Save VBLIRQ enable pha Save VBLIRQ enable
sta IO.IIC.ENVBL sta IO.IIC.ENVBL
lda IO.IIC.CLRVBLIRQ
ldx A2osX.HZ lda IO.IIC.CLRVBLIRQ
.1 bit VBL Wait VBL high.... .1 bit VBL Wait VBL high....
bpl .1 bpl .1
bit IO.IIC.CLRVBLIRQ clear //c IRQ bit IO.IIC.CLRVBLIRQ clear //c IRQ
.3 lda #40 .3 lda #60
.4 pha (3) .4 pha (3)
pla (4) pla (4)
@ -547,9 +545,14 @@ CPU.Init2c sta CLRIOUDIS
bne .3 bne .3
pla Disable VBLIRQ ? pla Disable VBLIRQ ?
bpl CPU.InitOk bpl .8
sta IO.IIC.DISVBL sta IO.IIC.DISVBL
.8 pla
bpl CPU.InitOk
sta SETIOUDIS
*-------------------------------------- *--------------------------------------
CPU.InitOk plp CPU.InitOk plp

View File

@ -3,7 +3,7 @@ NEW
.LIST OFF .LIST OFF
.OP 65C02 .OP 65C02
.OR $2000 .OR $2000
.TF sys/km/km.appletalk .TF sys/pm/pm.appletalk
*-------------------------------------- *--------------------------------------
.INB inc/macros.i .INB inc/macros.i
.INB inc/io.i .INB inc/io.i
@ -177,5 +177,5 @@ MLI.AT.FINaming .DA #0 Synchonous
.DA #%10000000 b7=1:Use AFP long Name, b6=0:Update ProDOS dev table .DA #%10000000 b7=1:Use AFP long Name, b6=0:Update ProDOS dev table
*-------------------------------------- *--------------------------------------
MAN MAN
SAVE usr/src/sys/km.appletalk.s SAVE usr/src/sys/pm.appletalk.s
ASM ASM

View File

@ -3,7 +3,7 @@ NEW
.LIST OFF .LIST OFF
.OP 65C02 .OP 65C02
.OR $2000 .OR $2000
.TF sys/km/km.nsc .TF sys/pm/pm.nsc
*-------------------------------------- *--------------------------------------
.INB inc/macros.i .INB inc/macros.i
.INB inc/io.i .INB inc/io.i
@ -319,5 +319,5 @@ NSCDRV.SIZE .EQ *-NSCDRV.B.START
.FIN .FIN
*-------------------------------------- *--------------------------------------
MAN MAN
SAVE usr/src/sys/km.nsc.s SAVE usr/src/sys/pm.nsc.s
ASM ASM

View File

@ -3,8 +3,7 @@ NEW
.LIST OFF .LIST OFF
.OP 65C02 .OP 65C02
.OR $2000 .OR $2000
.TF sys/km/km.ramworks .TF sys/pm/pm.ramworks
* .TF ramworks.pm
*-------------------------------------- *--------------------------------------
.INB inc/macros.i .INB inc/macros.i
.INB inc/io.i .INB inc/io.i
@ -793,5 +792,5 @@ RWDRVX.SIZE .EQ RWDRVX.B.END-RWDRVX.B.START
.FIN .FIN
*-------------------------------------- *--------------------------------------
MAN MAN
SAVE usr/src/sys/km.ramworks.s SAVE usr/src/sys/pm.ramworks.s
ASM ASM

View File

@ -374,6 +374,6 @@ VEDRIVE.GetCharPtr1
.9 rts .9 rts
*-------------------------------------- *--------------------------------------
MAN MAN
SAVE usr/src/sys/km.vedrive.s.cf SAVE usr/src/sys/pm.vedrive.s.cf
LOAD usr/src/sys/km.vedrive.s LOAD usr/src/sys/pm.vedrive.s
ASM ASM

View File

@ -12,6 +12,6 @@ DRV.GS .EQ *
.EP .EP
*-------------------------------------- *--------------------------------------
MAN MAN
SAVE usr/src/sys/km.vedrive.s.gs SAVE usr/src/sys/pm.vedrive.s.gs
LOAD usr/src/sys/km.vedrive.s LOAD usr/src/sys/pm.vedrive.s
ASM ASM

View File

@ -524,6 +524,6 @@ VEDRIVE.CheckARPFrame
rts rts
*-------------------------------------- *--------------------------------------
MAN MAN
SAVE usr/src/sys/km.vedrive.s.ip SAVE usr/src/sys/pm.vedrive.s.ip
LOAD usr/src/sys/km.vedrive.s LOAD usr/src/sys/pm.vedrive.s
ASM ASM

View File

@ -6,8 +6,7 @@ U1.Init lda CONF.SLOT
asl asl
asl asl
asl asl
sta DRV.U1+2 set DRV.U1.Slotn0 sta Slotn0
tax tax
lda /PP.ID lda /PP.ID
@ -47,7 +46,7 @@ U1.Init lda CONF.SLOT
>LDYAI VEDRIVE.NICOK >LDYAI VEDRIVE.NICOK
jsr PrintFYA jsr PrintFYA
ldx DRV.U1+2 ldx Slotn0
lda /PP.RxCTL lda /PP.RxCTL
sta PacketPagePTR+1,x sta PacketPagePTR+1,x
@ -104,7 +103,7 @@ U1.Init lda CONF.SLOT
U1.READ php U1.READ php
sei sei
ldx DRV.U1+2 ldx Slotn0
lda /PP.RxEvent lda /PP.RxEvent
sta PacketPagePTR+1,x sta PacketPagePTR+1,x
@ -129,7 +128,7 @@ U1.READ php
eor #$ff eor #$ff
sta ZPnCnt sta ZPnCnt
ldx DRV.U1+2 ldx Slotn0
lda ZPBufPtr+1 lda ZPBufPtr+1
pha pha
@ -174,7 +173,7 @@ U1.READWRITE.9 plp
U1.WRITE php U1.WRITE php
sei sei
ldx DRV.U1+2 ldx Slotn0
lda /PP.TxCMD.LID+PP.TxCMD.TxStartFULL lda /PP.TxCMD.LID+PP.TxCMD.TxStartFULL
sta TxCMD+1,x sta TxCMD+1,x
@ -201,7 +200,7 @@ U1.WRITE php
bit /PP.BusST.Rdy4TxNOW bit /PP.BusST.Rdy4TxNOW
beq U1.READWRITE.9 beq U1.READWRITE.9
ldx DRV.U1+2 ldx Slotn0
ldy #0 ldy #0
@ -237,12 +236,10 @@ U1.Name >PSTR "Uthernet V1"
*-------------------------------------- *--------------------------------------
DRV.U1 .EQ * DRV.U1 .EQ *
.PH $D400 .PH $D400
cld
ldx #$ff SELF MODIFIED
.EP .EP
*-------------------------------------- *--------------------------------------
MAN MAN
SAVE usr/src/sys/km.vedrive.s.u1 SAVE usr/src/sys/pm.vedrive.s.u1
LOAD usr/src/sys/km.vedrive.s LOAD usr/src/sys/pm.vedrive.s
ASM ASM

View File

@ -8,7 +8,7 @@ U2.Init lda CONF.SLOT
asl asl
clc clc
adc #$88 adc #$88
sta DRV.U2+2 set DRV.U2.Slotn0 sta Slotn0
tax tax
lda #W5100.MR.RST lda #W5100.MR.RST
@ -56,7 +56,7 @@ U2.Init lda CONF.SLOT
>LDYAI VEDRIVE.NICOK >LDYAI VEDRIVE.NICOK
jsr PrintFYA jsr PrintFYA
ldx DRV.U2+2 ldx Slotn0
lda #W5100.MR.PB+W5100.MR.AI+W5100.MR.IND lda #W5100.MR.PB+W5100.MR.AI+W5100.MR.IND
sta W5100.MR,x sta W5100.MR,x
@ -83,14 +83,13 @@ U2.Init lda CONF.SLOT
lda #W5100.AR.Sn.CR.OPEN lda #W5100.AR.Sn.CR.OPEN
sta W5100.DR,x sta W5100.DR,x
clc clc
rts rts
*-------------------------------------- *--------------------------------------
U2.Read php U2.Read php
sei sei
ldx DRV.U2+2 ldx Slotn0
>AR.SELECT S0.RX.RSR >AR.SELECT S0.RX.RSR
lda W5100.DR,x get the received size HI lda W5100.DR,x get the received size HI
@ -180,7 +179,7 @@ U2.READWRITE.9 plp
U2.Write php U2.Write php
sei sei
ldx DRV.U2+2 ldx Slotn0
lda ZPBufCnt lda ZPBufCnt
eor #$ff eor #$ff
@ -252,13 +251,181 @@ Offset .BS 2
TotalSize .BS 2 TotalSize .BS 2
*-------------------------------------- *--------------------------------------
DRV.U2 .EQ * DRV.U2 .EQ *
.PH $D400 .PH DRV.NIC.START
cld
ldx #$ff SELF MODIFIED DRV.U2.START jmp DRV.U2.Write
DRV.U2.Read php
sei
ldx DRV.START
>AR.SELECT S0.RX.RSR
lda W5100.DR,x get the received size HI
nop
nop
ora W5100.DR,x LO
bne .1
jmp DRV.U2.9
.1 >AR.SELECT S0.RX.RD
lda W5100.DR,x get the received ptr HI
sta Offset+1
ldy W5100.DR,x get the received ptr LO
sty Offset
and /RXTX.MASK
ora /RX.BASE
sta W5100.AR,x
tya
sta W5100.AR+1,x
lda W5100.DR,x get RX.Size HI (Frame size + 2)
sta TotalSize+1
lda W5100.DR,x get RX.Size LO
sta TotalSize
sec
sbc #2 MACRAW:strip 2 bytes Header from Size
sta ZPBufCnt
eor #$ff
sta ZPnCnt
lda TotalSize+1
sbc #0
sta ZPBufCnt
eor #$ff
sta ZPnCnt+1
lda ZPBufPtr+1
pha
ldy #0
.2 inc ZPnCnt
bne .3
inc ZPnCnt+1
beq .8
.3 lda W5100.DR,x
sta (ZPBufPtr),y
iny
bne .2
inc ZPBufPtr+1
bra .2
.8 >AR.SELECT S0.RX.RD
lda Offset
clc
adc TotalSize
pha save LO
lda Offset+1
adc TotalSize+1
sta W5100.DR,x write HI
pla
sta W5100.DR,x write LO
>AR.SELECT S0.CR
lda #W5100.AR.Sn.CR.RCVD
sta W5100.DR,x
pla
sta ZPBufPtr+1
plp
clc
rts
*--------------------------------------
DRV.U2.9 plp
sec
rts
*--------------------------------------
DRV.U2.Write php
sei
>STYA ZPBufCnt
eor #$ff
sta ZPnCnt+1
tya
eor #$ff
sta ZPnCnt
>LDYA DRV.OutBuf
>STYA ZPBufPtr
ldx DRV.START
>AR.SELECT S0.TX.FSR
lda W5100.DR,x get send size HI
nop
nop
ldy W5100.DR,x LO
cpy ZPBufCnt
sbc ZPBufCnt+1
bcc DRV.U2.9
>AR.SELECT S0.TX.WR
lda W5100.DR,x Get HI
nop
nop
ldy W5100.DR,x Get LO
and /RXTX.MASK
ora /TX.BASE
sta W5100.AR,x Write HI
sta Offset+1
tya
sta W5100.AR+1,x Write LO
sta Offset
ldy #0
.2 inc ZPnCnt
bne .3
inc ZPnCnt+1
beq .8
.3 lda (ZPBufPtr),y
sta W5100.DR,x
iny
bne .2
inc ZPBufPtr+1
bra .2
.8 >AR.SELECT S0.TX.WR
lda Offset
clc
adc ZPBufCnt
pha save LO
lda Offset+1
adc ZPBufCnt+1
sta W5100.DR,x write HI
pla
sta W5100.DR,x write LO
>AR.SELECT S0.CR
lda #W5100.AR.Sn.CR.SEND
sta W5100.DR,x
plp
clc
rts
.EP .EP
.LIST ON
DRV.U2.SIZE .EQ *-DRV.U2
.LIST OFF
*-------------------------------------- *--------------------------------------
MAN MAN
SAVE usr/src/sys/km.vedrive.s.u2 SAVE usr/src/sys/pm.vedrive.s.u2
LOAD usr/src/sys/km.vedrive.s LOAD usr/src/sys/pm.vedrive.s
ASM ASM

View File

@ -3,8 +3,8 @@ NEW
.LIST OFF .LIST OFF
.OP 65C02 .OP 65C02
.OR $2000 .OR $2000
* .TF sys/km.vedrive * .TF sys/pm/pm.vedrive
.TF vedrive.pm .TF sys/pm.vedrive
*-------------------------------------- *--------------------------------------
.INB inc/macros.i .INB inc/macros.i
.INB inc/io.i .INB inc/io.i
@ -31,11 +31,12 @@ ZPCheckSum .EQ 14
timerS .EQ 16 timerS .EQ 16
timerC .EQ 17 timerC .EQ 17
bRemoteMac .EQ 18 bRemoteMac .EQ 18
Slotn0 .EQ 19
*-------------------------------------- *--------------------------------------
ADT.CMD.VSD .EQ $C5 "E": Virtual Drive Command Envelope ADT.CMD.VSD .EQ $C5 "E": Virtual Drive Command Envelope
ADT.CMD.PING .EQ $D9 "Y": PING ADT.CMD.PING .EQ $D9 "Y": PING
DRV.EntryPoint .EQ $BF41 DRV.EntryPoint .EQ $BF41
DRV.ADDR .EQ $D400 DRV.NIC.START .EQ $D500
*-------------------------------------- *--------------------------------------
CONF.FBUF .EQ $4000 CONF.FBUF .EQ $4000
CONF.LBUF .EQ $4400 CONF.LBUF .EQ $4400
@ -67,7 +68,6 @@ VEDRIVE.Init >LDYAI VEDRIVE.MSG0
rts rts
.3 jsr VEDRIVE.MACInit .3 jsr VEDRIVE.MACInit
lda CONF.ADDRESS lda CONF.ADDRESS
bne .4 bne .4
@ -111,7 +111,7 @@ VEDRIVE.Init >LDYAI VEDRIVE.MSG0
.7 >LDYAI VEDRIVE.SRVOK .7 >LDYAI VEDRIVE.SRVOK
jsr PrintFYA jsr PrintFYA
jsr VEDRIVE.SetSlot * jsr VEDRIVE.SetSlot
bcc .8 bcc .8
>LDYAI VEDRIVE.NOSLOT >LDYAI VEDRIVE.NOSLOT
@ -135,22 +135,20 @@ VEDRIVE.Init >LDYAI VEDRIVE.MSG0
rts rts
*-------------------------------------- *--------------------------------------
VEDRIVE.CheckDRV VEDRIVE.CheckDRV
bit RRAMWRAMBNK2 ldx #COPYRIGHT.LEN
bit RRAMWRAMBNK2
clc
lda $D400
eor #$D8 CLD
bne .8
lda $D401
eor #$A2 LDX #imm
bne .8
sec sec
.8 bit RROMBNK1 .1 lda DRV.EntryPoint-1,x
rts eor COPYRIGHT-1,x
bne .9
dex
bne .1
clc
.9 rts
*-------------------------------------- *--------------------------------------
VEDRIVE.Ping lda CONF.PORT VEDRIVE.Ping lda CONF.PORT
sta ADT.REQ.UDP.DST sta ADT.REQ.UDP.DST
@ -287,28 +285,93 @@ VEDRIVE.SetSlot ldx #2 Starts at Slot1
*-------------------------------------- *--------------------------------------
VEDRIVE.Install ldx #PATCH.SIZE VEDRIVE.Install ldx #PATCH.SIZE
.1 lda PATCH-1,x *.1 lda PATCH-1,x
sta DRV.EntryPoint-1,x * sta DRV.EntryPoint-1,x
dex * dex
bne .1 * bne .1
bit RRAMWRAMBNK2 bit RRAMWRAMBNK2
bit RRAMWRAMBNK2 bit RRAMWRAMBNK2
ldy #DRV.SIZE-1
.2 lda DRV,y
sta DRV.START,y
dey
bne .2
lda Slotn0
sta DRV.START
ldy #DRV.IP.SIZE-1
.3 lda DRV.IP,y
sta DRV.IP.START,y
dey
bne .3
ldx CONF.NIC
lda .10,x
sta ZPPtr1
lda .10+1,x
sta ZPPtr1+1
lda .20,x
eor #$ff
sta ZPnCnt
lda .20+1,x
eor #$ff
sta ZPnCnt+1
lda #DRV.NIC.START
sta ZPPtr2
lda /DRV.NIC.START
sta ZPPtr2+1
ldy #0
.4 inc ZPnCnt
bne .5
inc ZPnCnt+1
beq .6
.5 lda (ZPPtr1),y
sta (ZPPtr2),y
iny
bne .4
inc ZPPtr1+1
inc ZPPtr2+1
bra .4
.6 ldy #S.UDP
.7 lda ADT.REQ-1,y
sta DRV.OutBuf-1,y
dey
bne .7
bit RROMBNK1 bit RROMBNK1
clc clc
rts rts
*--------------------------------------
.10 .DA DRV.U2
.DA DRV.U2
.DA DRV.U2
*--------------------------------------
.20 .DA DRV.U2.SIZE
.DA DRV.U2.SIZE
.DA DRV.U2.SIZE
*-------------------------------------- *--------------------------------------
.INB usr/src/shared/x.printf.s .INB usr/src/shared/x.printf.s
*-------------------------------------- *--------------------------------------
* ProDOS $BE41->$BE4B Patch for switching to BANK2 (10 bytes) * ProDOS $BE41->$BE4B Patch for switching to BANK2 (10 bytes)
*-------------------------------------- *--------------------------------------
COPYRIGHT .AS "(C)APPLE "
COPYRIGHT.LEN .EQ *-COPYRIGHT
PATCH .PH DRV.EntryPoint PATCH .PH DRV.EntryPoint
bit RRAMWRAMBNK2 bit RRAMWRAMBNK2
jsr $D002 jsr $D002
@ -338,13 +401,18 @@ DRV.UNITNUM .EQ $43
DRV.BUFF .EQ $44 DRV.BUFF .EQ $44
DRV.BLKNUM .EQ $46 DRV.BLKNUM .EQ $46
*-------------------------------------- *--------------------------------------
DRV.FrmBuf .EQ $DA00 Frame Buffer = 1536 bytes DRV.Write .EQ DRV.NIC.START
DRV.FrmBuf.Env .EQ DRV.FrmBuf+S.UDP DRV.Read .EQ DRV.NIC.START+3
DRV.FrmBuf.Cmd .EQ DRV.FrmBuf+S.UDP+1 *--------------------------------------
DRV.FrmBuf.BlkL .EQ DRV.FrmBuf+S.UDP+2 DRV.OutBuf .EQ $D800-S.UDP-6 Frame Buffer = S.UDP+5+512+1 bytes
DRV.FrmBuf.BlkH .EQ DRV.FrmBuf+S.UDP+3 DRV.OutBuf.Env .EQ DRV.OutBuf+S.UDP
DRV.FrmBuf.Sum .EQ DRV.FrmBuf+S.UDP+4 DRV.OutBuf.Cmd .EQ DRV.OutBuf+S.UDP+1
DRV.FrmBuf.Data .EQ DRV.FrmBuf+S.UDP+5 DRV.OutBuf.BlkL .EQ DRV.OutBuf+S.UDP+2
DRV.OutBuf.BlkH .EQ DRV.OutBuf+S.UDP+3
DRV.OutBuf.Sum .EQ DRV.OutBuf+S.UDP+4
DRV.OutBuf.Data .EQ DRV.OutBuf+S.UDP+5
*--------------------------------------
DRV.InBuf .EQ $DA00 Frame Buffer = 1536 bytes
*-------------------------------------- *--------------------------------------
DRV .PH $D001 Main LC Bnk 2 $D001->$DFFF DRV .PH $D001 Main LC Bnk 2 $D001->$DFFF
@ -363,7 +431,7 @@ DRV.START .BS 1 SELF MODIFIED slot 0n
.1 cmp #3 .1 cmp #3
beq .8 Format .... beq .8 Format ....
* bcs DRV.DO.CMD.ERR more....IO error bcs DRV.DO.CMD.ERR more....IO error
ora #2 W=2,R=3 ora #2 W=2,R=3
ldy DRV.UNITNUM ldy DRV.UNITNUM
@ -371,16 +439,16 @@ DRV.START .BS 1 SELF MODIFIED slot 0n
adc #2 CC from bcs adc #2 CC from bcs
.2 sta DRV.FrmBuf.Cmd store cmd .2 sta DRV.OutBuf.Cmd store cmd
eor #ADT.CMD.VSD eor #ADT.CMD.VSD
eor DRV.BLKNUM eor DRV.BLKNUM
eor DRV.BLKNUM+1 eor DRV.BLKNUM+1
sta DRV.FrmBuf.Sum Compute & store CheckSum sta DRV.OutBuf.Sum Compute & store CheckSum
lda DRV.BLKNUM lda DRV.BLKNUM
sta DRV.FrmBuf.BlkL sta DRV.OutBuf.BlkL
lda DRV.BLKNUM+1 lda DRV.BLKNUM+1
sta DRV.FrmBuf.BlkH sta DRV.OutBuf.BlkH
*-------------------------------------- *--------------------------------------
lda DRV.COMMAND lda DRV.COMMAND
dec 1-1=0 if read dec 1-1=0 if read
@ -388,48 +456,12 @@ DRV.START .BS 1 SELF MODIFIED slot 0n
*-------------------------------------- *--------------------------------------
* Read block * Read block
*-------------------------------------- *--------------------------------------
DRV.DO.CMD.R ldy #3 Read Back and check 4 bytes DRV.DO.CMD.R ldy #S.UDP+5
lda /S.UDP+5
jsr DRV.Write
.1 eor DRV.FrmBuf.BlkH,y
bne DRV.DO.CMD.ERR
dey
bpl .1
ldy #4 Read 4 bytes DATE/TIME + 1 Byte Checksum
.2 eor DRV.FrmBuf.Sum
sta DRV.FrmBuf.Sum
dey
bpl .2
tay Last EOR was with Checksum, must be 0
bne DRV.DO.CMD.ERR
* Y=0 from TAY
stz DRV.FrmBuf.Sum
sec
.3 jsr $100
eor DRV.FrmBuf.Sum
sta DRV.FrmBuf.Sum
iny
bne .3
bcc .4
inc DRV.BUFF+1
clc
bcc .3
.4 dec DRV.BUFF+1
eor DRV.FrmBuf.Sum
bne DRV.DO.CMD.ERR
rts A=0,CC from bcc .4
*--------------------------------------
DRV.DO.CMD.ERR1
pla
pla
DRV.DO.CMD.ERR DRV.DO.CMD.ERR
lda #MLI.E.IO lda #MLI.E.IO
sec sec
@ -439,34 +471,8 @@ DRV.DO.CMD.ERR
*-------------------------------------- *--------------------------------------
DRV.DO.CMD.W lda #$B1 lda (),y DRV.DO.CMD.W lda #$B1 lda (),y
sta $103 lda #MLI.E.IO
ldy #0
stz DRV.FrmBuf.Sum
sec sec
.1
eor DRV.FrmBuf.Sum
sta DRV.FrmBuf.Sum
iny
bne .1
bcc .2
inc DRV.BUFF+1
clc
bcc .1
.2 dec DRV.BUFF+1
* A = DRV.FrmBuf.Sum
* read back CMD
ldy #4 Read 5 bytes (echo from server)
.3
eor DRV.FrmBuf.Sum,y Check 5 bytes (including block Sum)
bne DRV.DO.CMD.ERR
dey
bpl .3
rts rts
*-------------------------------------- *--------------------------------------
DRV.RWBYTE bit RRAMWRAMBNK1 DRV.RWBYTE bit RRAMWRAMBNK1
@ -480,20 +486,174 @@ DRV.RWBYTE bit RRAMWRAMBNK1
DRV.SIZE .EQ *-DRV DRV.SIZE .EQ *-DRV
.LIST OFF .LIST OFF
*-------------------------------------- *--------------------------------------
DRV.IP .PH $D400
DRV.IP.START ldy #S.IP.TOTAL.LENGTH+1
lda ZPBufCnt
sec
sbc #S.ETH.EII
sta (ZPBufPtr),y
dey
lda ZPBufCnt+1
sbc /S.ETH.EII
sta (ZPBufPtr),y
lda #0
ldy #S.IP.HDR.CHECKSUM
sta (ZPBufPtr),y
iny
sta (ZPBufPtr),y
stz ZPCheckSum RESET IP CHECKSUM
stz ZPCheckSum+1
clc
ldy #S.IP.V.IHL
ldx #10 10 words for IP Header
.1 lda (ZPBufPtr),y
adc ZPCheckSum
sta ZPCheckSum
iny
lda (ZPBufPtr),y
adc ZPCheckSum+1
sta ZPCheckSum+1
iny
dex
bne .1
ldy #S.IP.HDR.CHECKSUM
lda ZPCheckSum
adc #0
eor #$FF
sta (ZPBufPtr),y
iny
lda ZPCheckSum+1
adc #0
eor #$FF
sta (ZPBufPtr),y
rts
*--------------------------------------
clc
ldy #S.UDP.LENGTH+1
lda (ZPBufPtr),y
adc #S.IP.PROTOCOL.UDP
sta ZPCheckSum+1
dey
lda (ZPBufPtr),y
adc /S.IP.PROTOCOL.UDP (all zero)
sta ZPCheckSum
ldy #S.IP.SRC
ldx #4 4 words for SRC & DST IP
.2 lda (ZPBufPtr),y
adc ZPCheckSum
sta ZPCheckSum
iny
lda (ZPBufPtr),y
adc ZPCheckSum+1
sta ZPCheckSum+1
iny
dex
bne .2
ldy #S.UDP.LENGTH+1
lda (ZPBufPtr),y
eor #$ff
tax
dey
lda (ZPBufPtr),y
eor #$ff
ldy #S.UDP.CHECKSUM
phy Save Offset
pha Save !ByteCount.HI
lda #0 Reset Checksum
sta (ZPBufPtr),y
iny
sta (ZPBufPtr),y
>LDYA ZPBufPtr
>STYA ZPPtr1
ldy #S.IP
.3 inx
bne .4
pla
inc
beq .8
pha
.4 lda (ZPPtr1),y
adc ZPCheckSum
sta ZPCheckSum
iny
bne .5
inc ZPPtr1+1
.5 inx
bne .6
pla
inc
beq .7
pha
.6 lda (ZPPtr1),y
adc ZPCheckSum+1
sta ZPCheckSum+1
iny
bne .3
inc ZPPtr1+1
bra .3
.7 adc ZPCheckSum+1 A=0 from beq .7
sta ZPCheckSum+1
.8 ply
lda ZPCheckSum
adc #0 Don't forget to add last carry!!!
eor #$FF
sta (ZPBufPtr),y
iny
lda ZPCheckSum+1
adc #0 Don't forget to add last carry!!!
eor #$FF
sta (ZPBufPtr),y
rts
*--------------------------------------
.EP
*--------------------------------------
.LIST ON
DRV.IP.SIZE .EQ *-DRV.IP
.LIST OFF
*--------------------------------------
* CONTROL SECTION : * CONTROL SECTION :
*-------------------------------------- *--------------------------------------
.DO DRV.SIZE>255 .DO DRV.SIZE>255
* ERROR:DRV.SIZE too big ERROR:DRV.SIZE too big
.FIN .FIN
*-------------------------------------- *--------------------------------------
*-------------------------------------- *--------------------------------------
.INB usr/src/sys/km.vedrive.s.cf .INB usr/src/sys/pm.vedrive.s.cf
.INB usr/src/sys/km.vedrive.s.ip .INB usr/src/sys/pm.vedrive.s.ip
.INB usr/src/sys/km.vedrive.s.u1 .INB usr/src/sys/pm.vedrive.s.u1
.INB usr/src/sys/km.vedrive.s.u2 .INB usr/src/sys/pm.vedrive.s.u2
.INB usr/src/sys/km.vedrive.s.gs .INB usr/src/sys/pm.vedrive.s.gs
*-------------------------------------- *--------------------------------------
VEDRIVE.MSG0 .AZ "VEDRIVE (ADTPro Virtual Ethernet HD) Driver\n" VEDRIVE.MSG0 .AZ "VEDRIVE (ADTPro Virtual Ethernet HD) Driver\n"
VEDRIVE.DRVKO .AZ "VEDRIVE (Or other custom Driver) Already Installed.\n" VEDRIVE.DRVKO .AZ "VEDRIVE (Or other custom Driver) Already Installed.\n"
@ -693,5 +853,5 @@ ADT.REQ.END .EQ *
ADT.REQ.LEN .EQ *-ADT.REQ ADT.REQ.LEN .EQ *-ADT.REQ
*-------------------------------------- *--------------------------------------
MAN MAN
SAVE usr/src/sys/km.vedrive.s SAVE usr/src/sys/pm.vedrive.s
ASM ASM

View File

@ -3,7 +3,7 @@ NEW
.LIST OFF .LIST OFF
.OP 65C02 .OP 65C02
.OR $2000 .OR $2000
.TF sys/km/km.vsdrive .TF sys/pm/pm.vsdrive
*-------------------------------------- *--------------------------------------
.INB inc/macros.i .INB inc/macros.i
.INB inc/io.i .INB inc/io.i
@ -618,5 +618,5 @@ DRV.SIZE .EQ *-DRV
.FIN .FIN
*-------------------------------------- *--------------------------------------
MAN MAN
SAVE usr/src/sys/km.vsdrive.s SAVE usr/src/sys/pm.vsdrive.s
ASM ASM