NEW AUTO 3,1 .LIST OFF .OP 65C02 .OR $2000 .TF bin/shutdown *-------------------------------------- .INB inc/macros.i .INB inc/a2osx.i .INB inc/kernel.i *-------------------------------------- .DUMMY .OR ZPBIN ZS.START ZPPtr1 .BS 2 Count .BS 1 Index .BS 1 ZS.END .ED *-------------------------------------- * File Header (16 Bytes) *-------------------------------------- CS.START cld jmp (.1,x) .DA #$61 6502,Level 1 (65c02) .DA #1 BIN Layout Version 1 .DA #0 S.PS.F.EVENT .DA #0 .DA CS.END-CS.START Code Size (without Constants) .DA DS.END-DS.START Data SegmentSize .DA #32 Stack Size .DA #ZS.END-ZS.START Zero Page Size .DA 0 *-------------------------------------- * Relocation Table *-------------------------------------- .1 .DA CS.INIT .DA CS.RUN .DA CS.DOEVENT .DA CS.QUIT L.MSGPS .DA MSGPS L.MSGDEV .DA MSGDEV .DA 0 *-------------------------------------- CS.INIT clc rts *-------------------------------------- CS.RUN jsr CS.RUN.PS jsr CS.RUN.DEV >PUSHBI 2 >PUSHBI 1 INITD >SYSCALL kill lda #0 sec rts *-------------------------------------- CS.RUN.PS .10 stz Count ldx #0 stx Index .1 lda PS.Table.hPS,x beq .7 >SYSCALL GetMemPtr >STYA ZPPtr1 lda (ZPPtr1) bmi .6 HOLD ldy #S.PS.S cmp #S.PS.S.QUIT beq .6 ldy #S.PS.PID lda (ZPPtr1),y beq .7 don't kill PS0 cmp #1 beq .7 don't kill INITD cmp (pPS),y don't kill myself beq .7 >PUSHW L.MSGPS ldy #S.PS.PID lda (ZPPtr1),y >PUSHA ldy #S.PS.hARGV lda (ZPPtr1),y >SYSCALL GetMemPtr >PUSHYA >PUSHBI 3 >SYSCALL printf >PUSHBI 2 ldy #S.PS.PID lda (ZPPtr1),y >SYSCALL kill .6 inc Count .7 >SLEEP inc Index ldx Index cpx #K.PS.MAX bne .1 lda Count bne .10 rts *-------------------------------------- CS.RUN.DEV ldx #1 stx Index .1 lda Dev.Table-1,x sta ZPPtr1 lda Dev.Table,x sta ZPPtr1+1 beq .7 >PUSHW L.MSGDEV >PUSHB Index lda ZPPtr1 clc adc #S.FD.DEV tay lda ZPPtr1+1 adc /S.FD.DEV >PUSHYA >PUSHBI 3 >SYSCALL PrintF .7 inc Index inc index ldx Index cpx #K.DEV.MAX*2+1 bne .1 rts *-------------------------------------- CS.DOEVENT sec rts *-------------------------------------- CS.QUIT clc rts *-------------------------------------- CS.END MSGPS .AZ "SHUTDOWN:Killing process %3d, %s\r\n" MSGDEV .AZ "SHUTDOWN:Closing device %3d, %s\r\n" *-------------------------------------- .DUMMY .OR 0 DS.START DS.END .ED *-------------------------------------- MAN SAVE usr/src/bin/shutdown.s ASM