Kernel version 0.9 : Change in API to conform with stdlib & stdio

This commit is contained in:
Rémy GIBERT 2017-08-22 17:03:34 +02:00
parent d0682caab7
commit 62ad3573b9
23 changed files with 130 additions and 1012 deletions

View File

@ -29,7 +29,7 @@ Print A (char) to File
## Out: ## Out:
+ CC = success + CC = success
# PutCA # PutCharA
Print A (char) to StdOut Print A (char) to StdOut
## In: ## In:
@ -38,21 +38,21 @@ Print A (char) to StdOut
## Out: ## Out:
+ CC = success + CC = success
# FGetCA # GetChar
Get char from File Get char from StdIn
## In: ## In:
+ A = hFILE + none.
## Out: ## Out:
+ CC = success + CC = success
+ A = char + A = char
# GetC # GetCA
Get char from StdIn Get char from File
## In: ## In:
+ none. + A = hFILE
## Out: ## Out:
+ CC = success + CC = success
@ -108,17 +108,17 @@ Scan a PStr (in progress)
## Out: ## Out:
# PrintFYA/SPrintFYA/FPrintFYA # PrintFYA/SPrintFYA/FPrintFYA
Prints Pascal/C-Style String Prints C-Style String
## In: ## In:
+ PrintFYA : PrintFYA :
+ Y,A = PTR to CStr + Y,A = PTR to CStr
+ SPrintFYA : SPrintFYA :
+ Y,A = PTR to CStr + Y,A = PTR to CStr
+ PULLW = Ptr to Dst Buffer + PULLW = Ptr to Dst Buffer
+ FPrintFYA : FPrintFYA :
+ Y,A = PTR to CStr + Y,A = PTR to CStr
+ PULLB = hDev + PULLB = hNode
## Out: ## Out:
+ CC : success + CC : success

Binary file not shown.

Binary file not shown.

View File

@ -32,14 +32,14 @@ SRC.PrintLineErr ldx #0
.1 lda UsrBuf256,x .1 lda UsrBuf256,x
beq .2 beq .2
phx phx
>SYSCALL PutCA >SYSCALL PutCharA
plx plx
inx inx
bcc .1 bcc .1
rts rts
.2 lda #13 .2 lda #13
>SYSCALL PutCA >SYSCALL PutCharA
bcs .9 bcs .9
ldx #0 ldx #0
@ -50,19 +50,19 @@ SRC.PrintLineErr ldx #0
beq .4 beq .4
phx phx
lda #'-' lda #'-'
>SYSCALL PutCA >SYSCALL PutCharA
plx plx
bcs .9 bcs .9
bra .3 bra .3
.4 lda #'^' .4 lda #'^'
phx phx
>SYSCALL PutCA >SYSCALL PutCharA
plx plx
bcs .9 bcs .9
.5 lda #13 .5 lda #13
>SYSCALL PutCA >SYSCALL PutCharA
.9 rts .9 rts
*--------------------------------------- *---------------------------------------
SRC.ParseLine ldx UsrBuf256 SRC.ParseLine ldx UsrBuf256
@ -326,12 +326,12 @@ SRC.ParseLine.OpCode
.21 inx .21 inx
lda SRC.AM.StrBuf,x lda SRC.AM.StrBuf,x
phx phx
>SYSCALL PutCA >SYSCALL PutCharA
plx plx
cpx SRC.AM.StrBuf cpx SRC.AM.StrBuf
bne .21 bne .21
lda #13 lda #13
>SYSCALL PutCA >SYSCALL PutCharA
.20 ldy #ASM.PC .20 ldy #ASM.PC

View File

@ -110,7 +110,7 @@ SYM.Dump >LDYA L.MSG.SYMBOLS
rts rts
.5 lda #13 .5 lda #13
>SYSCALL PutCA >SYSCALL PutCharA
ldy #SYM.DumpCount ldy #SYM.DumpCount
lda (pData),y lda (pData),y

View File

@ -241,11 +241,11 @@ CS.RUN.PRINT sty BytesRead Y,A = Bytes read
bra .7 bra .7
.4 lda #13 .4 lda #13
>SYSCALL PutCA >SYSCALL PutCharA
bcs .9 bcs .9
lda #10 lda #10
.6 >SYSCALL PutCA .6 >SYSCALL PutCharA
bcs .9 bcs .9
.7 inc ByteIndex .7 inc ByteIndex

View File

@ -239,9 +239,9 @@ CS.RUN.CheckErr bcs .1
rts rts
.2 lda #13 .2 lda #13
>SYSCALL PutCA >SYSCALL PutCharA
lda #10 lda #10
>SYSCALL PutCA >SYSCALL PutCharA
pla pla
sec sec
.9 rts .9 rts

View File

@ -14,7 +14,7 @@ SCRN.Init ldy #ScreenH
>SYSCALL PrintFYA >SYSCALL PrintFYA
bcs .9 bcs .9
lda #12 lda #12
>SYSCALL PutCA >SYSCALL PutCharA
bcs .9 bcs .9
lda #0 lda #0
@ -162,7 +162,7 @@ SCRN.UpdateLineAtALenY
pla pla
bcs .11 bcs .11
>SYSCALL PutCA >SYSCALL PutCharA
.11 ply .11 ply
plx plx
bcs .9 bcs .9
@ -305,7 +305,7 @@ SCRN.ClearEOLA pha
pha pha
lda #' ' lda #' '
>SYSCALL PutCA >SYSCALL PutCharA
bcc .1 bcc .1
plx plx
rts rts
@ -332,7 +332,7 @@ SCRN.InvLineA sta .2+1
.1 pha .1 pha
lda #' ' lda #' '
>SYSCALL PutCA >SYSCALL PutCharA
pla pla
bcs .9 bcs .9

View File

@ -162,7 +162,7 @@ CS.RUN.LINK >PUSHW L.MSG1.LINK.OK
.4 phx .4 phx
lda #'0' lda #'0'
>SYSCALL PutCA >SYSCALL PutCharA
plx plx
dex dex
bne .4 bne .4

View File

@ -243,7 +243,7 @@ CS.RUN.DIR ldy #bAllmostAll
.1 lda #' ' .1 lda #' '
phx phx
>SYSCALL PutCA >SYSCALL PutCharA
plx plx
bcs .9 bcs .9
dex dex
@ -401,9 +401,9 @@ CS.RUN.NewLine ldy #ColCount
beq CS.RUN.NewLine.8 beq CS.RUN.NewLine.8
CS.RUN.NewLine.1 CS.RUN.NewLine.1
lda #13 lda #13
>SYSCALL PutCA >SYSCALL PutCharA
lda #10 lda #10
>SYSCALL PutCA >SYSCALL PutCharA
rts rts
CS.RUN.NewLine.8 CS.RUN.NewLine.8
clc clc

View File

@ -73,9 +73,9 @@ CS.RUN >LDYA L.MSG0
bcs .9 bcs .9
.6 lda #13 .6 lda #13
>SYSCALL PutCA >SYSCALL PutCharA
lda #10 lda #10
>SYSCALL PutCA >SYSCALL PutCharA
.7 inc DEV.ID .7 inc DEV.ID
lda DEV.ID lda DEV.ID

View File

@ -292,11 +292,11 @@ NSC.Dump ldx #1
lda DS1216E.DATA+2 lda DS1216E.DATA+2
jsr PrintBCD jsr PrintBCD
lda #'/' lda #'/'
>SYSCALL PutCA >SYSCALL PutCharA
lda DS1216E.DATA+1 lda DS1216E.DATA+1
jsr PrintBCD jsr PrintBCD
lda #'/' lda #'/'
>SYSCALL PutCA >SYSCALL PutCharA
lda DS1216E.DATA lda DS1216E.DATA
jsr PrintBCD jsr PrintBCD
@ -309,15 +309,15 @@ NSC.Dump ldx #1
.4 and #$3F .4 and #$3F
jsr PrintBCD jsr PrintBCD
lda #':' lda #':'
>SYSCALL PutCA >SYSCALL PutCharA
lda DS1216E.DATA+5 lda DS1216E.DATA+5
jsr PrintBCD jsr PrintBCD
lda #':' lda #':'
>SYSCALL PutCA >SYSCALL PutCharA
lda DS1216E.DATA+6 lda DS1216E.DATA+6
jsr PrintBCD jsr PrintBCD
lda #'.' lda #'.'
>SYSCALL PutCA >SYSCALL PutCharA
lda DS1216E.DATA+7 lda DS1216E.DATA+7
jsr PrintBCD jsr PrintBCD
rts rts
@ -328,12 +328,12 @@ PrintBCD pha
lsr lsr
lsr lsr
ora #$30 ora #$30
>SYSCALL PutCA >SYSCALL PutCharA
bcs .9 bcs .9
pla pla
and #$0f and #$0f
ora #$30 ora #$30
>SYSCALL PutCA >SYSCALL PutCharA
.9 rts .9 rts
*-------------------------------------- *--------------------------------------
GetBCD lda (ZPPtr1),y GetBCD lda (ZPPtr1),y

View File

@ -533,10 +533,10 @@ CS.RUN.OVERWRITE.KEY
.FIN .FIN
*-------------------------------------- *--------------------------------------
CS.RUN.CR lda #13 CS.RUN.CR lda #13
>SYSCALL PutCA >SYSCALL PutCharA
bcs .9 bcs .9
lda #10 lda #10
>SYSCALL PutCA >SYSCALL PutCharA
.9 rts .9 rts
*-------------------------------------- *--------------------------------------
.DO X.COPY.TO.DEST=1 .DO X.COPY.TO.DEST=1
@ -653,7 +653,7 @@ CS.RUN.Copy stz .90+1
bmi .8 bmi .8
lda #'.' lda #'.'
>SYSCALL PutCA >SYSCALL PutCharA
rts rts
.8 clc .8 clc

View File

@ -677,7 +677,7 @@ SetCharAtXY cmp #$40
sta CLRWRITEAUX sta CLRWRITEAUX
plp plp
clc
rts rts
*-------------------------------------- *--------------------------------------
GetCharAtXY php GetCharAtXY php

View File

@ -269,9 +269,9 @@ SYS.FreeStkObjA .EQ $AC
* .EQ $AE * .EQ $AE
*-------------------------------------- *--------------------------------------
SYS.FPutCAY .EQ $B0 SYS.FPutCAY .EQ $B0
SYS.PutCA .EQ $B2 SYS.PutCharA .EQ $B2
SYS.FGetCA .EQ $B4 SYS.GetCA .EQ $B4
SYS.GetC .EQ $B6 SYS.GetChar .EQ $B6
SYS.FPutS .EQ $B8 SYS.FPutS .EQ $B8
SYS.PutSYA .EQ $BA SYS.PutSYA .EQ $BA
SYS.FGetS .EQ $BC SYS.FGetS .EQ $BC

View File

@ -79,10 +79,10 @@ CS.RUN lda #0
bcc .2 bcc .2
lda #13 lda #13
>SYSCALL PutCA >SYSCALL PutCharA
bcs .9 bcs .9
lda #10 lda #10
>SYSCALL PutCA >SYSCALL PutCharA
bcs .9 bcs .9
>LDYA L.SHELL >LDYA L.SHELL
@ -153,7 +153,7 @@ INPUT.CHARIN tax save char...
lda (pData),y lda (pData),y
bne .1 bne .1
txa txa
.1 >SYSCALL PutCA .1 >SYSCALL PutCharA
rts rts
.2 cpx #13 CR .2 cpx #13 CR

View File

@ -489,11 +489,11 @@ Cmd.Exec.ECHO lda ARGS
Cmd.Exec.ECHO.CR Cmd.Exec.ECHO.CR
lda #13 lda #13
>SYSCALL PutCA >SYSCALL PutCharA
bcs Cmd.Exec.ECHO.RTS bcs Cmd.Exec.ECHO.RTS
lda #10 lda #10
>SYSCALL PutCA >SYSCALL PutCharA
Cmd.Exec.ECHO.RTS Cmd.Exec.ECHO.RTS
rts rts
@ -562,7 +562,7 @@ Cmd.Exec.READ lda ARGS
cmp #'"' cmp #'"'
beq .1 beq .1
phx phx
>SYSCALL PutCA >SYSCALL PutCharA
plx plx
bcs .99 bcs .99
bra .3 bra .3

View File

@ -159,7 +159,7 @@ CS.RUN ldy #VarBuffer READ Command ?
lda (pData),y lda (pData),y
bpl .13 bpl .13
>SYSCALL GetC >SYSCALL GetChar
bcs .8 bcs .8
.13 jsr CheckSleep .13 jsr CheckSleep
@ -181,7 +181,7 @@ CS.RUN ldy #VarBuffer READ Command ?
bcs CS.RUN.EXIT.RTS bcs CS.RUN.EXIT.RTS
.1 >SYSCALL Sleep .1 >SYSCALL Sleep
>SYSCALL GetC >SYSCALL GetChar
bcs .1 no char bcs .1 no char
jsr CS.CHARIN jsr CS.CHARIN
@ -219,7 +219,7 @@ CS.RUN.READ lda #0
sta (pData) sta (pData)
.1 >SYSCALL Sleep .1 >SYSCALL Sleep
>SYSCALL GetC >SYSCALL GetChar
bcs .1 no char bcs .1 no char
jsr CS.CHARIN jsr CS.CHARIN
@ -289,13 +289,13 @@ CS.RUN.BATCH jsr CSH.Run
.90 jsr CSH.GetChar .90 jsr CSH.GetChar
bcs .92 bcs .92
>SYSCALL PutCA >SYSCALL PutCharA
.91 jsr CSH.GetNextChar .91 jsr CSH.GetNextChar
bcs .92 bcs .92
cmp #13 cmp #13
beq .92 beq .92
>SYSCALL PutCA >SYSCALL PutCharA
bra .91 bra .91
.92 pla .92 pla
@ -409,7 +409,7 @@ CS.CHARIN tax
bne .8 bne .8
txa txa
>SYSCALL PutCA >SYSCALL PutCharA
.8 clc .8 clc
rts rts
@ -417,9 +417,9 @@ CS.CHARIN tax
CS.CHARIN.CTRL cpx #13 CR CS.CHARIN.CTRL cpx #13 CR
bne .10 bne .10
txa txa
>SYSCALL PutCA >SYSCALL PutCharA
lda #10 lda #10
>SYSCALL PutCA >SYSCALL PutCharA
lda (pData) CmdBuffer lda (pData) CmdBuffer
ora #$80 ora #$80
@ -513,14 +513,27 @@ PrintPrompt >LDYA L.ENV.PS1
plp plp
.9 rts .9 rts
*-------------------------------------- *--------------------------------------
CmdLine.CLR jsr CmdLine.DEL CmdLine.CLR lda (pData)
bne CmdLine.CLR beq .9
rts
tay
lda #8
.1 sta (pData),y
dey
bne .1
jsr CmdLine.SET
lda #0
sta (pData)
.9 rts
*-------------------------------------- *--------------------------------------
CmdLine.DEL lda (pData) CmdLine.DEL lda (pData)
beq .9 beq .9
lda #8 lda #8
>SYSCALL PutCA >SYSCALL PutCharA
lda (pData) lda (pData)
dec dec
sta (pData) sta (pData)

View File

@ -16,27 +16,27 @@ K.FPutCAY sta K.PutC.Char
sty K.PutC.Node sty K.PutC.Node
tya tya
phy phy
bne K.PutCA.1 bne K.PutCharA.1
K.PutCA.8 ply K.PutCharA.8 ply
clc clc
rts rts
*/-------------------------------------- */--------------------------------------
* # PutCA * # PutCharA
* Print A (char) to StdOut * Print A (char) to StdOut
* ## In: * ## In:
* A : char to print * A : char to print
* ## Out: * ## Out:
* CC = success * CC = success
*\-------------------------------------- *\--------------------------------------
K.PutCA sta K.PutC.Char K.PutCharA sta K.PutC.Char
phy phy
ldy #S.PS.hStdOut ldy #S.PS.hStdOut
lda (pPs),y lda (pPs),y
beq K.PutCA.8 NUL beq K.PutCharA.8 NUL
phx phx
K.PutCA.1 sta K.PutC.Node K.PutCharA.1 sta K.PutC.Node
jsr K.GetMemPtrA jsr K.GetMemPtrA
>STYA pDev >STYA pDev
@ -44,27 +44,27 @@ K.PutCA.1 sta K.PutC.Node
lda (pDev),y lda (pDev),y
asl asl
tax tax
jsr K.PutCA.Jmp jsr K.PutCharA.Jmp
plx plx
ply ply
rts rts
*-------------------------------------- *--------------------------------------
K.PutCA.Jmp jmp (.1,x) K.PutCharA.Jmp jmp (.1,x)
.1 .DA K.PutCA.REG .1 .DA K.PutCharA.REG
.DA K.CHR.IOERR DIR .DA K.CHR.IOERR DIR
.DA K.PutCA.CDEV .DA K.PutCharA.CDEV
.DA K.CHR.IOERR BDEV .DA K.CHR.IOERR BDEV
.DA K.CHR.IOERR LNK .DA K.CHR.IOERR LNK
.DA K.CHR.IOERR DSOCK .DA K.CHR.IOERR DSOCK
.DA K.PutCA.SSOCK .DA K.PutCharA.SSOCK
.DA K.PutCA.FIFO .DA K.PutCharA.FIFO
*-------------------------------------- *--------------------------------------
K.PutCA.REG lda K.PutC.Node K.PutCharA.REG lda K.PutC.Node
ldy K.PutC.Char ldy K.PutC.Char
jmp K.FWriteAY jmp K.FWriteAY
*-------------------------------------- *--------------------------------------
K.PutCA.CDEV ldy #S.NODE.DEV.JMP K.PutCharA.CDEV ldy #S.NODE.DEV.JMP
lda (pDev),y lda (pDev),y
sta .1+1 sta .1+1
iny iny
@ -74,7 +74,8 @@ K.PutCA.CDEV ldy #S.NODE.DEV.JMP
ldx #DEVMGR.WRITE ldx #DEVMGR.WRITE
.1 jmp $ffff .1 jmp $ffff
*-------------------------------------- *--------------------------------------
K.PutCA.SSOCK lda (pDev) #S.NODE.HANDLER K.PutCharA.SSOCK
lda (pDev) #S.NODE.HANDLER
jsr K.GetMemPtrA jsr K.GetMemPtrA
>STYA .1 >STYA .1
@ -87,7 +88,7 @@ K.PutCA.SSOCK lda (pDev) #S.NODE.HANDLER
tax Function Offset for write tax Function Offset for write
.1 jmp $ffff .1 jmp $ffff
*-------------------------------------- *--------------------------------------
K.PutCA.FIFO ldy #S.NODE.FIFO.S K.PutCharA.FIFO ldy #S.NODE.FIFO.S
lda (pDev),y lda (pDev),y
beq .9 Remote PS did not opened yet the pipe beq .9 Remote PS did not opened yet the pipe
cmp #S.NODE.FIFO.S.Closed cmp #S.NODE.FIFO.S.Closed
@ -123,16 +124,7 @@ K.PutCA.FIFO ldy #S.NODE.FIFO.S
K.PutC.Char .BS 1 K.PutC.Char .BS 1
K.PutC.Node .BS 1 K.PutC.Node .BS 1
*/-------------------------------------- */--------------------------------------
* # FGetCA * # GetChar
* Get char from File
* ## In:
* A = hFILE
* ## Out:
* CC = success
* A = char
*\--------------------------------------
*/--------------------------------------
* # GetC
* Get char from StdIn * Get char from StdIn
* ## In: * ## In:
* none. * none.
@ -140,10 +132,18 @@ K.PutC.Node .BS 1
* CC = success * CC = success
* A = char * A = char
*\-------------------------------------- *\--------------------------------------
K.GetC ldy #S.PS.hStdIn K.GetChar ldy #S.PS.hStdIn
lda (pPs),y lda (pPs),y
*/--------------------------------------
K.FGetCA sta K.PutC.Node * # GetCA
* Get char from File
* ## In:
* A = hFILE
* ## Out:
* CC = success
* A = char
*\--------------------------------------
K.GetCA sta K.PutC.Node
jsr K.GetMemPtrA jsr K.GetMemPtrA
>STYA pDev >STYA pDev

View File

@ -103,7 +103,7 @@ K.SScanF.IsDigit
rts rts
*/-------------------------------------- */--------------------------------------
* # PrintFYA/SPrintFYA/FPrintFYA * # PrintFYA/SPrintFYA/FPrintFYA
* Prints Pascal/C-Style String * Prints C-Style String
* ## In: * ## In:
* PrintFYA : * PrintFYA :
* Y,A = PTR to CStr * Y,A = PTR to CStr
@ -112,7 +112,7 @@ K.SScanF.IsDigit
* PULLW = Ptr to Dst Buffer * PULLW = Ptr to Dst Buffer
* FPrintFYA : * FPrintFYA :
* Y,A = PTR to CStr * Y,A = PTR to CStr
* PULLB = hDev * PULLB = hNode
* ## Out: * ## Out:
* CC : success * CC : success
* CS : error code from Output * CS : error code from Output
@ -154,16 +154,13 @@ K.SPrintFYA >STYA ZPPtr1
K.FPrintFYA >STYA ZPPtr1 K.FPrintFYA >STYA ZPPtr1
K.PPrintFYA ldx #$01 PSTR K.PrintFYA >STYA ZPPtr1
.HS 2C bit abs
K.PrintFYA ldx #$00 CSTR
>STYA ZPPtr1
stx Printf.GetCharAtPtr1Y+1
ldy #0 ldy #0
.1 jsr Printf.GetCharAtPtr1Y .1 lda (ZPPtr1),y
beq .99 beq .99
iny
cmp #'%' cmp #'%'
bne .10 bne .10
@ -171,9 +168,10 @@ K.PrintFYA ldx #$00 CSTR
lda #' ' lda #' '
sta PADCHAR sta PADCHAR
.2 ldx #PrintFTBL1.END-PrintFTBL1-1 .2 ldx #PrintFTBL2-PrintFTBL1-1
jsr Printf.GetCharAtPtr1Y lda (ZPPtr1),y
beq .99 beq .99
iny
.3 cmp PrintFTBL1,x do we have a %x command? .3 cmp PrintFTBL1,x do we have a %x command?
beq .8 yes, jmp to it! beq .8 yes, jmp to it!
@ -220,9 +218,11 @@ K.PrintFYA ldx #$00 CSTR
.10 cmp #'\' .10 cmp #'\'
bne .20 bne .20
ldx #PrintFTBL2.END-PrintFTBL2-1 ldx #PrintFTBL2.OUT-PrintFTBL2-1
jsr Printf.GetCharAtPtr1Y lda (ZPPtr1),y
beq .99 beq .99
iny
.12 cmp PrintFTBL2,x .12 cmp PrintFTBL2,x
beq .13 beq .13
dex dex
@ -238,9 +238,7 @@ K.PrintFYA ldx #$00 CSTR
PrintFESC jmp (PrintFJMP,x) PrintFESC jmp (PrintFJMP,x)
*-------------------------------------- *--------------------------------------
PrintFTBL1 .AS "abBdDuefhHiILnNsS" PrintFTBL1 .AS "abBdDuefhHiILnNsS"
PrintFTBL1.END
PrintFTBL2 .AS "befnr\%" PrintFTBL2 .AS "befnr\%"
PrintFTBL2.END
PrintFTBL2.OUT .HS 08.1B.0C.0A.0D \b\e\f\n\r PrintFTBL2.OUT .HS 08.1B.0C.0A.0D \b\e\f\n\r
.DA #'\' \\ .DA #'\' \\
.DA #'%' \% .DA #'%' \%
@ -499,28 +497,7 @@ PrintF.SS ldy #$00 PSTR
.8 clc .8 clc
.9 rts .9 rts
*-------------------------------------- *--------------------------------------
Printf.GetCharAtPtr1Y Printf.Cout jmp K.PutCharA
lda #$ff Self Modified PSTR/CSTR
bne .1
lda (ZPPtr1),y CSTR
beq .9
iny advance to next char...
bne .9
inc ZPPtr1+1 Allow >256 CStrings
rts
.1 tya PSTR
cmp (ZPPtr1)
beq .9
iny
lda (ZPPtr1),y NZ
.9 clc no error, but end of string
rts
*--------------------------------------
Printf.Cout jmp K.PutCA
Printf.Cout.Ptr sta $ffff Self modified Printf.Cout.Ptr sta $ffff Self modified

View File

@ -1,357 +0,0 @@
PR#3
PREFIX /A2OSX.BUILD
LOMEM $A00
INC 1
AUTO 6
*--------------------------------------
Kernel.Init2 sei
>LDAXI MSG.Init2
jsr PrintFAX
>LDYAI A2osX.GP
>STYA ZPPtr1
>LDYAI A2osX.SYSCALL
>STYA ZPPtr2
>LDYAI A2osX.D1-A2osX.GP^$FFFF
>STYA ZPPtr3
jsr Kernel.Move
sta CLRALTZP
>LDAXI MSG.D2
jsr PrintFAX
sta SETALTZP
lda RRAMWRAMBNK2
lda RRAMWRAMBNK2
>LDYAI A2osX.D2
>STYA ZPPtr1
>LDYAI $D000
>STYA ZPPtr2
>LDYAI A2osX.E0-A2osX.D2^$FFFF
>STYA ZPPtr3
jsr Kernel.Move
sta CLRALTZP
>LDAXI MSG.D1
jsr PrintFAX
sta SETALTZP
lda RRAMWRAMBNK1
lda RRAMWRAMBNK1
>LDYAI A2osX.D1
>STYA ZPPtr1
>LDYAI $D000
>STYA ZPPtr2
>LDYAI A2osX.D2-A2osX.D1^$FFFF
>STYA ZPPtr3
jsr Kernel.Move
sta CLRALTZP
>LDAXI MSG.E0
jsr PrintFAX
sta SETALTZP
lda RRAMWRAMBNK1
lda RRAMWRAMBNK1
>LDYAI A2osX.E0
>STYA ZPPtr1
>LDYAI $E000
>STYA ZPPtr2
>LDYAI A2osX.E0.E-A2osX.E0^$FFFF
>STYA ZPPtr3
jsr Kernel.Move
>LDYAI D.STACK.TOP
>STYA pStack init Soft Stack
sta CLRALTZP Make MAIN ZP is enabled for X.PRINT.F
cli
jsr KConfigLoad
lda A2osX.HZ
pha push HZ
>LDAXI MSG.HZ
jsr PrintFAX
jsr CPU.Init
>LDAXI MSG.Init2.OK
jsr PrintFAX
rts Do NOT replace this JSR/RTS with a JMP
*--------------------------------------
Kernel.Move ldy #0
.1 inc ZPPtr3
bne .2
inc ZPPtr3+1
beq .9
.2 lda (ZPPtr1),y
sta (ZPPtr2),y
iny
bne .1
inc ZPPtr1+1
inc ZPPtr2+1
bne .1
.9 rts
*--------------------------------------
CPU.Init >LDAXI MSG.CPU
jsr PrintFAX
jsr Detect6502 A = CPU type
sta A2osX.CPUTYPE
ldx MSG.CPUTYPEH,y
lda MSG.CPUTYPEL,y
jsr PrintFAX
lda MACHID
and #MACHID.TYPE
cmp #MACHID.TYPE.IIc
beq CPU.Init.Z80
>LDAXI MSG.CPU.SPEED
jsr PrintFAX
stz A2osX.RANDOM16
stz A2osX.RANDOM16+1
php
sei
.1 bit VBL
bpl .2
.2 bit VBL
bmi .2
ldx #0 Count LO
lda #0 Count HI
.3 ldy #3 (2)
.4 nop (2)
dey (2)
bne .4 (2*)
inc A2osX.RANDOM16 (6)
bne .5 (2*)
inc A2osX.RANDOM16+1 (6)
bit VBL (4)
bpl .3 (2*)
bmi .6
.5 nop (2)
nop (2)
nop (2)
bit VBL (4)
bpl .3 (2*)
.6 plp
stz A2osX.CPUSPEED
.7 sec
lda A2osX.RANDOM16
sbc #100
tax
lda A2osX.RANDOM16+1
sbc /100
bcc .8
stx A2osX.RANDOM16
sta A2osX.RANDOM16+1
inc A2osX.CPUSPEED
bra .7
.8 lda A2osX.RANDOM16
sta A2osX.CPUSPEED+1
pha push CPU speed LO
lda A2osX.CPUSPEED
pha push CPU speed HI
>LDAXI MSG.CPU.SPEEDOK
jsr PrintFAX
CPU.Init.Z80 >LDAXI MSG.Z80
jsr PrintFAX
jsr DetectZ80
bcs .9
sta A2osX.Z80SLOT
pha Push Z80Slot
tax
lda #A2osX.SLOTS.Z80
sta A2osX.SLOTS,x
>LDAXI MSG.Z80.OK
jsr PrintFAX
rts
.9 >LDAXI MSG.Z80.KO
jsr PrintFAX
rts
*--------------------------------------
* Out:
* A = $60, 6502
* A = $61, 65C02
* A = $62, 65R02
* A = $63, 65816
*--------------------------------------
Detect6502 ldy #0 Test 6502 BCD bug
sed
lda #$99
clc
adc #$01
cld
bmi .9 BUG!, we have 6502
ldy #3 test 65C816 TYX Instruction
ldx #0
.OP 65816
tyx TYX: if 65C816, x becomes non-zero
.OP 65C02
bne .9 worked! 65C816
dey y=2 -> R65C02
ldx $EA save zp $EA
stz $EA store 0 in $EA
* .OP 65R02
.HS F7EA For compatibility with A2osX.ASM
* smb 7,$EA if not Rockwell, assemble as nop nop
* .OP 65C02
asl $EA cs if Rockwell
stx $EA restore zp $EA
bcs .9
dey y=1 -> 65C02
.9 tya
ora #$60
rts
*--------------------------------------
* Out:
* A = Z80 Slot
*--------------------------------------
DetectZ80 ldx #Z80Code.Size
.1 lda Z80Code.Start-1,x
sta $1000-1,x 00000H for Z80
dex
bne .1
stz ZPPtr1
lda #$C1
sta ZPPtr1+1
.2 sta (ZPPtr1)
lda $100D
bmi .8
inc ZPPtr1+1
lda ZPPtr1+1
cmp #$C8
beq .9 CS
clc
adc #$20
sta $100A
bra .2
.8 lda ZPPtr1+1
and #$0F
clc
.9 rts
*--------------------------------------
KConfigLoad >LDAXI MSG.KCREAD
jsr PrintFAX
jsr MLI
.DA #MLIOPEN
.DA MLIOPEN00
bcs .9
lda MLIOPEN00+5
sta MLIREAD00+1
sta MLICLOSE00+1
jsr MLI
.DA #MLIREAD
.DA MLIREAD00
php
pha
jsr MLI
.DA #MLICLOSE
.DA MLICLOSE00
pla
plp
bcs .9
>LDAXI MSG.KCREAD.OK
jsr PrintFAX
rts
.9 >LDAXI MSG.KCREAD.KO
jsr PrintFAX
rts
*--------------------------------------
Z80Code.Start .HS 31FFFF START: LD SP,0FFFFH Init Stack
.HS 3EFF LD A,0FFH Set Flag
.HS 320D00 LD (FLAG),A
.HS 3200E1 LD (0E100H),A Back to 6502
.HS 18F3 JR START Loop
.HS 00 FLAG: .DB 0
Z80Code.Size .EQ *-Z80Code.Start
*--------------------------------------
MSG.Init2 >CSTR "A2osX[Stage2]:Init\nInstalling KERNEL...\n - $BE00 Global Page...\n"
MSG.D1 >CSTR " - $D000 Bank1...\n"
MSG.D2 >CSTR " - $D000 Bank2...\n"
MSG.E0 >CSTR " - $E000...\n"
MSG.HZ >CSTR "Kernel SYS Timer Set For %d0 hz Machine.\n"
MSG.Init2.OK >CSTR "A2osX[Stage2]:Complete.\n"
*--------------------------------------
MSG.CPU >CSTR "Checking CPU..."
MSG.CPU.SPEED >CSTR "Detecting CPU Speed..."
MSG.CPUTYPEL .DA #MSG.6502
.DA #MSG.65C02
.DA #MSG.65R02
.DA #MSG.65816
MSG.CPUTYPEH .DA /MSG.6502
.DA /MSG.65C02
.DA /MSG.65R02
.DA /MSG.65816
MSG.6502 >CSTR "6502.\n"
MSG.65C02 >CSTR "65C02.\n"
MSG.65R02 >CSTR "65R02.\n"
MSG.65816 >CSTR "65816.\n"
MSG.CPU.SPEEDOK >CSTR "%d.%02d Mhz.\n"
MSG.Z80 >CSTR "Detecting Z80 CPU..."
MSG.Z80.OK >CSTR "Detected In Slot %d.\n"
MSG.Z80.KO >CSTR "Not Detected.\n"
MSG.KCREAD >CSTR "Reading Kernel Config File..."
MSG.KCREAD.OK >CSTR "OK\n"
MSG.KCREAD.KO >CSTR "\nError While Reading Kernel Config File, Using Default.\n"
A2OSXCONF >PSTR "A2osX.KCONFIG"
*--------------------------------------
MLIOPEN00 .DA #3
.DA A2OSXCONF
.DA $1000
.BS 1
*--------------------------------------
MLIREAD00 .DA #4
.BS 1
.DA A2osX.HZ
.DA 16
.BS 2
*--------------------------------------
MLICLOSE00 .DA #1
.BS 1
*--------------------------------------
MAN
SAVE /A2OSX.SRC/SYS/KERNEL.S.INIT2
LOAD /A2OSX.SRC/SYS/KERNEL.S
ASM

View File

@ -1,515 +0,0 @@
PR#3
PREFIX /A2OSX.BUILD
LOMEM $A00
INC 1
AUTO 6
*--------------------------------------
Kernel.Init3 sta SETALTZP
bit RRAMWRAMBNK1
bit RRAMWRAMBNK1
jsr MemMgrInit
jsr PS0Init
bcs *
>LDYAI MSG.Init3
>SYSCALL PrintFYA
>LDYAI MSG.DEV
>SYSCALL PrintFYA
jsr DevMgrInit
bcs *
>LDYAI MSG.IRQ
>SYSCALL PrintFYA
jsr IrqMgrInit
bcs *
>LDYAI MSG.EVT
>SYSCALL PrintFYA
jsr EvtMgrInit
bcs *
>LDYAI MSG.FLT
>SYSCALL PrintFYA
jsr FltMgrInit
bcs *
>LDYAI MSG.TSK
>SYSCALL PrintFYA
jsr TskMgrInit
bcs *
ldy #S.PS.hPREFIX
lda (pPs),y
>SYSCALL GetMemPtrA
>PUSHYA
>LDYAI MSG.Prefix
>SYSCALL PrintFYA
>PUSHWI STARTUP.CMDLINE
>LDYAI MSG.Startup
>SYSCALL PrintFYA
>LDYAI STARTUP.CMDLINE
>SYSCALL ExpandPStrYA
phx Save Expanded CMDLINE for discard
>SYSCALL CreateProcessYA
bcs .9
pla
>SYSCALL FreeMemA ...discard...
>LDYAI MSG.Init3.OK
>SYSCALL PrintFYA
>LDYAI TskMgr.Table
>STYA pPs
>DEBUGOA
bit RRAMWRAMBNK2
bit RRAMWRAMBNK2
jmp K.KernelRun
.9 >PUSHA
>LDYAI MSG.StartupErr
>SYSCALL PrintFYA
bra * No need to discard Expanded CMDLINE
*--------------------------------------
MemMgrInit >LDYAI MemMgr.MHiMem
>STYA MemMgr.HiMem
>STYA MemMgr.Free
>LDYAI MemMgr.MLoMem
>STYA MemMgr.LoMem
stz MemMgr.LastSlot Reserve Slot #0
sta SETWRITEAUX
>LDYAI MemMgr.XHiMem
>STYA MemMgr.HiMem
>STYA MemMgr.Free
>LDYAI MemMgr.XLoMem
>STYA MemMgr.LoMem
stz MemMgr.LastSlot Reserve Slot #0
sta CLRWRITEAUX
rts
*--------------------------------------
PS0Init ldx #S.DEV*2 NUL,SYS
.1 lda DevMgr.NUL-1,x
sta DevMgr.Table-1,x
dex
bne .1
lda #2
sta DevMgr.Count
>LDYAI TskMgr.Table Select Process 0 (Kernel)
>STYA pPs
ldy #S.PS-1
lda #0
.2 sta (pPs),y Blank PS0
dey
bpl .2
>LDYAI DEV.SYS
>SYSCALL MkNodYA
bcs .9
ldy #S.PS.hStdIn
sta (pPs),y
ldy #S.PS.hStdOut
sta (pPs),y
ldy #S.PS.hStdErr
sta (pPs),y
clc
.9 rts
*--------------------------------------
DevMgr.NUL cld
jmp (DevMgr.NUL.Code,x)
.DA #S.DEV.S.WRITE+S.DEV.S.READ+S.DEV.S.OPENED
.BS 6
>PSTR "NUL" NAME
.HS 00 NAME must Be 4 bytes long
*--------------------------------------
DevMgr.SYS cld
jmp (DevMgr.SYS.Code,x)
.DA #S.DEV.S.WRITE+S.DEV.S.READ
.BS 6
>PSTR "SYS" NAME
.HS 00 NAME must Be 4 bytes long
*--------------------------------------
* Setup AuxLC $FFFE->Kernel IRQ Handler
* if irq not handled, jmp (S.IrqMgrOldFFFE)
*--------------------------------------
SETMOUSE .EQ $12 Sets mouse mode
SERVEMOUSE .EQ $13 Services mouse interrupt
READMOUSE .EQ $14 Reads mouse position
*--------------------------------------
IrqMgrInit php
sei
>LDYA $FFFE
>STYA K.IrqMgrOldFFFE
>LDYAI K.IrqHandlerAuxLC
>STYA $FFFE
>LDYAI IrqHandler
>STYA K.MLI.PARAMS+2
>MLICALL MLIALLOCIRQ
bcs .9
lda K.MLI.PARAMS+1
sta ProDOS.INTNUM
stz ZPPtr1 Try finding a Mouse Card...
lda #$C1
sta ZPPtr1+1
.1 ldx #Mouse.SIG-Mouse.OFS-1
.2 ldy Mouse.OFS,x
lda (ZPPtr1),y
cmp Mouse.SIG,x
bne .3
dex
bpl .2
bra .4
.3 inc ZPPtr1+1 no match, try next slot....
lda ZPPtr1+1
cmp #$C8
bne .1
plp
clc
rts
.9 plp
sec
rts
.4 lda ZPPtr1+1
sta K.IrqMgrVBL.MSM+2
sta K.IrqMgrVBL.MRM+2
and #$0f
sta K.IrqMgrVBL.0n
asl
asl
asl
asl
sta K.IrqMgrVBL.n0
ldy #SERVEMOUSE
lda (ZPPtr1),y
sta K.IrqMgrVBL.MSM+1
ldy #READMOUSE
lda (ZPPtr1),y
sta K.IrqMgrVBL.MRM+1
bit RROMBNK2 Renable ROM to allow MOUSE II firmware works properly
ldy #SETMOUSE
lda (ZPPtr1),y
sta .7+1
lda #9 #MOUSEMODx.INTVBL+MOUSEMODx.ACTIVE
ldx ZPPtr1+1 DEVSLOTCn
stx .7+2
ldy K.IrqMgrVBL.n0
.7 jsr $ffff self Modified, CALL SETMOUSE
bcs *
bit RRAMWRAMBNK1 Back To LC Ram
bit RRAMWRAMBNK1
inc K.IrkMgr.VBL set=1 awaiting IrqMgr confirmation
plp
clc
rts
*--------------------------------------
Mouse.OFS .HS 05070B0CFB
Mouse.SIG .HS 38180120D6
*--------------------------------------
DevMgrInit stz ZPPtr1
lda #$C1
sta ZPPtr1+1
lda #1
sta DEV.HEADER+S.DEV.BUSID
.1 lda #1
sta DEV.HEADER+S.DEV.DEVID
ldx #SmartPort.SIG-SmartPort.OFS-1
.2 ldy SmartPort.OFS,x Check if there is a smartport firmware
lda (ZPPtr1),y
cmp SmartPort.SIG,x
bne .8 not a Disk Controller...
dex
bpl .2
ldy #$ff
lda (ZPPtr1),y
bne .3 $0, Disk II, 16sect
jsr DevMgrInit.DII
ldy #A2osX.SLOTS.DII
bra .7
.3 inc
beq .7 $ff, Disk II 13 Sect, ignore
ldy #7
lda (ZPPtr1),y
bne .4 $Cn07=00 : SmartPort
jsr DevMgrInit.SP
ldy #A2osX.SLOTS.SP
bra .7
.4 jsr DevMgrInit.BLK
ldy #A2osX.SLOTS.BLK
.7 lda ZPPtr1+1
and #$0f
tax
tya
sta A2osX.SLOTS,x
.8 inc DEV.HEADER+S.DEV.BUSID
inc ZPPtr1+1
lda ZPPtr1+1
cmp #$C8
bne .1
clc
rts
*--------------------------------------
DevMgrInit.DII >LDYAI A2osX.DIIDrv
>STYA DEV.HEADER+S.DEV.DRV.JMP
jsr DevMgrInit.AddDev
inc DEV.HEADER+S.DEV.DEVID
jsr DevMgrInit.AddDev
rts
*--------------------------------------
DevMgrInit.BLK ldy #$ff
lda (ZPPtr1),y
sta DEV.HEADER+S.DEV.ROM.JMP
lda ZPPtr1+1
sta DEV.HEADER+S.DEV.ROM.JMP+1
>LDYAI A2osX.BlkDrv
>STYA DEV.HEADER+S.DEV.DRV.JMP
jsr DevMgrInit.AddDev
inc DEV.HEADER+S.DEV.DEVID
jsr DevMgrInit.AddDev
rts
*--------------------------------------
DevMgrInit.SP ldy #$ff
lda (ZPPtr1),y
clc
adc #3 Compute smartport entry point
sta .1+1
sta .3+1
sta DEV.HEADER+S.DEV.ROM.JMP
lda ZPPtr1+1
sta .1+2
sta .3+2
sta DEV.HEADER+S.DEV.ROM.JMP+1
>LDYAI A2osX.PrtDrv
>STYA DEV.HEADER+S.DEV.DRV.JMP
.1 jsr $ffff Self Modified
.DA #0 Status
.DA SP.CTRL.STATUS
bcs .9
lda SP.CTRL.STATUS.DATA
beq .9 no device
.2 lda #1
sta SP.DEV.STATUS.DEVID
.3 jsr $ffff Self Modified
.DA #0 Status
.DA SP.DEV.STATUS
bcs .7
lda SP.DEV.STATUS.DATA+S.DEVSTAT.S
sta DEV.HEADER+S.DEV.S
jsr DevMgrInit.AddDev
.7 inc SP.DEV.STATUS.DEVID
inc DEV.HEADER+S.DEV.DEVID
dec SP.CTRL.STATUS.DATA
bne .3
.9 rts
*--------------------------------------
DevMgrInit.AddDev
lda DevMgr.Count
cmp #K.DEV.MAX
beq .9
inc DevMgr.Count
>SYSCALL GetDevByIDA
>STYA ZPPtr2
lda DEV.HEADER+S.DEV.BUSID
ora #$30
sta DEV.HEADER+S.DEV.NAME+2 SnDy
lda DEV.HEADER+S.DEV.DEVID
ora #$30
sta DEV.HEADER+S.DEV.NAME+4 SxDn
ldy #S.DEV-1
.1 lda DEV.HEADER,y
sta (ZPPtr2),y
dey
bpl .1
clc
rts
.9 lda #DEVMGR.ERROOH
sec
rts
*--------------------------------------
DEV.HEADER clc
jmp ($ffff,x)
.DA #S.DEV.S.BLOCK S
.BS 1 F
.BS 1 BUS.ID
.BS 1 DEV.ID
.BS 2 ROM.JMP
.BS 1
>PSTR "S1D1" 5 bytes
*--------------------------------------
SmartPort.OFS .HS 010305
SmartPort.SIG .HS 200003
*--------------------------------------
SP.CTRL.STATUS .DA #3
.DA #0
.DA SP.CTRL.STATUS.DATA
.DA #0
SP.CTRL.STATUS.DATA
.BS 8 DevCnt
SP.DEV.STATUS .DA #3
SP.DEV.STATUS.DEVID
.BS 1
.DA SP.DEV.STATUS.DATA
.DA #3 return DIB
SP.DEV.STATUS.DATA
.BS S.DEVSTAT
*--------------------------------------
EvtMgrInit lda #$A5
sta A2osX.TIMER16
lda #$9B
sta A2osX.TIMER16+1
lda /EvtMgr.Table
sta pEvent+1
clc
rts
*--------------------------------------
FltMgrInit stz FltMgr.Table
clc
rts
*--------------------------------------
TskMgrInit >LDYAI TskMgr.Table+S.PS Clear whole process table except PS0
>STYA .2+1
ldx #K.PS.MAX-1
.1 lda #0
ldy #S.PS-1
.2 sta $ffff,y Self Modified
dey
bpl .2
lda .2+1
clc
adc #S.PS
sta .2+1
bcc .3
inc .2+2
.3 dex
bne .1
>LDYAI K.ENV.SIZE get a buffer for ENV
>SYSCALL GetMem0YA make sure blank!!
bcs .9
txa
ldy #S.PS.hENV
sta (pPs),y
>LDYAI UsrBuf256
>STYA K.MLI.PARAMS+1
>MLICALL MLIGETPREFIX
bcs .9
>LDYAI UsrBuf256
>SYSCALL NewPStrYA
bcs .9
txa
ldy #S.PS.hPREFIX
sta (pPs),y
>PUSHWI UsrBuf256 push ENV value
>PUSHWI I.ENV.A2osX push ENV name
>SYSCALL SetEnv
bcs .9
>LDYAI I.ENV.PATH
>SYSCALL PutEnvYA
bcs .9
>LDYAI I.ENV.LIB
>SYSCALL PutEnvYA
bcs .9
>LDYAI I.ENV.DRV
>SYSCALL PutEnvYA
.9 rts
*--------------------------------------
DEV.SYS >PSTR "SYS"
I.ENV.A2osX >PSTR "A2OSX"
I.ENV.PATH >PSTR "PATH=${A2OSX}SBIN/;${A2OSX}BIN/"
I.ENV.LIB >PSTR "LIB=${A2OSX}LIB/"
I.ENV.DRV >PSTR "DRV=${A2OSX}DRV/"
STARTUP.CMDLINE >PSTR "${A2OSX}SBIN/SHELL ${A2OSX}A2osX.STARTUP"
*--------------------------------------
MSG.Init3 >CSTR "A2osX[Stage3]:Init\r\n"
MSG.DEV >CSTR "-Device Manager...\r\n"
MSG.IRQ >CSTR "-Interrupt Manager...\r\n"
MSG.EVT >CSTR "-Event Manager...\r\n"
MSG.FLT >CSTR "-Path Filter...\r\n"
MSG.TSK >CSTR "-Task Manager...\r\n"
MSG.Prefix >CSTR "Prefix:%S\r\n"
MSG.Startup >CSTR "Executing Kernel Startup Script...\r\nCmd:%S\r\n"
MSG.StartupErr >CSTR "Failed : [$%h]\r\n"
MSG.Init3.OK >CSTR "A2osX[Stage3]:Complete.\r\n"
*--------------------------------------
MAN
SAVE /A2OSX.SRC/SYS/KERNEL.S.INIT3
LOAD /A2OSX.SRC/SYS/KERNEL.S
ASM

View File

@ -112,9 +112,9 @@ K.SYSCALL.JMP .DA K.FileSearch $00
.DA 0 .DA 0
*-------------------------------------- *--------------------------------------
.DA K.FPutCAY $B0 .DA K.FPutCAY $B0
.DA K.PutCA .DA K.PutCharA
.DA K.FGetCA .DA K.GetCA
.DA K.GetC .DA K.GetChar
.DA K.FPutS .DA K.FPutS
.DA K.PutSYA .DA K.PutSYA
.DA K.FGetS .DA K.FGetS