diff --git a/.Floppies/A2OSX.BUILD.po b/.Floppies/A2OSX.BUILD.po index b7995cbb..de54bb12 100644 Binary files a/.Floppies/A2OSX.BUILD.po and b/.Floppies/A2OSX.BUILD.po differ 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