From 7fe76393857a0387bdb08eb7f05abe49c9ba0b1b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9my=20GIBERT?= Date: Thu, 27 Feb 2020 08:27:42 +0100 Subject: [PATCH] Kernel 0.94 --- .Floppies/A2OSX.BUILD.po | Bin 33553920 -> 33553920 bytes BIN/SHUTDOWN.S.txt | 0 ETC/INIT.txt | 32 +++++---- SBIN/INITD.S.txt | 149 +++++++++++++++++++++++++++------------ SYS/KERNEL.S.INIT.txt | 23 ++++-- 5 files changed, 136 insertions(+), 68 deletions(-) create mode 100644 BIN/SHUTDOWN.S.txt diff --git a/.Floppies/A2OSX.BUILD.po b/.Floppies/A2OSX.BUILD.po index b7995cbbc6d12fa5b112837bf2718811fa9e4f7b..de54bb1277f070af9aeed4ed043995511b86bfe4 100644 GIT binary patch delta 22201 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 WzW~1izX87ke*k|9_lswR*Zv>p^9EG_ delta 21448 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 diff --git a/BIN/SHUTDOWN.S.txt b/BIN/SHUTDOWN.S.txt new file mode 100644 index 00000000..e69de29b diff --git a/ETC/INIT.txt b/ETC/INIT.txt index d808f164..0bbee5ba 100644 --- a/ETC/INIT.txt +++ b/ETC/INIT.txt @@ -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 diff --git a/SBIN/INITD.S.txt b/SBIN/INITD.S.txt index 7e66869c..8416e479 100644 --- a/SBIN/INITD.S.txt +++ b/SBIN/INITD.S.txt @@ -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 diff --git a/SYS/KERNEL.S.INIT.txt b/SYS/KERNEL.S.INIT.txt index 4594fc4a..72aa27a6 100644 --- a/SYS/KERNEL.S.INIT.txt +++ b/SYS/KERNEL.S.INIT.txt @@ -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