mirror of
https://github.com/A2osX/A2osX.git
synced 2024-11-29 17:50:18 +00:00
Kernel version 0.8 : API finalized and dispatched in LCBNK1/2, now fits in BNK1/BNK2
This commit is contained in:
parent
127f89cedc
commit
270098e108
BIN
A2OSX.BOOT.po
BIN
A2OSX.BOOT.po
Binary file not shown.
BIN
A2OSX.SRC.po
BIN
A2OSX.SRC.po
Binary file not shown.
@ -13,11 +13,9 @@ AUTO 6
|
||||
* X = hMem of Code Segment
|
||||
*--------------------------------------
|
||||
BIN.LoadEXEYA >STYA BIN.LoadExe.Filename
|
||||
jsr K.PStrUprYA
|
||||
|
||||
>LDYA BIN.LoadExe.Filename
|
||||
jsr K.PStrUprYA Y,A unmodified
|
||||
jsr K.GetMemByNameYA
|
||||
bcs .1 not already loaded
|
||||
bcs BIN.LoadEXEYA.1 not already loaded
|
||||
|
||||
>STYA ZPQuickPtr1 Save base address
|
||||
ldy #S.MEM.REFCNT
|
||||
@ -25,38 +23,56 @@ BIN.LoadEXEYA >STYA BIN.LoadExe.Filename
|
||||
inc
|
||||
sta (ZPQuickPtr1),y
|
||||
|
||||
ldy #S.MEM.PTR
|
||||
lda (ZPQuickPtr1),y
|
||||
pha Y,A = MEM PTR...
|
||||
iny
|
||||
lda (ZPQuickPtr1),y
|
||||
ply X=hMem from K.GetMemByNameA
|
||||
clc
|
||||
rts
|
||||
|
||||
.1 >PUSHWI KrnBuf256
|
||||
txa
|
||||
jmp K.GetMemPtrA X=hMem from K.GetMemByNameA
|
||||
*--------------------------------------
|
||||
BIN.LoadEXEYA.1 >PUSHWI KrnBuf256
|
||||
>PUSHW BIN.LoadExe.Filename
|
||||
jsr K.STAT Look for AUXTYPE
|
||||
bcs .99
|
||||
bcs .9
|
||||
|
||||
>LDYA KrnBuf256+S.STAT.AUXTYPE
|
||||
>STYA BIN.LoadExe.OldBase
|
||||
>STYA BIN.Relocate.Start
|
||||
|
||||
>PUSHYA
|
||||
>PUSHYA Push AUXTYPE
|
||||
>PUSHBI 6 S.FILEINFO.TYPE.BIN
|
||||
>PUSHBI SYS.FOPEN.R
|
||||
>PUSHW BIN.LoadExe.Filename
|
||||
jsr K.LoadFile
|
||||
bcs .99 Error Loading file
|
||||
.9 bcs .99 Error Loading file
|
||||
|
||||
>STYA BIN.LoadExe.SegLen
|
||||
>STYA BIN.Relocate.SegLen
|
||||
stx BIN.LoadExe.hMem save hMem
|
||||
txa
|
||||
jsr K.GetMemPtrA
|
||||
>STYA BIN.LoadExe.NewBase
|
||||
>STYA ZPQuickPtr1
|
||||
|
||||
jsr BIN.InstallEXE
|
||||
ldy #H.BIN.CODE.LEN+1 get Code Len
|
||||
lda (ZPQuickPtr1),y
|
||||
tax
|
||||
dey
|
||||
lda (ZPQuickPtr1),y
|
||||
jsr BIN.Relocate.SetCodeLenAX
|
||||
|
||||
lda BIN.Relocate.Start Get AUXTYPE for actual Base Address
|
||||
clc
|
||||
adc BIN.Relocate.SegLen
|
||||
sta BIN.Relocate.End compute Range End=AUXTYPE+FILELEN
|
||||
|
||||
lda BIN.Relocate.Start+1
|
||||
adc BIN.Relocate.SegLen+1
|
||||
sta BIN.Relocate.End+1
|
||||
|
||||
lda ZPQuickPtr1
|
||||
sec
|
||||
sbc BIN.Relocate.Start
|
||||
sta BIN.Relocate.Offset Offset=ZPQuickPtr1-AUXTYPE
|
||||
|
||||
lda ZPQuickPtr1+1
|
||||
sbc BIN.Relocate.Start+1
|
||||
sta BIN.Relocate.Offset+1
|
||||
|
||||
jsr Bin.RelocateEXE
|
||||
bcs .98 relocation error, dicard Code segment
|
||||
|
||||
>LDYA BIN.LoadExe.Filename get back bin path
|
||||
@ -92,78 +108,34 @@ BIN.LoadEXEYA >STYA BIN.LoadExe.Filename
|
||||
*--------------------------------------
|
||||
BIN.LoadExe.Filename .BS 2
|
||||
BIN.LoadExe.hMem .BS 1
|
||||
BIN.LoadExe.OldBase .BS 2
|
||||
BIN.LoadExe.NewBase .BS 2
|
||||
BIN.LoadExe.SegLen .BS 2
|
||||
*--------------------------------------
|
||||
* BIN.InstallEXE
|
||||
*--------------------------------------
|
||||
BIN.InstallEXE >LDYA BIN.LoadExe.NewBase
|
||||
>STYA ZPQuickPtr1
|
||||
|
||||
ldy #H.BIN.CODE.LEN get Code Len
|
||||
lda (ZPQuickPtr1),y
|
||||
sta Rel.CodeLen
|
||||
iny
|
||||
lda (ZPQuickPtr1),y
|
||||
sta Rel.CodeLen+1
|
||||
|
||||
lda BIN.LoadExe.OldBase
|
||||
sta Rel.Start Get AUXTYPE for actual Base Address
|
||||
clc
|
||||
adc BIN.LoadExe.SegLen
|
||||
sta Rel.End compute Range End=AUXTYPE+FILELEN
|
||||
|
||||
lda BIN.LoadExe.OldBase+1
|
||||
sta Rel.Start+1
|
||||
adc BIN.LoadExe.SegLen+1
|
||||
sta Rel.End+1
|
||||
|
||||
lda ZPQuickPtr1
|
||||
sec
|
||||
sbc BIN.LoadExe.OldBase
|
||||
sta Rel.Offset Offset=ZPQuickPtr1-AUXTYPE
|
||||
lda ZPQuickPtr1+1
|
||||
sbc BIN.LoadExe.OldBase+1
|
||||
sta Rel.Offset+1
|
||||
|
||||
jmp Bin.RelocateEXE
|
||||
*--------------------------------------
|
||||
* K.InsDrv
|
||||
* BIN.InstallDRV
|
||||
* pDrv = .DRV File Loaded Address
|
||||
*--------------------------------------
|
||||
BIN.InstallDRV ldy #H.BIN.DRV.CODE.LEN
|
||||
BIN.InstallDRV ldy #H.BIN.DRV.CODE.LEN+1
|
||||
lda (pDrv),y
|
||||
sta Rel.CodeLen
|
||||
iny
|
||||
tax
|
||||
dey
|
||||
lda (pDrv),y
|
||||
sta Rel.CodeLen+1
|
||||
jsr BIN.Relocate.SetCodeLenAX
|
||||
|
||||
ldy #H.BIN.DRV.CODE.O
|
||||
lda (pDrv),y
|
||||
clc
|
||||
adc BIN.LoadExe.OldBase
|
||||
sta Rel.Start
|
||||
adc BIN.Relocate.Start Advance start From Bin code to DRV code
|
||||
sta BIN.Relocate.Start
|
||||
iny
|
||||
lda (pDrv),y
|
||||
adc BIN.LoadExe.OldBase+1
|
||||
sta Rel.Start+1
|
||||
|
||||
lda BIN.LoadExe.OldBase
|
||||
clc
|
||||
adc BIN.LoadExe.SegLen
|
||||
sta Rel.End
|
||||
lda BIN.LoadExe.OldBase+1
|
||||
adc BIN.LoadExe.SegLen+1
|
||||
sta Rel.End+1
|
||||
adc BIN.Relocate.Start+1
|
||||
sta BIN.Relocate.Start+1
|
||||
|
||||
ldy #H.BIN.DRV.CODE.O
|
||||
lda BIN.LoadExe.SegLen
|
||||
lda BIN.Relocate.SegLen
|
||||
sec
|
||||
sbc (pDrv),y
|
||||
sta K.InsDrv.DRVLen
|
||||
iny
|
||||
lda BIN.LoadExe.SegLen+1
|
||||
lda BIN.Relocate.SegLen+1
|
||||
sbc (pDrv),y
|
||||
sta K.InsDrv.DRVLen+1 Compute DRV Len
|
||||
|
||||
@ -178,8 +150,7 @@ BIN.InstallDRV ldy #H.BIN.DRV.CODE.LEN
|
||||
bcs .98 we crossed $FFFF, out of mem
|
||||
|
||||
lda K.InsDrv.DRVEnd
|
||||
sec
|
||||
sbc #DevMgr.HiMem
|
||||
cmp #DevMgr.HiMem
|
||||
lda K.InsDrv.DRVEnd+1
|
||||
sbc /DevMgr.HiMem
|
||||
bcs .98 No More Room to load Driver....
|
||||
@ -206,11 +177,11 @@ BIN.InstallDRV ldy #H.BIN.DRV.CODE.LEN
|
||||
lda DevMgr.Free
|
||||
sec
|
||||
sbc (ZPQuickPtr1),y
|
||||
sta Rel.Offset
|
||||
sta BIN.Relocate.Offset
|
||||
lda DevMgr.Free+1
|
||||
iny
|
||||
sbc (ZPQuickPtr1),y
|
||||
sta Rel.Offset+1
|
||||
sta BIN.Relocate.Offset+1
|
||||
|
||||
ldy #H.BIN.DRV.CODE.O
|
||||
lda (pDrv),y
|
||||
@ -253,11 +224,11 @@ BIN.MoveDRV ldy #H.BIN.DEV.HEADER.O
|
||||
ldy #S.DEV.JMP Relocate Main JMP
|
||||
lda (ZPQuickPtr1),y
|
||||
clc
|
||||
adc Rel.Offset
|
||||
adc BIN.Relocate.Offset
|
||||
sta (ZPQuickPtr1),y
|
||||
iny
|
||||
lda (ZPQuickPtr1),y
|
||||
adc Rel.Offset+1
|
||||
adc BIN.Relocate.Offset+1
|
||||
sta (ZPQuickPtr1),y
|
||||
|
||||
lda DevMgr.LastDevID
|
||||
@ -267,6 +238,7 @@ BIN.MoveDRV ldy #H.BIN.DEV.HEADER.O
|
||||
ldy #S.DEV.SIZE Make sure DevMgr.Table Ends with 0
|
||||
lda #0
|
||||
sta (pDev),y
|
||||
|
||||
dey
|
||||
|
||||
.1 lda (ZPQuickPtr1),y Copy DRV.Header
|
||||
@ -293,171 +265,183 @@ BIN.MoveDRV ldy #H.BIN.DEV.HEADER.O
|
||||
lda DevMgr.Free+1
|
||||
sta ZPQuickPtr2+1 Make ZPQuickPtr2=Dest Ram Location
|
||||
|
||||
ldy K.InsDrv.DrvLen
|
||||
ldx K.InsDrv.DrvLen+1
|
||||
lda K.InsDrv.DrvLen+1
|
||||
eor #$ff
|
||||
pha
|
||||
lda K.InsDrv.DrvLen
|
||||
eor #$ff
|
||||
tax
|
||||
|
||||
.2 lda (ZPQuickPtr1)
|
||||
sta (ZPQuickPtr2)
|
||||
ldy #0
|
||||
|
||||
inc ZPQuickPtr1
|
||||
.2 inx
|
||||
bne .3
|
||||
inc ZPQuickPtr1+1
|
||||
|
||||
.3 inc ZPQuickPtr2
|
||||
bne .4
|
||||
inc ZPQuickPtr2+1
|
||||
|
||||
.4 tya
|
||||
bne .5
|
||||
txa
|
||||
pla
|
||||
inc
|
||||
beq .8
|
||||
dex
|
||||
pha
|
||||
|
||||
.5 dey
|
||||
.3 lda (ZPQuickPtr1),y
|
||||
sta (ZPQuickPtr2),y
|
||||
iny
|
||||
bne .2
|
||||
|
||||
inc ZPQuickPtr1+1
|
||||
inc ZPQuickPtr2+1
|
||||
bra .2
|
||||
.8 rts
|
||||
|
||||
.8 rts CC from last ADC
|
||||
*--------------------------------------
|
||||
K.InsDrv.DrvLen .BS 2
|
||||
K.InsDrv.DrvEnd .BS 2
|
||||
*--------------------------------------
|
||||
BIN.Relocate.SetCodeLenAX
|
||||
eor #$ff
|
||||
sta BIN.Relocate.nCodeLen
|
||||
txa
|
||||
eor #$ff
|
||||
sta BIN.Relocate.nCodeLen+1
|
||||
rts
|
||||
*--------------------------------------
|
||||
* BIN.Relocate___ :
|
||||
* In :
|
||||
* ZPQuickPtr1 = Ptr to Code
|
||||
*--------------------------------------
|
||||
BIN.Relocate.SegLen .BS 2 Code+Data Len
|
||||
BIN.Relocate.Start .BS 2
|
||||
BIN.Relocate.End .BS 2
|
||||
BIN.Relocate.Offset .BS 2
|
||||
BIN.Relocate.nCodeLen .BS 2 !Code length
|
||||
*--------------------------------------
|
||||
BIN.RelocateEXE ldy #H.BIN.JMP relocate Main JMP
|
||||
lda (ZPQuickPtr1),y
|
||||
clc
|
||||
adc Rel.Offset
|
||||
adc BIN.Relocate.Offset
|
||||
sta (ZPQuickPtr1),y
|
||||
|
||||
iny
|
||||
lda (ZPQuickPtr1),y
|
||||
adc Rel.Offset+1
|
||||
adc BIN.Relocate.Offset+1
|
||||
sta (ZPQuickPtr1),y
|
||||
|
||||
ldy #H.BIN.RELOC.TABLE skip Header, CS.SIZE & DS.SIZE... (16 bytes)
|
||||
|
||||
.HS 2C bit abs
|
||||
|
||||
*--------------------------------------
|
||||
BIN.RelocateDRV ldy #0
|
||||
|
||||
.1 lda (ZPQuickPtr1),y Start Relocate JMP table
|
||||
tax
|
||||
tax LO in X
|
||||
iny
|
||||
ora (ZPQuickPtr1),y
|
||||
ora (ZPQuickPtr1),y ORA with HI
|
||||
beq .2 $0000 = end of table
|
||||
|
||||
dey
|
||||
txa
|
||||
txa get back LO
|
||||
clc
|
||||
adc Rel.Offset
|
||||
adc BIN.Relocate.Offset
|
||||
sta (ZPQuickPtr1),y
|
||||
|
||||
iny
|
||||
lda (ZPQuickPtr1),y
|
||||
adc Rel.Offset+1
|
||||
adc BIN.Relocate.Offset+1
|
||||
sta (ZPQuickPtr1),y
|
||||
|
||||
iny
|
||||
|
||||
bra .1
|
||||
*--------------------------------------
|
||||
.2 tya add current offset in Y to Ptr
|
||||
|
||||
.2 lda ZPQuickPtr1
|
||||
clc
|
||||
adc Rel.CodeLen Make ZPQuickPtr2=End of code
|
||||
sta ZPQuickPtr2 =ZPQuickPtr1+AX (code len)
|
||||
lda ZPQuickPtr1+1
|
||||
adc Rel.CodeLen+1
|
||||
sta ZPQuickPtr2+1
|
||||
sec + 1 to skip last 00 from beq .2
|
||||
|
||||
iny
|
||||
tya add current offset in Y to Ptr
|
||||
clc
|
||||
adc ZPQuickPtr1
|
||||
sta ZPQuickPtr1
|
||||
bcc .5
|
||||
bcc .3
|
||||
inc ZPQuickPtr1+1 ZPQuickPtr1=Current Code PTR
|
||||
clc
|
||||
|
||||
.5 lda (ZPQuickPtr1) get OPCODE
|
||||
.3 inc BIN.Relocate.nCodeLen
|
||||
bne .4 nCodeLen reached 0 ?
|
||||
inc BIN.Relocate.nCodeLen+1
|
||||
beq .8 no, continue relocating
|
||||
|
||||
.4 lda (ZPQuickPtr1) get OPCODE
|
||||
lsr /2
|
||||
tax
|
||||
lda BIN.OPCODES,x get OPCODE definition
|
||||
bpl .7 abs addressing?
|
||||
bcs .5 go get LO nibble
|
||||
lsr
|
||||
lsr move HI -> LO
|
||||
lsr
|
||||
lsr
|
||||
.5 and #$0f
|
||||
|
||||
and #3 save Opcode length...
|
||||
bit #$8 abs addressing?
|
||||
beq .7 no....
|
||||
|
||||
and #7 save Opcode length...
|
||||
pha
|
||||
|
||||
ldy #1
|
||||
lda (ZPQuickPtr1),y Get LO
|
||||
sec
|
||||
sbc Rel.Start
|
||||
iny
|
||||
lda (ZPQuickPtr1),y Get HI
|
||||
sbc Rel.Start+1
|
||||
bcc .6 addr < AX, out of range
|
||||
tax save LO in X
|
||||
|
||||
dey
|
||||
lda (ZPQuickPtr1),y Get LO
|
||||
sec
|
||||
sbc Rel.End
|
||||
iny
|
||||
lda (ZPQuickPtr1),y Get HI
|
||||
sbc Rel.End+1
|
||||
bcs .6 addr > CX, out of range
|
||||
iny make Y point to HI
|
||||
|
||||
cpx BIN.Relocate.Start
|
||||
lda (ZPQuickPtr1),y Get HI
|
||||
sbc BIN.Relocate.Start+1
|
||||
bcc .6 addr < BIN.Relocate.Start, out of range
|
||||
|
||||
txa Get back LO
|
||||
cpx BIN.Relocate.End
|
||||
lda (ZPQuickPtr1),y Get HI
|
||||
sbc BIN.Relocate.End+1
|
||||
bcs .6 addr > BIN.Relocate.End, out of range
|
||||
|
||||
txa Get back LO
|
||||
* clc CC from bcs .6
|
||||
adc BIN.Relocate.Offset add Offset to abs address
|
||||
dey
|
||||
lda (ZPQuickPtr1),y Get LO
|
||||
clc
|
||||
adc Rel.Offset add DX to abs address
|
||||
sta (ZPQuickPtr1),y store relocated addr LO
|
||||
iny
|
||||
lda (ZPQuickPtr1),y Get HI
|
||||
adc Rel.Offset+1
|
||||
adc BIN.Relocate.Offset+1
|
||||
sta (ZPQuickPtr1),y store relocated addr HI
|
||||
|
||||
.6 pla
|
||||
.6 pla get back Opcode length...
|
||||
|
||||
.7 clc A = OPCODE length
|
||||
adc ZPQuickPtr1
|
||||
sta ZPQuickPtr1
|
||||
bcc .8
|
||||
bcc .3
|
||||
inc ZPQuickPtr1+1
|
||||
bra .3 next opcode....
|
||||
|
||||
.8 lda ZPQuickPtr1 is Current PTR < Code Limit ?
|
||||
sec
|
||||
sbc ZPQuickPtr2
|
||||
lda ZPQuickPtr1+1
|
||||
sbc ZPQuickPtr2+1
|
||||
bcc .5 yes, continue relocating
|
||||
|
||||
clc
|
||||
.8 clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
* 65C02 OPCODES
|
||||
* Bit 7 : 1 absolute addressing
|
||||
* Bit 1-0 : opcode + @ length
|
||||
* Bit 3 : 1 = absolute addressing
|
||||
* Bit 2-1-0 : opcode + @ length
|
||||
*--------------------------------------
|
||||
* x0.x1.x2.x3.x4.x5.x6.x7.x8.x9.xA.xB.xC.xD.xE.xF
|
||||
BIN.OPCODES .HS 01.02.02.01.02.02.02.02.01.02.01.01.83.83.83.03
|
||||
.HS 02.02.02.01.02.02.02.02.01.83.01.01.83.83.83.03
|
||||
.HS 83.02.02.01.02.02.02.02.01.02.01.01.83.83.83.03
|
||||
.HS 02.02.02.01.02.02.02.02.01.83.01.01.83.83.83.03
|
||||
.HS 01.02.02.01.02.02.02.02.01.02.01.01.83.83.83.03
|
||||
.HS 02.02.02.01.02.02.02.02.01.83.01.01.01.83.83.03
|
||||
.HS 01.02.02.01.02.02.02.02.01.02.01.01.83.83.83.03
|
||||
.HS 02.02.02.01.02.02.02.02.01.83.01.01.83.83.83.03
|
||||
.HS 02.02.02.01.02.02.02.02.01.02.01.01.83.83.83.03
|
||||
.HS 02.02.02.01.02.02.02.02.01.83.01.01.83.83.83.03
|
||||
.HS 02.02.02.01.02.02.02.02.01.02.01.01.83.83.83.03
|
||||
.HS 02.02.02.01.02.02.02.02.01.83.01.01.83.83.83.03
|
||||
.HS 02.02.02.01.02.02.02.02.01.02.01.01.83.83.83.03
|
||||
.HS 02.02.02.01.02.02.02.02.01.83.01.01.01.83.83.03
|
||||
.HS 02.02.02.01.02.02.02.02.01.02.01.01.83.83.83.03
|
||||
.HS 02.02.02.01.02.02.02.02.01.83.01.01.01.83.83.03
|
||||
*--------------------------------------
|
||||
Rel.CodeLen .BS 2
|
||||
Rel.Start .BS 2
|
||||
Rel.End .BS 2
|
||||
Rel.Offset .BS 2
|
||||
* 0.1.2.3.4.5.6.7.8.9.A.B.C.D.E.F
|
||||
BIN.OPCODES .HS 1.2.2.1.2.2.2.2.1.2.1.1.B.B.B.3
|
||||
.HS 2.2.2.1.2.2.2.2.1.B.1.1.B.B.B.3
|
||||
.HS B.2.2.1.2.2.2.2.1.2.1.1.B.B.B.3
|
||||
.HS 2.2.2.1.2.2.2.2.1.B.1.1.B.B.B.3
|
||||
.HS 1.2.2.1.2.2.2.2.1.2.1.1.B.B.B.3
|
||||
.HS 2.2.2.1.2.2.2.2.1.B.1.1.1.B.B.3
|
||||
.HS 1.2.2.1.2.2.2.2.1.2.1.1.B.B.B.3
|
||||
.HS 2.2.2.1.2.2.2.2.1.B.1.1.B.B.B.3
|
||||
.HS 2.2.2.1.2.2.2.2.1.2.1.1.B.B.B.3
|
||||
.HS 2.2.2.1.2.2.2.2.1.B.1.1.B.B.B.3
|
||||
.HS 2.2.2.1.2.2.2.2.1.2.1.1.B.B.B.3
|
||||
.HS 2.2.2.1.2.2.2.2.1.B.1.1.B.B.B.3
|
||||
.HS 2.2.2.1.2.2.2.2.1.2.1.1.B.B.B.3
|
||||
.HS 2.2.2.1.2.2.2.2.1.B.1.1.1.B.B.3
|
||||
.HS 2.2.2.1.2.2.2.2.1.2.1.1.B.B.B.3
|
||||
.HS 2.2.2.1.2.2.2.2.1.B.1.1.1.B.B.3
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE SYS/KERNEL.S.BIN
|
||||
|
@ -211,13 +211,10 @@ K.SaveFile >PULLW K.LoadFile.Mem
|
||||
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
K.LoadFile.Filename .BS 2
|
||||
K.LoadFile.hFile .BS 1
|
||||
K.LoadFile.hMem .BS 1
|
||||
K.LoadFile.Mem .BS 2
|
||||
K.LoadFile.Len .BS 2
|
||||
K.LoadFile.hRef .BS 1
|
||||
K.LoadFile.hBuf .BS 1
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE SYS/KERNEL.S.FIO
|
||||
|
@ -131,7 +131,7 @@ GO.A2osX php
|
||||
sta CLRALTZP
|
||||
bra GO.EXIT
|
||||
|
||||
GO.A2osX.BNK ldx #$FF Self Modified
|
||||
GO.A2osX.BNK ldx #RRAMWRAMBNK1 Self Modified, initialized to BNK1 for INIT3
|
||||
|
||||
bit $C000,x
|
||||
bit $C000,x
|
||||
|
@ -56,7 +56,7 @@ Kernel.Init2 >LDAXI MSG.Init2
|
||||
>STYA pStack init Soft Stack
|
||||
|
||||
sta CLRALTZP Make MAIN ZP is enabled for X.PRINT.F
|
||||
lda RROMBNK1 Make sure ROM is enabled for X.PRINT.F
|
||||
bit RROMBNK1 Make sure ROM is enabled for X.PRINT.F
|
||||
cli
|
||||
|
||||
lda #6
|
||||
@ -71,7 +71,9 @@ Kernel.Init2 >LDAXI MSG.Init2
|
||||
>LDAXI MSG.Setup
|
||||
jsr PrintCStrAX
|
||||
|
||||
jsr GO.A2osX
|
||||
sta SETALTZP
|
||||
lda RRAMWRAMBNK1
|
||||
lda RRAMWRAMBNK1
|
||||
|
||||
jsr K.IrqMgrInit
|
||||
bcs *
|
||||
@ -86,8 +88,8 @@ Kernel.Init2 >LDAXI MSG.Init2
|
||||
jsr K.TskMgrInit
|
||||
bcs *
|
||||
|
||||
jsr GO.ProDOS Make sure MAIN ZP...
|
||||
lda RROMBNK1 ... & ROM is enabled for X.PRINT.F
|
||||
sta CLRALTZP Make MAIN ZP is enabled for X.PRINT.F
|
||||
bit RROMBNK1 Make sure ROM is enabled for X.PRINT.F
|
||||
|
||||
>LDAXI MSG.Init2.OK
|
||||
jsr PrintCStrAX
|
||||
@ -391,6 +393,12 @@ K.EvtMgrInit lda #10
|
||||
clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
* K.FltMgrInit
|
||||
*--------------------------------------
|
||||
K.FltMgrInit stz FltMgr.Table
|
||||
clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
* K.TskMgrInit
|
||||
*--------------------------------------
|
||||
K.TskMgrInit stz TSKMGR.LASTID
|
||||
@ -430,6 +438,8 @@ K.TskMgrInit stz TSKMGR.LASTID
|
||||
ldy #S.PS.hERRDEV
|
||||
sta (pPs),y Make ERR DEV = SYS
|
||||
|
||||
>DEBUG
|
||||
|
||||
>SYSCALL SYS.GetDevByIDA
|
||||
>STYA pDev
|
||||
ldx #DEVMGR.OPEN
|
||||
@ -474,10 +484,6 @@ K.TskMgrInit stz TSKMGR.LASTID
|
||||
>SYSCALL SYS.PutEnvYA
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
K.FltMgrInit stz FltMgr.Table
|
||||
clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
I.ENV.A2osX >PSTRING "A2OSX"
|
||||
I.ENV.PATH >PSTRING "PATH=${A2OSX}SBIN/;${A2OSX}BIN/"
|
||||
I.ENV.LIB >PSTRING "LIB=${A2OSX}LIB/"
|
||||
|
@ -26,7 +26,7 @@ KERNEL.SYSCALL
|
||||
.DA K.PStrMatch
|
||||
.DA K.PStrUprYA
|
||||
.DA K.PStrLwrYA
|
||||
.DA 0
|
||||
.DA K.PStrFTime
|
||||
.DA K.PStr2StrArrayYA
|
||||
*--------------------------------------
|
||||
.DA K.ExecProcessNewEnvYA $20
|
||||
@ -65,7 +65,7 @@ KERNEL.SYSCALL
|
||||
.DA K.TimeYA
|
||||
.DA K.CTime2Time
|
||||
.DA K.PTime2Time
|
||||
.DA K.StrFTime
|
||||
.DA 0
|
||||
*--------------------------------------
|
||||
.DA K.FOPEN $60
|
||||
.DA K.FCLOSEA
|
||||
|
@ -78,11 +78,11 @@ K.UnloadLibA pha
|
||||
|
||||
.1 ldy #S.MEM.PTR
|
||||
lda (ZPQuickPtr1),y
|
||||
pha
|
||||
sta pLib
|
||||
|
||||
iny
|
||||
lda (ZPQuickPtr1),y
|
||||
ply
|
||||
>STYA pLib
|
||||
sta pLib+1
|
||||
|
||||
ldx #LIBMGR.UNLOAD
|
||||
jsr pLibJmp Call LIB.UNLOAD function
|
||||
|
@ -179,6 +179,9 @@ K.PStrUprYA ldx #0
|
||||
K.PStrLwrYA ldx #2
|
||||
>STYA ZPQuickPtr1
|
||||
|
||||
pha save Y,A to restore them at exit
|
||||
phy
|
||||
|
||||
lda (ZPQuickPtr1)
|
||||
tay
|
||||
|
||||
@ -192,11 +195,255 @@ K.PStrLwrYA ldx #2
|
||||
.2 dey
|
||||
bne .1
|
||||
|
||||
ply
|
||||
pla
|
||||
clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
K.PStrUprLwr .AS "azAZ"
|
||||
*--------------------------------------
|
||||
* K.PStrFTime
|
||||
* In :
|
||||
* PULLW = Src PTR To S.Time
|
||||
* PULLW = Src PTR To Format String
|
||||
* PULLW = Dst PTR To PSTR Buf
|
||||
* %a Abbreviated weekday name : Thu
|
||||
* %A Full weekday name : Thursday
|
||||
* %b Abbreviated month name : Aug
|
||||
* %B Full month name : August
|
||||
* %d Day of the month, zero-padded (01-31)
|
||||
* %H Hour in 24h format (00-23) 14
|
||||
* %I Hour in 12h format (01-12) 02
|
||||
* %m Month as a decimal number (01-12) 08
|
||||
* %M Minute (00-59) 55
|
||||
* %p AM or PM designation PM
|
||||
* %S Second (00-61) 02
|
||||
* %w Weekday as a decimal number with Sunday as 0 (0-6)
|
||||
* %y Year, last two digits (00-99)
|
||||
* %Y Year four digits 2001
|
||||
* PULLW = Dst PSTR Buffer
|
||||
*--------------------------------------
|
||||
K.PStrFTime >PULLW ZPQuickPtr1
|
||||
>PULLW ZPQuickPtr2
|
||||
>PULLW ZPQuickPtr3
|
||||
|
||||
lda #0
|
||||
sta (ZPQuickPtr3) Reset target PSTR length
|
||||
|
||||
tay
|
||||
|
||||
.1 iny
|
||||
lda (ZPQuickPtr2),y
|
||||
cmp #'%'
|
||||
beq .2
|
||||
|
||||
phy
|
||||
jsr K.PStrFTime.addChar
|
||||
ply
|
||||
.10 tya
|
||||
cmp (ZPQuickPtr2)
|
||||
bne .1
|
||||
rts
|
||||
|
||||
.2 tya
|
||||
cmp (ZPQuickPtr2)
|
||||
beq .8
|
||||
|
||||
iny
|
||||
ldx #K.PStrFTime.JMPL-K.PStrFTime.Tbl-1
|
||||
|
||||
.3 lda (ZPQuickPtr2),y
|
||||
cmp K.PStrFTime.Tbl,x
|
||||
beq .4
|
||||
dex
|
||||
bpl .3
|
||||
beq .10
|
||||
|
||||
.4 lda K.PStrFTime.JMPL,x
|
||||
sta .5+1
|
||||
lda K.PStrFTime.JMPH,x
|
||||
sta .5+2
|
||||
phy
|
||||
.5 jsr $ffff
|
||||
ply
|
||||
bra .10
|
||||
|
||||
.8 rts
|
||||
*--------------------------------------
|
||||
K.PStrFTime.TBL .AS "aAbBdHImMpSwyY"
|
||||
K.PStrFTime.JMPL .DA #K.PStrFTime.A
|
||||
.DA #K.PStrFTime.AA
|
||||
.DA #K.PStrFTime.B
|
||||
.DA #K.PStrFTime.BB
|
||||
.DA #K.PStrFTime.D
|
||||
.DA #K.PStrFTime.HH
|
||||
.DA #K.PStrFTime.II
|
||||
.DA #K.PStrFTime.M
|
||||
.DA #K.PStrFTime.MM
|
||||
.DA #K.PStrFTime.P
|
||||
.DA #K.PStrFTime.SS
|
||||
.DA #K.PStrFTime.W
|
||||
.DA #K.PStrFTime.Y
|
||||
.DA #K.PStrFTime.YY
|
||||
*--------------------------------------
|
||||
K.PStrFTime.JMPH .DA /K.PStrFTime.A
|
||||
.DA /K.PStrFTime.AA
|
||||
.DA /K.PStrFTime.B
|
||||
.DA /K.PStrFTime.BB
|
||||
.DA /K.PStrFTime.D
|
||||
.DA /K.PStrFTime.HH
|
||||
.DA /K.PStrFTime.II
|
||||
.DA /K.PStrFTime.M
|
||||
.DA /K.PStrFTime.MM
|
||||
.DA /K.PStrFTime.P
|
||||
.DA /K.PStrFTime.SS
|
||||
.DA /K.PStrFTime.W
|
||||
.DA /K.PStrFTime.Y
|
||||
.DA /K.PStrFTime.YY
|
||||
*--------------------------------------
|
||||
K.PStrFTime.A ldx #3 Max Len
|
||||
.HS 2C Bit abs
|
||||
|
||||
K.PStrFTime.AA ldx #15
|
||||
>LDYAI K.PStrFTime.DAY
|
||||
>STYA ZPQuickPtr4
|
||||
ldy #S.Time.WDAY
|
||||
bra K.PStrFTime.STR
|
||||
|
||||
K.PStrFTime.B ldx #3
|
||||
.HS 2C Bit abs
|
||||
|
||||
K.PStrFTime.BB ldx #15
|
||||
>LDYAI K.PStrFTime.MON
|
||||
>STYA ZPQuickPtr4
|
||||
ldy #S.Time.MONTH
|
||||
|
||||
K.PStrFTime.STR lda (ZPQuickPtr1),y get required S.Time field value
|
||||
tay
|
||||
beq .8 Illegal value
|
||||
|
||||
.1 dey range 0..x
|
||||
beq .2
|
||||
lda (ZPQuickPtr4)
|
||||
sec
|
||||
adc ZPQuickPtr4
|
||||
sta ZPQuickPtr4
|
||||
bcc .1
|
||||
inc ZPQuickPtr4+1
|
||||
bra .1
|
||||
|
||||
.2 ldy #0
|
||||
|
||||
.3 iny
|
||||
lda (ZPQuickPtr4),y
|
||||
phy
|
||||
jsr K.PStrFTime.addChar
|
||||
pla
|
||||
cmp (ZPQuickPtr4)
|
||||
beq .8
|
||||
|
||||
tay
|
||||
dex
|
||||
bne .3
|
||||
|
||||
.8 rts
|
||||
|
||||
K.PStrFTime.D ldy #S.Time.DAY
|
||||
bra K.PStrFTime.addDecPtr1Y
|
||||
K.PStrFTime.HH ldy #S.Time.HOUR
|
||||
bra K.PStrFTime.addDecPtr1Y
|
||||
K.PStrFTime.II ldy #S.Time.HOUR
|
||||
lda (ZPQuickPtr1),y
|
||||
cmp #12
|
||||
bcc .1
|
||||
sbc #12
|
||||
.1 bra K.PStrFTime.addDecA
|
||||
K.PStrFTime.M ldy #S.Time.MONTH
|
||||
bra K.PStrFTime.addDecPtr1Y
|
||||
K.PStrFTime.MM ldy #S.Time.MINUTE
|
||||
bra K.PStrFTime.addDecPtr1Y
|
||||
K.PStrFTime.P ldy #S.Time.HOUR
|
||||
lda (ZPQuickPtr1),y
|
||||
cmp #12
|
||||
bcc .1
|
||||
lda #'p'
|
||||
.HS 2C bit abs
|
||||
.1 lda #'a'
|
||||
jsr K.PStrFTime.addChar
|
||||
lda #'m'
|
||||
bra K.PStrFTime.addChar
|
||||
K.PStrFTime.SS ldy #S.Time.SECOND
|
||||
bra K.PStrFTime.addDecPtr1Y
|
||||
K.PStrFTime.W ldy #S.Time.WDAY
|
||||
bra K.PStrFTime.addDecPtr1Y
|
||||
K.PStrFTime.YY ldy #S.Time.CENTURY
|
||||
jsr K.PStrFTime.addDecPtr1Y
|
||||
K.PStrFTime.Y ldy #S.Time.YEAR
|
||||
*--------------------------------------
|
||||
K.PStrFTime.addDecPtr1Y
|
||||
lda (ZPQuickPtr1),y
|
||||
K.PStrFTime.addDecA
|
||||
sta K.PStrFTime.BIN
|
||||
stz K.PStrFTime.DEC
|
||||
sed
|
||||
ldx #8
|
||||
|
||||
.1 asl K.PStrFTime.BIN
|
||||
|
||||
lda K.PStrFTime.DEC
|
||||
adc K.PStrFTime.DEC
|
||||
sta K.PStrFTime.DEC
|
||||
|
||||
dex
|
||||
bne .1
|
||||
cld
|
||||
|
||||
* lda K.PStrFTime.DEC already in A
|
||||
|
||||
lsr
|
||||
lsr
|
||||
lsr
|
||||
lsr
|
||||
ora #$30
|
||||
jsr K.PStrFTime.addChar
|
||||
lda K.PStrFTime.DEC
|
||||
and #$0f
|
||||
ora #$30
|
||||
*--------------------------------------
|
||||
K.PStrFTime.addChar
|
||||
pha
|
||||
lda (ZPQuickPtr3)
|
||||
inc
|
||||
sta (ZPQuickPtr3)
|
||||
tay
|
||||
pla
|
||||
sta (ZPQuickPtr3),y
|
||||
rts
|
||||
*--------------------------------------
|
||||
K.PStrFTime.DAY >PSTRING "Monday"
|
||||
>PSTRING "Tuesday"
|
||||
>PSTRING "Wednesday"
|
||||
>PSTRING "Thursday"
|
||||
>PSTRING "Friday"
|
||||
>PSTRING "Saturday"
|
||||
>PSTRING "Sunday"
|
||||
*--------------------------------------
|
||||
K.PStrFTime.MON >PSTRING "January"
|
||||
>PSTRING "February"
|
||||
>PSTRING "March"
|
||||
>PSTRING "April"
|
||||
>PSTRING "May"
|
||||
>PSTRING "June"
|
||||
>PSTRING "July"
|
||||
>PSTRING "August"
|
||||
>PSTRING "September"
|
||||
>PSTRING "October"
|
||||
>PSTRING "November"
|
||||
>PSTRING "December"
|
||||
*--------------------------------------
|
||||
K.PStrFTime.BIN .BS 1
|
||||
K.PStrFTime.DEC .BS 1 always < 100
|
||||
*--------------------------------------
|
||||
* K.PStr2StrArrayYA
|
||||
* In :
|
||||
* Y,A = PTR to String
|
||||
|
@ -95,7 +95,7 @@ K.ComputeWDAY lda #3 Thursday : 4 (-1 for mod 7)
|
||||
cmp K.CTime.Year
|
||||
beq .4
|
||||
|
||||
.2 jsr K.IsLeapYearYA CC = Leap
|
||||
.2 jsr TIME.IsLeapYearYA CC = Leap
|
||||
lda #0
|
||||
rol
|
||||
eor #1
|
||||
@ -126,7 +126,7 @@ K.ComputeWDAY lda #3 Thursday : 4 (-1 for mod 7)
|
||||
|
||||
ldy K.CTime.Century
|
||||
lda K.CTime.Year
|
||||
jsr K.IsLeapYearYA CC = Leap
|
||||
jsr TIME.IsLeapYearYA CC = Leap
|
||||
lda #0
|
||||
rol
|
||||
eor #1
|
||||
@ -309,7 +309,7 @@ K.CTime2Time >PULLW ZPQuickPtr1
|
||||
K.CTime2Time.Year
|
||||
.1 ldy K.CTime.Century
|
||||
lda K.CTime.Year
|
||||
jsr K.IsLeapYearYA if Leap year CC
|
||||
jsr TIME.IsLeapYearYA if Leap year CC
|
||||
lda K.CTime.DivDay
|
||||
sbc #365
|
||||
pha
|
||||
@ -340,245 +340,6 @@ K.CTime2Time.Year
|
||||
clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
* K.StrFTime
|
||||
* In :
|
||||
* PULLW = Src PTR To K.Time
|
||||
* PULLW = Src PTR To Format String
|
||||
* PULLW = Dst PTR To PSTR Buf
|
||||
* %a Abbreviated weekday name : Thu
|
||||
* %A Full weekday name : Thursday
|
||||
* %b Abbreviated month name : Aug
|
||||
* %B Full month name : August
|
||||
* %d Day of the month, zero-padded (01-31)
|
||||
* %H Hour in 24h format (00-23) 14
|
||||
* %I Hour in 12h format (01-12) 02
|
||||
* %m Month as a decimal number (01-12) 08
|
||||
* %M Minute (00-59) 55
|
||||
* %p AM or PM designation PM
|
||||
* %S Second (00-61) 02
|
||||
* %w Weekday as a decimal number with Sunday as 0 (0-6)
|
||||
* %y Year, last two digits (00-99)
|
||||
* %Y Year four digits 2001
|
||||
* PULLW = Dst PSTR Buffer
|
||||
*--------------------------------------
|
||||
K.StrFTime >PULLW ZPQuickPtr1
|
||||
>PULLW ZPQuickPtr2
|
||||
>PULLW ZPQuickPtr3
|
||||
|
||||
lda #0
|
||||
sta (ZPQuickPtr3) Reset target PSTR length
|
||||
|
||||
tay
|
||||
|
||||
.1 iny
|
||||
lda (ZPQuickPtr2),y
|
||||
cmp #'%'
|
||||
beq .2
|
||||
|
||||
phy
|
||||
jsr K.StrFTime.addChar
|
||||
ply
|
||||
.10 tya
|
||||
cmp (ZPQuickPtr2)
|
||||
bne .1
|
||||
rts
|
||||
|
||||
.2 tya
|
||||
cmp (ZPQuickPtr2)
|
||||
beq .8
|
||||
|
||||
iny
|
||||
ldx #K.StrFTime.JMPL-K.StrFTime.Tbl-1
|
||||
|
||||
.3 lda (ZPQuickPtr2),y
|
||||
cmp K.StrFTime.Tbl,x
|
||||
beq .4
|
||||
dex
|
||||
bpl .3
|
||||
beq .10
|
||||
|
||||
.4 lda K.StrFTime.JMPL,x
|
||||
sta .5+1
|
||||
lda K.StrFTime.JMPH,x
|
||||
sta .5+2
|
||||
phy
|
||||
.5 jsr $ffff
|
||||
ply
|
||||
bra .10
|
||||
|
||||
.8 rts
|
||||
*--------------------------------------
|
||||
K.StrFTime.A ldx #3 Max Len
|
||||
.HS 2C Bit abs
|
||||
|
||||
K.StrFTime.AA ldx #15
|
||||
>LDYAI K.StrFTime.DAY
|
||||
>STYA ZPQuickPtr4
|
||||
ldy #S.Time.WDAY
|
||||
bra K.StrFTime.STR
|
||||
|
||||
K.StrFTime.B ldx #3
|
||||
.HS 2C Bit abs
|
||||
|
||||
K.StrFTime.BB ldx #15
|
||||
>LDYAI K.StrFTime.MON
|
||||
>STYA ZPQuickPtr4
|
||||
ldy #S.Time.MONTH
|
||||
|
||||
K.StrFTime.STR lda (ZPQuickPtr1),y get required S.Time field value
|
||||
tay
|
||||
beq .8 Illegal value
|
||||
|
||||
.1 dey range 0..x
|
||||
beq .2
|
||||
lda (ZPQuickPtr4)
|
||||
sec
|
||||
adc ZPQuickPtr4
|
||||
sta ZPQuickPtr4
|
||||
bcc .1
|
||||
inc ZPQuickPtr4+1
|
||||
bra .1
|
||||
|
||||
.2 ldy #0
|
||||
|
||||
.3 iny
|
||||
lda (ZPQuickPtr4),y
|
||||
phy
|
||||
jsr K.StrFTime.addChar
|
||||
pla
|
||||
cmp (ZPQuickPtr4)
|
||||
beq .8
|
||||
|
||||
tay
|
||||
dex
|
||||
bne .3
|
||||
|
||||
.8 rts
|
||||
|
||||
K.StrFTime.D ldy #S.Time.DAY
|
||||
bra K.StrFTime.addDecPtr1Y
|
||||
K.StrFTime.HH ldy #S.Time.HOUR
|
||||
bra K.StrFTime.addDecPtr1Y
|
||||
K.StrFTime.II ldy #S.Time.HOUR
|
||||
lda (ZPQuickPtr1),y
|
||||
cmp #12
|
||||
bcc .1
|
||||
sbc #12
|
||||
.1 bra K.StrFTime.addDecA
|
||||
K.StrFTime.M ldy #S.Time.MONTH
|
||||
bra K.StrFTime.addDecPtr1Y
|
||||
K.StrFTime.MM ldy #S.Time.MINUTE
|
||||
bra K.StrFTime.addDecPtr1Y
|
||||
K.StrFTime.P ldy #S.Time.HOUR
|
||||
lda (ZPQuickPtr1),y
|
||||
cmp #12
|
||||
bcc .1
|
||||
lda #'p'
|
||||
.HS 2C bit abs
|
||||
.1 lda #'a'
|
||||
jsr K.StrFTime.addChar
|
||||
lda #'m'
|
||||
bra K.StrFTime.addChar
|
||||
K.StrFTime.SS ldy #S.Time.SECOND
|
||||
bra K.StrFTime.addDecPtr1Y
|
||||
K.StrFTime.W ldy #S.Time.WDAY
|
||||
bra K.StrFTime.addDecPtr1Y
|
||||
K.StrFTime.YY ldy #S.Time.CENTURY
|
||||
jsr K.StrFTime.addDecPtr1Y
|
||||
K.StrFTime.Y ldy #S.Time.YEAR
|
||||
*--------------------------------------
|
||||
K.StrFTime.addDecPtr1Y
|
||||
lda (ZPQuickPtr1),y
|
||||
K.StrFTime.addDecA
|
||||
sta K.StrFTime.BIN
|
||||
stz K.StrFTime.DEC
|
||||
sed
|
||||
ldx #8
|
||||
|
||||
.1 asl K.StrFTime.BIN
|
||||
|
||||
lda K.StrFTime.DEC
|
||||
adc K.StrFTime.DEC
|
||||
sta K.StrFTime.DEC
|
||||
|
||||
dex
|
||||
bne .1
|
||||
cld
|
||||
|
||||
* lda K.StrFTime.DEC already in A
|
||||
|
||||
lsr
|
||||
lsr
|
||||
lsr
|
||||
lsr
|
||||
ora #$30
|
||||
jsr K.StrFTime.addChar
|
||||
lda K.StrFTime.DEC
|
||||
and #$0f
|
||||
ora #$30
|
||||
*--------------------------------------
|
||||
K.StrFTime.addChar
|
||||
pha
|
||||
lda (ZPQuickPtr3)
|
||||
inc
|
||||
sta (ZPQuickPtr3)
|
||||
tay
|
||||
pla
|
||||
sta (ZPQuickPtr3),y
|
||||
rts
|
||||
*--------------------------------------
|
||||
K.StrFTime.TBL .AS "aAbBdHImMpSwyY"
|
||||
K.StrFTime.JMPL .DA #K.StrFTime.A
|
||||
.DA #K.StrFTime.AA
|
||||
.DA #K.StrFTime.B
|
||||
.DA #K.StrFTime.BB
|
||||
.DA #K.StrFTime.D
|
||||
.DA #K.StrFTime.HH
|
||||
.DA #K.StrFTime.II
|
||||
.DA #K.StrFTime.M
|
||||
.DA #K.StrFTime.MM
|
||||
.DA #K.StrFTime.P
|
||||
.DA #K.StrFTime.SS
|
||||
.DA #K.StrFTime.W
|
||||
.DA #K.StrFTime.Y
|
||||
.DA #K.StrFTime.YY
|
||||
*--------------------------------------
|
||||
K.StrFTime.JMPH .DA /K.StrFTime.A
|
||||
.DA /K.StrFTime.AA
|
||||
.DA /K.StrFTime.B
|
||||
.DA /K.StrFTime.BB
|
||||
.DA /K.StrFTime.D
|
||||
.DA /K.StrFTime.HH
|
||||
.DA /K.StrFTime.II
|
||||
.DA /K.StrFTime.M
|
||||
.DA /K.StrFTime.MM
|
||||
.DA /K.StrFTime.P
|
||||
.DA /K.StrFTime.SS
|
||||
.DA /K.StrFTime.W
|
||||
.DA /K.StrFTime.Y
|
||||
.DA /K.StrFTime.YY
|
||||
*--------------------------------------
|
||||
K.StrFTime.DAY >PSTRING "Monday"
|
||||
>PSTRING "Tuesday"
|
||||
>PSTRING "Wednesday"
|
||||
>PSTRING "Thursday"
|
||||
>PSTRING "Friday"
|
||||
>PSTRING "Saturday"
|
||||
>PSTRING "Sunday"
|
||||
*--------------------------------------
|
||||
K.StrFTime.MON >PSTRING "January"
|
||||
>PSTRING "February"
|
||||
>PSTRING "March"
|
||||
>PSTRING "April"
|
||||
>PSTRING "May"
|
||||
>PSTRING "June"
|
||||
>PSTRING "July"
|
||||
>PSTRING "August"
|
||||
>PSTRING "September"
|
||||
>PSTRING "October"
|
||||
>PSTRING "November"
|
||||
>PSTRING "December"
|
||||
*--------------------------------------
|
||||
* In :
|
||||
* Y = Century
|
||||
* A = Year (0..99)
|
||||
@ -589,7 +350,8 @@ K.StrFTime.MON >PSTRING "January"
|
||||
* CC = Leap
|
||||
* CS = Not Leap
|
||||
*--------------------------------------
|
||||
K.IsLeapYearYA cmp #0 Year = 00 ?
|
||||
TIME.IsLeapYearYA
|
||||
cmp #0 Year = 00 ?
|
||||
bne .1 no
|
||||
|
||||
tya year = 00, get century in a
|
||||
@ -605,6 +367,7 @@ K.IsLeapYearYA cmp #0 Year = 00 ?
|
||||
.9 clc Leap
|
||||
rts
|
||||
*--------------------------------------
|
||||
K.StrFTime.MDAY .DA #3,#0,#3,#2,#3,#2,#3,#3,#2,#3,#2,#3
|
||||
K.CTime.DWORD .BS 4
|
||||
K.CTime.DivDay .BS 2
|
||||
K.CTime.ModDay .BS 3
|
||||
@ -613,11 +376,6 @@ K.CTime.Div3600 .BS 1
|
||||
K.CTime.Mod .BS 1
|
||||
K.CTime.Century .BS 1
|
||||
K.CTime.Year .BS 1
|
||||
*--------------------------------------
|
||||
K.StrFTime.BIN .BS 1
|
||||
K.StrFTime.DEC .BS 1 always < 100
|
||||
*--------------------------------------
|
||||
K.StrFTime.MDAY .DA #3,#0,#3,#2,#3,#2,#3,#3,#2,#3,#2,#3
|
||||
MAN
|
||||
SAVE SYS/KERNEL.S.Time
|
||||
LOAD SYS/KERNEL.S
|
||||
|
@ -38,8 +38,9 @@ ZPQuickPtr4 .EQ ZPKERNEL+6
|
||||
*--------------------------------------
|
||||
* Kernel Init Stage 3
|
||||
*--------------------------------------
|
||||
jsr GO.A2osX
|
||||
|
||||
sta SETALTZP
|
||||
bit RRAMWRAMBNK1
|
||||
bit RRAMWRAMBNK1
|
||||
jsr Kernel.Init3
|
||||
>DEBUGOA
|
||||
*--------------------------------------
|
||||
|
Loading…
Reference in New Issue
Block a user