Kernel 0.94

This commit is contained in:
Rémy GIBERT 2020-02-27 08:27:42 +01:00
parent 30bf312f81
commit 7fe7639385
5 changed files with 136 additions and 68 deletions

Binary file not shown.

0
BIN/SHUTDOWN.S.txt Normal file
View File

View File

@ -1,21 +1,23 @@
NEW NEW
AUTO 3,1 AUTO 3,1
#!/BIN/SH
ECHO *** A2osX INIT Script ***
# Main Screens # Main Screens
NOHUP GETTY /dev/tty1 ${ROOT}SBIN/LOGIN & ${ROOT}sbin/getty /dev/tty1 ${ROOT}sbin/login
NOHUP GETTY /dev/tty2 ${ROOT}SBIN/LOGIN & ${ROOT}sbin/getty /dev/tty2 ${ROOT}sbin/login
NOHUP GETTY /dev/tty3 ${ROOT}SBIN/LOGIN & ${ROOT}sbin/getty /dev/tty3 ${ROOT}sbin/login
NOHUP GETTY /dev/tty4 ${ROOT}SBIN/LOGIN & ${ROOT}sbin/getty /dev/tty4 ${ROOT}sbin/login
${ROOT}sbin/getty /dev/tty5 ${ROOT}sbin/login
${ROOT}sbin/getty /dev/tty6 ${ROOT}sbin/login
${ROOT}sbin/getty /dev/tty7 ${ROOT}sbin/login
${ROOT}sbin/getty /dev/tty8 ${ROOT}sbin/login
# Serial Login # Serial Login
#INSDRV SSC.DRV 9600,N,8,1,X # ${ROOT}sbin/insdrv ssc.drv 9600,N,8,1,X
#INSDRV SSC.I.DRV 9600,N,8,1,X # ${ROOT}sbin/insdrv ssc.i.drv 9600,N,8,1,X
#NOHUP GETTY /DEV/COM2 ${ROOT}SBIN/LOGIN & # ${ROOT}sbin/getty /dev/com2 ${ROOT}sbin/login
#INSDRV PIC.DRV # Extra devices
# ${ROOT}sbin/insdrv pic.drv
# GUI Section # GUI Section
#INSDRV MOUSE.DRV # ${ROOT}sbin/insdrv mouse.drv
#INSDRV DHGR.DRV # ${ROOT}sbin/insdrv dhgr.drv
#NOHUP GUI & # ${ROOT}bin/gui
ECHO *** End INIT ***
MAN MAN
TEXT ETC/INIT TEXT etc/init

View File

@ -7,12 +7,16 @@ NEW
*-------------------------------------- *--------------------------------------
.INB INC/MACROS.I .INB INC/MACROS.I
.INB INC/A2OSX.I .INB INC/A2OSX.I
.INB INC/MLI.I
*-------------------------------------- *--------------------------------------
* Zero Page Segment, up to 32 bytes * Zero Page Segment, up to 32 bytes
*-------------------------------------- *--------------------------------------
.DUMMY .DUMMY
.OR ZPBIN .OR ZPBIN
ZS.START ZS.START
BufPtr .BS 2
hBuf .BS 1
hFile .BS 1
ZS.END ZS.END
.ED .ED
*-------------------------------------- *--------------------------------------
@ -36,86 +40,137 @@ CS.START cld
.DA CS.RUN .DA CS.RUN
.DA CS.DOEVENT .DA CS.DOEVENT
.DA CS.QUIT .DA CS.QUIT
L.MSG.CTRLR .DA MSG.CTRLR L.MSG.CTRLR .DA MSG.CTRLR
L.MSG.ETCINIT .DA MSG.ETCINIT L.BINSH .DA BINSH
L.BINSHELL .DA BINSHELL L.ETCINIT .DA ETCINIT
L.ETCINIT .DA ETCINIT L.BINMEM .DA BINMEM
L.MSG.RUNNING .DA MSG.RUNNING L.BINPS .DA BINPS
L.BINSHUTDOWN .DA BINSHUTDOWN
.DA 0 .DA 0
*-------------------------------------- *--------------------------------------
* Called once at process creation
* Put code for loading LIB here
*--------------------------------------
CS.INIT clc CS.INIT clc
rts rts
*-------------------------------------- *--------------------------------------
* Called until exit with CS
* if RUN exits with CC, RN entered again
*--------------------------------------
CS.RUN ldy #S.PS.PID CS.RUN ldy #S.PS.PID
lda (pPS),y lda (pPS),y
cmp #1 cmp #1
bne .9 bne .9
ldy #S.PS.hStdIn
lda (pPS),y
>SYSCALL feof
bcs .99
tay
bne .1
>SYSCALL getchar >SYSCALL getchar
bcs .1 bcs .99
cmp #$12 CTRL-R for Root mode cmp #18 CTRL-R for Root mode
bne .1 bne .1
>LDYA L.MSG.CTRLR >LDYA L.MSG.CTRLR
>SYSCALL puts >SYSCALL puts
>PUSHW L.BINSHELL
>PUSHBI S.PS.F.HOLD >LDYA L.BINSH
>SYSCALL ExecL jsr CS.RUN.EXEC.YA
>SLEEP
.1 jsr CS.RUN.ETCINIT
.1 >LDYA L.MSG.ETCINIT bcs .99
>SYSCALL puts
>PUSHW L.ETCINIT .2 >SYSCALL getchar
>PUSHBI S.PS.F.HOLD bcs .99
>SYSCALL ExecL
>SLEEP cmp #C.CR Ctrl.M
>LDYA L.MSG.RUNNING bne .3
>SYSCALL puts
>LDYA L.BINMEM
ldy #S.PS.F.HOLD jsr CS.RUN.EXEC.YA
ora (pPS),y bra .2
sta (pPS),y
>SLEEP .3 cmp #16 Ctrl.P
bne .4
lda #0 >LDYA L.BINPS
jsr CS.RUN.EXEC.YA
bra .2
.4 cmp #4 Ctrl.D
bne .2
>LDYA L.BINSHUTDOWN
jsr CS.RUN.EXEC.YA
bcs .2
sec sec
rts rts
.9 lda #E.SYN .9 lda #E.SYN
sec sec
.99 rts
*--------------------------------------
CS.RUN.ETCINIT >LDYAI 256
>SYSCALL getmem
>STYA BufPtr
stx hBuf
>PUSHW L.ETCINIT
>PUSHBI O.RDONLY+O.TEXT
>PUSHBI S.FI.T.TXT
>PUSHWZ
>SYSCALL fopen
bcs .90
sta hFile
.1 >PUSHWI 256
>PUSHW BufPtr
lda hFile
>SYSCALL fgets
bcs .80
lda (BufPtr)
cmp #'#'
beq .1
>LDYA BufPtr
>SYSCALL puts
>LDYA BufPtr
jsr CS.RUN.EXEC.YA
bra .1
.90 pha
jsr .81
pla
sec
rts
.80 lda hFile
>SYSCALL fclose
.81 lda hBuf
>SYSCALL freemem
rts rts
*-------------------------------------- *--------------------------------------
* Called if option S.PS.F.EVENT enabled in Header CS.RUN.EXEC.YA >PUSHYA
* Timer Event : every 10th seconds >PUSHBI S.PS.F.HOLD+S.PS.F.SLEEP+S.PS.F.NOHUP
>SYSCALL ExecL
rts
*-------------------------------------- *--------------------------------------
CS.DOEVENT sec CS.DOEVENT sec
rts rts
*-------------------------------------- *--------------------------------------
* Called once, when RUN exited with CS
* Put code for unloading LIB here
*--------------------------------------
CS.QUIT clc CS.QUIT clc
rts rts
*-------------------------------------- *--------------------------------------
CS.END CS.END
*-------------------------------------- *--------------------------------------
* Initialized DATA
*--------------------------------------
MSG.CTRLR .AZ "INITD:Ctrl-R Pressed, entering ROOT mode..." MSG.CTRLR .AZ "INITD:Ctrl-R Pressed, entering ROOT mode..."
MSG.ETCINIT .AS "INITD:Executing ETC/INIT Script:" BINSH .AZ "${ROOT}bin/sh"
BINSHELL .AZ "${ROOT}bin/sh"
ETCINIT .AZ "${ROOT}etc/init" ETCINIT .AZ "${ROOT}etc/init"
MSG.RUNNING .AZ "INITD:Running..." BINMEM .AZ "${ROOT}bin/mem"
MSH.SHUTDOWN .AZ "INITD:Shutting down..." BINPS .AZ "${ROOT}bin/ps"
*-------------------------------------- BINSHUTDOWN .AZ "${ROOT}bin/shutdown"
* Per Process DATA segement (0 filled before INIT)
*-------------------------------------- *--------------------------------------
.DUMMY .DUMMY
.OR 0 .OR 0

View File

@ -1,6 +1,8 @@
NEW NEW
AUTO 3,1 AUTO 3,1
*-------------------------------------- *--------------------------------------
INITD .EQ 1
*--------------------------------------
Kernel.Init2 sei Kernel.Init2 sei
ldx #$FF ldx #$FF
txs txs
@ -151,6 +153,7 @@ Kernel.Init3C >PUSHWI MSG.Init3
jsr PwdMgrInit jsr PwdMgrInit
.DO INITD=0
lda KBD lda KBD
bpl .7 bpl .7
sta KBDSTROBE sta KBDSTROBE
@ -160,17 +163,21 @@ Kernel.Init3C >PUSHWI MSG.Init3
>PUSHWI MSG.CTRLR >PUSHWI MSG.CTRLR
>PUSHBI 0 >PUSHBI 0
>SYSCALL2 printf >SYSCALL2 printf
>PUSHWI CTRLR.SHELL >PUSHWI BINSH
bra .8 bra .8
.7 >PUSHWI MSG.EtcInit .7 >PUSHWI MSG.EtcInit
>PUSHWI ETCINIT.CMDLINE >PUSHWI ETCINIT
>PUSHBI 2 >PUSHBI 2
>SYSCALL2 printf >SYSCALL2 printf
>PUSHWI ETCINIT.CMDLINE >PUSHWI ETCINIT
.8 >PUSHBI 0 PS Flags .8 .ELSE
>PUSHWI SBININITD
.FIN
>PUSHBI 0 PS Flags
>SYSCALL2 ExecL >SYSCALL2 ExecL
bcs Kernel.Init3.Err bcs Kernel.Init3.Err
@ -1187,8 +1194,12 @@ I.ENV.ROOT .AZ "ROOT"
I.ENV.PATH .AZ "PATH=${BOOT}sbin/:${BOOT}bin/" I.ENV.PATH .AZ "PATH=${BOOT}sbin/:${BOOT}bin/"
I.ENV.LIB .AZ "LIB=${BOOT}lib/" I.ENV.LIB .AZ "LIB=${BOOT}lib/"
I.ENV.DRV .AZ "DRV=${BOOT}drv/" I.ENV.DRV .AZ "DRV=${BOOT}drv/"
CTRLR.SHELL .AZ "${BOOT}bin/sh" .DO INITD=0
ETCINIT.CMDLINE .AZ "${ROOT}etc/init" BINSH .AZ "${BOOT}bin/sh"
ETCINIT .AZ "${ROOT}etc/init"
.ELSE
SBININITD .AZ "${ROOT}sbin/initd"
.FIN
ETCPASSWD .AZ "${ROOT}etc/passwd" ETCPASSWD .AZ "${ROOT}etc/passwd"
*-------------------------------------- *--------------------------------------
PwdMgr.ROOT .DA #S.SESSION.P.ROOT PwdMgr.ROOT .DA #S.SESSION.P.ROOT