Kernel 0.93

This commit is contained in:
Rémy GIBERT 2019-04-10 16:51:47 +01:00
parent ed74949a4a
commit 295dcbce1a
9 changed files with 261 additions and 57 deletions

View File

@ -16,7 +16,7 @@ ZS.START
* MyPtr .BS 2 * MyPtr .BS 2
ZS.END .ED ZS.END .ED
*--------------------------------------- *---------------------------------------
* File Header (16 Bytes) * File Header (16 Bytes)
*--------------------------------------- *---------------------------------------
CS.START cld CS.START cld
jmp (.1,x) jmp (.1,x)
@ -84,7 +84,7 @@ CS.END
* Put your constant here : * Put your constant here :
* MSG.TEST .AZ "Test Message" * MSG.TEST .AZ "Test Message"
*--------------------------------------- *---------------------------------------
* Per Process DATA segement (0 filled before INIT) * Per Process DATA segment (0 filled before INIT)
*--------------------------------------- *---------------------------------------
.DUMMY .DUMMY
.OR 0 .OR 0

View File

@ -97,23 +97,23 @@ A2osX.QC.KLoad >LDYAI MSG.KLOAD
jsr MLI jsr MLI
.DA #MLIOPEN .DA #MLIOPEN
.DA MLIOPEN00 .DA MLIOPENK
bcs .9 bcs .9
lda MLIOPEN00+5 lda MLIOPENK+5
sta MLIREAD00+1 sta MLIREADK+1
sta MLICLOSE00+1 sta MLICLOSEK+1
jsr MLI jsr MLI
.DA #MLIREAD .DA #MLIREAD
.DA MLIREAD00 .DA MLIREADK
php php
pha pha
jsr MLI jsr MLI
.DA #MLICLOSE .DA #MLICLOSE
.DA MLICLOSE00 .DA MLICLOSEK
pla pla
plp plp
@ -148,18 +148,18 @@ A2osX.QC.PrintYA
MLISETPREFIX00 .DA #1 MLISETPREFIX00 .DA #1
.DA A2osX.QC.Prefix .DA A2osX.QC.Prefix
*-------------------------------------- *--------------------------------------
MLIOPEN00 .DA #3 MLIOPENK .DA #3
.DA A2osX.QC.Prefix .DA A2osX.QC.Prefix
.DA $C00 .DA $C00
.BS 1 .BS 1
*-------------------------------------- *--------------------------------------
MLIREAD00 .DA #4 MLIREADK .DA #4
.BS 1 .BS 1
.DA $2000 .DA $2000
.DA $8000 .DA $8000
.BS 2 .BS 2
*-------------------------------------- *--------------------------------------
MLICLOSE00 .DA #1 MLICLOSEK .DA #1
.BS 1 .BS 1
*-------------------------------------- *--------------------------------------
SYSKERNEL >PSTR "SYS/KERNEL" SYSKERNEL >PSTR "SYS/KERNEL"

View File

@ -1,6 +1,5 @@
NEW NEW
PREFIX AUTO 4,1
AUTO 4,1
.LIST OFF .LIST OFF
.OP 65C02 .OP 65C02
.OR $2000 .OR $2000
@ -12,20 +11,25 @@ AUTO 4,1
.INB INC/MONITOR.I .INB INC/MONITOR.I
.INB INC/MLI.I .INB INC/MLI.I
.INB INC/MLI.E.I .INB INC/MLI.E.I
.INB INC/ZP.I
.INB INC/GFX.I
*-------------------------------------- *--------------------------------------
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.LOGOLOAD .EQ $2000
A2osX.KMLOAD .EQ $2000 A2osX.KMLOAD .EQ $2000
A2osX.KMMAXLEN .EQ $6000 A2osX.KMMAXLEN .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
KM.Filename .EQ $8A80 MLI.MAXPATH LOGO.Filename .EQ $8A80 MLI.MAXPATH
KM.Filename .EQ $8B00 MLI.MAXPATH
*-------------------------------------- *--------------------------------------
* Kernel Stage 0 * Kernel Stage 0
*-------------------------------------- *--------------------------------------
SYSTEM.START .EQ *
.PH $1000 .PH $1000
A2osX.Init0 >LDYAI $2000 A2osX.Init0 >LDYAI $2000
@ -67,10 +71,10 @@ A2osX.Init1 ldx #$FF init 6502 stack to highest
>LDYAI MSG.SYSMEM.KO >LDYAI MSG.SYSMEM.KO
jsr PrintFYA jsr PrintFYA
bra * bra *
*--------------------------------------
.1 lda #$8C Reset 80 col screen ($0C:HOME) .1 jsr A2osX.Prefix
jsr $C300 jsr A2osX.Screen80 Reset 80 col screen ($0C:HOME)
>LDYAI MSG.INIT0 >LDYAI MSG.INIT0
jsr PrintFYA jsr PrintFYA
@ -104,26 +108,6 @@ A2osX.CloseAll stz LEVEL Back To FILE LEVEL 0
.DA MLICLOSE01 .DA MLICLOSE01
bcs * bcs *
*-------------------------------------- *--------------------------------------
A2osX.Prefix >LDYAI MSG.BOOTPREFIX
jsr PrintFYA
jsr MLI
.DA #MLIGETPREFIX
.DA MLIGETPREFIX01
bcs *
ldx Boot.Prefix
stx A2osX.QC.B.Start+4
ldy #1
.1 lda Boot.Prefix,y
sta A2osX.QC.B.Start+4,y
ora #$80
jsr COUT
iny
dex
bne .1
jsr CROUT
*--------------------------------------
A2osX.RamDrv >LDYAI MSG.RAMDRV A2osX.RamDrv >LDYAI MSG.RAMDRV
jsr PrintFYA jsr PrintFYA
@ -167,12 +151,179 @@ A2osX.EnumKM >LDYAI MSG.KMENUM
*-------------------------------------- *--------------------------------------
A2osX.MLIQuit >LDYAI MSG.INIT0OK A2osX.MLIQuit >LDYAI MSG.INIT0OK
jsr PrintFYA jsr PrintFYA
>DEBUG
>DEBUGOA >DEBUGOA
jsr MLI jsr MLI
.DA #MLIQUIT .DA #MLIQUIT
.DA MLIQUIT01 .DA MLIQUIT01
bra * bra *
*-------------------------------------- *--------------------------------------
A2osX.Prefix >LDYAI MSG.BOOTPREFIX
jsr PrintFYA
jsr MLI
.DA #MLIGETPREFIX
.DA MLIGETPREFIX01
bcs *
ldx Boot.Prefix
stx A2osX.QC.B.Start+4
ldy #1
.1 lda Boot.Prefix,y
sta A2osX.QC.B.Start+4,y
iny
dex
bne .1
rts
*--------------------------------------
A2osX.Screen80 lda #$8C
jsr $C300
ldx Boot.Prefix
.1 lda Boot.Prefix,x
sta LOGO.Filename,x
dex
bpl .1
ldx Boot.Prefix
ldy #0
.2 inx
iny
lda A2osX.LOGO,y
sta LOGO.Filename,x
cpy A2osX.LOGO
bne .2
jsr MLI
.DA #MLIOPEN
.DA MLIOPEN00
bcs .99
lda MLIOPEN00+5
sta MLIREAD00+1
sta MLICLOSE00+1
jsr MLI
.DA #MLIREAD
.DA MLIREAD00
bcs .98
jsr .98
bra A2osX.ScreenDLGR
.98 jsr MLI
.DA #MLICLOSE
.DA MLICLOSE00
.99 rts
*--------------------------------------
A2osX.ScreenDLGR
lda #20
sta WNDTOP
sta CV
jsr VTAB
sta CLRHIRES
sta SETMIXED
sta CLRTEXT
sta SET80STORE
sta SETDHIRES
lda #A2osX.LOGOLOAD+S.BM
sta TmpPtr1
lda /A2osX.LOGOLOAD+S.BM
sta TmpPtr1+1
ldx #0
.1 lda SCR.BASEL,x
sta TmpPtr2
lda SCR.BASEH,x
sta TmpPtr2+1
ldy #0
.2 lda (TmpPtr1),y
pha
and #$f
phy
tay
lda PALETTE.AUX,y
ply
sta SETPAGE2
sta (TmpPtr2),y
pla
lsr
lsr
lsr
lsr
sta CLRPAGE2
sta (TmpPtr2),y
iny
cpy #40
bne .2
lda TmpPtr1
clc
adc #80
sta TmpPtr1
bcc .3
inc TmpPtr1+1
.3 ldy #0
.4 lda (TmpPtr1),y
pha
and #$f
phy
tay
lda PALETTE.AUX,y
ply
asl
asl
asl
asl
sta SETPAGE2
ora (TmpPtr2),y
sta (TmpPtr2),y
pla
and #$f0
sta CLRPAGE2
ora (TmpPtr2),y
sta (TmpPtr2),y
iny
cpy #40
bne .2
lda TmpPtr1
clc
adc #80
sta TmpPtr1
bcc .3
inc TmpPtr1+1
lda TmpPtr1
clc
adc #80
sta TmpPtr1
bcc .7
inc TmpPtr1+1
.7 inx
cpx #20
bne .1
rts
*--------------------------------------
DisableRamDRV php DisableRamDRV php
sei sei
lda DEVPTRS3D2 lda DEVPTRS3D2
@ -377,7 +528,7 @@ LoadKM ldx Boot.Prefix
.DA MLICLOSE02 .DA MLICLOSE02
.99 rts .99 rts
*-------------------------------------- *--------------------------------------
.INB USR/SRC/X.PRINTF.S .INB USR/SRC/SHARED/X.PRINTF.S
*-------------------------------------- *--------------------------------------
MSG.INIT0 .AZ "A2osX[Stage0]:Init\n" MSG.INIT0 .AZ "A2osX[Stage0]:Init\n"
MSG.SYSMEM .AZ "Checking System Memory..." MSG.SYSMEM .AZ "Checking System Memory..."
@ -405,6 +556,19 @@ MLIONLINE01 .DA #2
.DA #0 .DA #0
.DA MLIONLINE01BUF .DA MLIONLINE01BUF
MLIONLINE01BUF .BS 256 MLIONLINE01BUF .BS 256
*--------------------------------------
MLIOPEN00 .DA #3 For DIR listing
.DA LOGO.Filename
.DA A2osX.OpenBuff1
.BS 1
MLIREAD00 .DA #4
.BS 1
.DA A2osX.LOGOLOAD
.DA 2048
.BS 2
MLICLOSE00 .DA #1
.BS 1
*--------------------------------------
MLIOPEN01 .DA #3 For DIR listing MLIOPEN01 .DA #3 For DIR listing
.DA Boot.Prefix .DA Boot.Prefix
.DA A2osX.OpenBuff1 .DA A2osX.OpenBuff1
@ -416,6 +580,7 @@ MLIREAD01 .DA #4
.BS 2 .BS 2
MLICLOSE01 .DA #1 MLICLOSE01 .DA #1
.BS 1 .BS 1
*--------------------------------------
MLIOPEN02 .DA #3 MLIOPEN02 .DA #3
.DA KM.Filename .DA KM.Filename
.DA A2osX.OpenBuff2 .DA A2osX.OpenBuff2
@ -427,19 +592,29 @@ MLIREAD02 .DA #4
.BS 2 .BS 2
MLICLOSE02 .DA #1 MLICLOSE02 .DA #1
.BS 1 .BS 1
*--------------------------------------
MLIQUIT01 .DA #4 MLIQUIT01 .DA #4
.DA #0 .DA #0
.DA 0 .DA 0
.DA #0 .DA #0
.DA 0 .DA 0
*-------------------------------------- *--------------------------------------
A2osX.LOGO >PSTR "A2OSX.LOGO"
SYS >PSTR "SYS/" SYS >PSTR "SYS/"
KM.PREFIX >PSTR "KM." KM.PREFIX >PSTR "KM."
*--------------------------------------
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
*--------------------------------------
PALETTE.AUX .HS 00080109020A030B040C050D060E070F
*-------------------------------------- *--------------------------------------
.EP .EP
*-------------------------------------- *--------------------------------------
A2osX.QC.B.Start A2osX.QC.B.Start
.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

View File

@ -298,6 +298,7 @@ CS.RUN.24 lda #S.BM.F.BBP4
stx ZPOutputRowBytes+1 stx ZPOutputRowBytes+1
jsr CS.RUN.GetOutputBuf jsr CS.RUN.GetOutputBuf
bcs CS.RUN.RTS
jsr DEBUG.ClrScr jsr DEBUG.ClrScr
@ -350,8 +351,24 @@ CS.RUN.24.LOOP inc ZPLineCount
.5 jsr CS.RUN.GetNearestColor .5 jsr CS.RUN.GetNearestColor
pha
jsr DEBUG.PLOT jsr DEBUG.PLOT
lda ZPCntX
lsr
tay
pla
bcc .6
sta (ZPOutputBuf),y
bra .2
.6 asl
asl
asl
asl
ora (ZPOutputBuf),y
sta (ZPOutputBuf),y
bra .2 bra .2
.8 jsr CS.RUN.WRITE .8 jsr CS.RUN.WRITE
@ -572,7 +589,14 @@ CS.RUN.GetOutputBuf
sta ZPPtr1+1 sta ZPPtr1+1
bra .1 bra .1
.8 lda ZPPtr1 .8 >LDYA.G ZPPtr1
>SYSCALL Getmem
bcs .9
>STYA ZPOutputBuf
txa
>STA.G hOutputBuf
lda ZPPtr1
>STA.G OutputDataLen >STA.G OutputDataLen
clc clc
adc ZPOutputBuf adc ZPOutputBuf
@ -584,7 +608,7 @@ CS.RUN.GetOutputBuf
sta ZPOutputBuf+1 sta ZPOutputBuf+1
clc clc
rts .9 rts
*-------------------------------------- *--------------------------------------
CS.RUN.WRITE >PUSHWI S.BM CS.RUN.WRITE >PUSHWI S.BM
>PUSHEA.G PIX.Header >PUSHEA.G PIX.Header

View File

@ -4,6 +4,9 @@ NEW
.OP 65C02 .OP 65C02
.OR $2000 .OR $2000
.TF BIN/USERADD .TF BIN/USERADD
*--------------------------------------
USER.MAX .EQ 16
PASS.MAX .EQ 64
*-------------------------------------- *--------------------------------------
.INB INC/MACROS.I .INB INC/MACROS.I
.INB INC/A2OSX.I .INB INC/A2OSX.I
@ -33,7 +36,7 @@ CS.START cld
.DA #0 .DA #0
.DA CS.END-CS.START Code Size (without Constants) .DA CS.END-CS.START Code Size (without Constants)
.DA DS.END-DS.START Data SegmentSize .DA DS.END-DS.START Data SegmentSize
.DA #16 Stack Size .DA #64 Stack Size
.DA #ZS.END-ZS.START Zero Page Size .DA #ZS.END-ZS.START Zero Page Size
.DA 0 .DA 0
*-------------------------------------- *--------------------------------------
@ -105,7 +108,7 @@ CS.RUN.ROOT sec
jsr CS.RUN.GetStr jsr CS.RUN.GetStr
bcs .9 bcs .9
>PUSHEA.G PW+S.PW.PASSWD >PUSHEA.G PW+S.PW.PASSWD
>PUSHW ZPStrPtr >PUSHW ZPStrPtr
>LIBCALL hLIBCRYPT,LIBCRYPT.MD5 >LIBCALL hLIBCRYPT,LIBCRYPT.MD5
@ -141,7 +144,7 @@ CS.RUN.GetStr stz ZPStrLen
>SYSCALL putchar >SYSCALL putchar
bra .1 bra .1
.2 cmp #3 .2 cmp #3 Ctrl-C
beq .9 beq .9
cmp #C.CR cmp #C.CR
@ -162,7 +165,12 @@ CS.RUN.GetStr stz ZPStrLen
>SYSCALL printf >SYSCALL printf
bra .1 bra .1
.8 clc .8 ldy ZPStrLen
lda #0
sta (ZPStrPtr),y
clc
.9 rts .9 rts
*-------------------------------------- *--------------------------------------
* Called if option S.PS.F.EVENT enabled in Header * Called if option S.PS.F.EVENT enabled in Header

View File

@ -1,6 +1,5 @@
NEW NEW
PREFIX AUTO 3,1
AUTO 4,1
.LIST OFF .LIST OFF
*-------------------------------------- *--------------------------------------
* GFX Devices * GFX Devices

View File

@ -1,6 +1,5 @@
NEW NEW
PREFIX AUTO 3,1
AUTO 4,1
*-------------------------------------- *--------------------------------------
ZPCmdPtr .EQ ZPDRV ZPCmdPtr .EQ ZPDRV
ZPDstBMPtr .EQ ZPDRV+2 ZPDstBMPtr .EQ ZPDRV+2
@ -831,6 +830,6 @@ SHIFT8.L7 .DA #%00000000,#%10000000,#%00000001,#%10000001,#%00000010,#%10000010
.DA #%00111100,#%10111100,#%00111101,#%10111101,#%00111110,#%10111110,#%00111111,#%10111111 .DA #%00111100,#%10111100,#%00111101,#%10111101,#%00111110,#%10111110,#%00111111,#%10111111
*-------------------------------------- *--------------------------------------
MAN MAN
SAVE USR/SRC/SYS/KERNEL.S.OSD SAVE USR/SRC/SYS/KERNEL.S.OSDX
LOAD USR/SRC/SYS/KERNEL.S LOAD USR/SRC/SYS/KERNEL.S
ASM ASM

View File

@ -1,6 +1,5 @@
NEW NEW
PREFIX AUTO 3,1
AUTO 4,1
*-------------------------------------- *--------------------------------------
X.SLIST jmp (.1-SYS.SListGetData,x) X.SLIST jmp (.1-SYS.SListGetData,x)
.1 .DA SLIST.GetData .1 .DA SLIST.GetData
@ -477,6 +476,6 @@ SLIST.BytePtr .BS 1
SLIST.BlockPtr .BS 1 SLIST.BlockPtr .BS 1
*-------------------------------------- *--------------------------------------
MAN MAN
SAVE USR/SRC/SYS/KERNEL.S.SLIST SAVE USR/SRC/SYS/KERNEL.S.SLISTX
LOAD USR/SRC/SYS/KERNEL.S LOAD USR/SRC/SYS/KERNEL.S
ASM ASM

View File

@ -19,7 +19,7 @@ AUTO 4,1
.INB USR/SRC/SYS/KERNEL.S.DEF .INB USR/SRC/SYS/KERNEL.S.DEF
.INB USR/SRC/SYS/KERNEL.S.INIT .INB USR/SRC/SYS/KERNEL.S.INIT
.INB USR/SRC/X.PRINTF.S .INB USR/SRC/SHARED/X.PRINTF.S
A2osX.MAIN .PH A2osX.EndTables A2osX.MAIN .PH A2osX.EndTables
.INB USR/SRC/SYS/KERNEL.S.CORE .INB USR/SRC/SYS/KERNEL.S.CORE
@ -30,8 +30,8 @@ Mem.MLoMem .EQ *
.LIST OFF .LIST OFF
.EP .EP
A2osX.AUX .PH $1000 A2osX.AUX .PH $1000
.INB USR/SRC/SYS/KERNEL.S.OSD .INB USR/SRC/SYS/KERNEL.S.OSDX
.INB USR/SRC/SYS/KERNEL.S.SLIST .INB USR/SRC/SYS/KERNEL.S.SLISTX
.INB USR/SRC/SYS/KERNEL.S.PWDX .INB USR/SRC/SYS/KERNEL.S.PWDX
.LIST ON .LIST ON
Mem.XLoMem .EQ * Mem.XLoMem .EQ *