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
AUTO 3,1
#!/BIN/SH
ECHO *** A2osX INIT Script ***
# Main Screens
NOHUP GETTY /dev/tty1 ${ROOT}SBIN/LOGIN &
NOHUP GETTY /dev/tty2 ${ROOT}SBIN/LOGIN &
NOHUP GETTY /dev/tty3 ${ROOT}SBIN/LOGIN &
NOHUP GETTY /dev/tty4 ${ROOT}SBIN/LOGIN &
${ROOT}sbin/getty /dev/tty1 ${ROOT}sbin/login
${ROOT}sbin/getty /dev/tty2 ${ROOT}sbin/login
${ROOT}sbin/getty /dev/tty3 ${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
#INSDRV SSC.DRV 9600,N,8,1,X
#INSDRV SSC.I.DRV 9600,N,8,1,X
#NOHUP GETTY /DEV/COM2 ${ROOT}SBIN/LOGIN &
#INSDRV PIC.DRV
# ${ROOT}sbin/insdrv ssc.drv 9600,N,8,1,X
# ${ROOT}sbin/insdrv ssc.i.drv 9600,N,8,1,X
# ${ROOT}sbin/getty /dev/com2 ${ROOT}sbin/login
# Extra devices
# ${ROOT}sbin/insdrv pic.drv
# GUI Section
#INSDRV MOUSE.DRV
#INSDRV DHGR.DRV
#NOHUP GUI &
ECHO *** End INIT ***
# ${ROOT}sbin/insdrv mouse.drv
# ${ROOT}sbin/insdrv dhgr.drv
# ${ROOT}bin/gui
MAN
TEXT ETC/INIT
TEXT etc/init

View File

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

View File

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