home *** CD-ROM | disk | FTP | other *** search
Text File | 1991-04-18 | 36.5 KB | 1,936 lines |
- ****************************
- * *
- * MUSYS: *
- * A MULTIUSER/MULTITASKING *
- * ELKSYSTEM *
- * *
- * (C) COPYRIGHT 1983 BY *
- * RICHARD SKRENTA *
- * ALL RIGHTS RESERVED *
- * *
- ****************************
- JOBNO EQU $00
- PCOUNT EQU $01
- JOBPTR EQU $02
- INBUF EQU $04
- OUTBUF EQU $06
- PRSEBUF EQU $08
- SYSMEM EQU $0A
- JOBMEM EQU $0C
- LOMEM EQU $0E
- TEMP EQU $10
- *
- REGS EQU $45
- X1 EQU $D0
- X2 EQU $D2
- X3 EQU $D4
- X4 EQU $D6
- X5 EQU $D8
- X6 EQU $DA
- X7 EQU $DC
- X8 EQU $DE
- PTR0 EQU $E0
- PTR1 EQU $E2
- PTR2 EQU $E4
- PTR3 EQU $E6
- PTR4 EQU $E8
- T1 EQU $F0
- T2 EQU $F2
- T3 EQU $F4
- T4 EQU $F6
- T5 EQU $F8
- T6 EQU $FA
- T7 EQU $FC
- T8 EQU $FE
- *
- JSTATUS EQU 0
- JPRIORTY EQU 1
- JPCOUNT EQU 2
- JECHO EQU 3
- JINDEV EQU 4
- JOUTDEV EQU 5
- JPROG EQU 6
- JREGS EQU 8
- JCCOUNT EQU 13
- JCTRLC EQU 14
- JINP1 EQU 16
- JINP2 EQU 17
- JOUTP1 EQU 18
- JOUTP2 EQU 19
- JPRSEP1 EQU 20
- JPRSEP2 EQU 21
- JNAME EQU 22
- JUSERID EQU 30
- JACCOUNT EQU 38
- JPROMPT EQU 42
- JPAUSE EQU 54
- JSUSP EQU 55
- JVAR EQU 56
- JINTX EQU 105
- JINTZ EQU 107
- JCOLUMN EQU 109
- JTIME EQU 110
- JPRMPT EQU 116
- JRUNSTAT EQU 128
- *
- HOME EQU $FC58
- *
- SYSRUN EQU $300
- SUBJOB EQU SYSRUN+1
- Q1 EQU SYSRUN+2
- Q2 EQU SYSRUN+3
- QS EQU SYSRUN+4
- QM EQU SYSRUN+5
- QH EQU SYSRUN+6
- QD EQU SYSRUN+7
- QMN EQU SYSRUN+8
- QY EQU SYSRUN+9
- K1 EQU SYSRUN+10
- K2 EQU SYSRUN+11
- MAXJOBS EQU SYSRUN+18
- SUBPROG EQU SYSRUN+19
- SYSLOG EQU SYSRUN+20
- *
- DEVICE EQU $900
- DEVIN EQU DEVICE+3
- DEVOUT EQU DEVICE+6
- OPEN EQU DEVICE+9
- CLOSE EQU DEVICE+12
- EXEC EQU DEVICE+15
- DEVSTAT EQU DEVICE+18
- BUFP1 EQU DEVICE+82
- BUFP2 EQU DEVICE+99
- *
- ORG $8000
- MUSYS JMP INIT
- JMP SETJOB
- JMP CYCLE
- JMP DOCYCLE
- JMP PRTINC
- JMP TIME
- JMP IN
- JMP OUT
- JMP RESUME
- JMP INTER
- JMP PROMPT
- JMP NAME
- JMP READLN
- JMP LEADIN
- JMP DELIM
- JMP PARNUM
- JMP LISTCMD
- JMP PARSE
- JMP CMD
- JMP PROGRAM
- JMP SLEEP
- JMP TAB
- JMP PRINT
- JMP PUSH
- JMP RESET
- JMP PULL
- JMP DECPRT
- JMP DEC
- JMP ZERO
- JMP TIMPRT
- JMP CREATE
- JMP ATTACH
- JMP SYSIO
- JMP EXEC0
- JMP DAYPRT
- JMP BEGIN
- JMP KILL
- *
- COUT ORA #$80
- JSR $FDED
- RTS
- *
- SETJOB LDA JOBNO
- ASL
- ASL
- ASL
- CLC
- ADC LOMEM+1
- TAY
- STY JOBPTR+1
- INY
- STY INBUF+1
- INY
- STY OUTBUF+1
- INY
- STY PRSEBUF+1
- INY
- STY SYSMEM+1
- INY
- STY JOBMEM+1
- LDY #0
- STY JOBPTR
- STY INBUF
- STY OUTBUF
- STY PRSEBUF
- STY SYSMEM
- STY JOBMEM
- RTS
- *
- CYCLE INC JOBNO
- LDA JOBNO
- CMP MAXJOBS
- BNE CYCLE2
- LDA #$FF
- STA JOBNO
- BNE CYCLE
- CYCLE2 JSR SETJOB
- RTS
- *
- DOCYCLE JSR CYCLE
- LDY #JSTATUS
- LDA (JOBPTR),Y
- BEQ DOCYC2
- LDY #JPAUSE
- LDA (JOBPTR),Y
- BEQ DOCYC4
- JSR RESUME
- BCS DOCYC2
- LDY #JPCOUNT
- LDA PCOUNT
- STA (JOBPTR),Y
- LDY #JPAUSE
- LDA #0
- STA (JOBPTR),Y
- DOCYC4 LDY #JPCOUNT
- LDA (JOBPTR),Y
- CMP PCOUNT
- BNE DOCYC2
- DOCYC3 CLC
- RTS
- DOCYC2 SEC
- RTS
- *
- PRTINC LDY #JPCOUNT
- LDA (JOBPTR),Y
- LDY #JPRIORTY
- CLC
- ADC (JOBPTR),Y
- LDY #JPCOUNT
- STA (JOBPTR),Y
- RTS
- *
- TIME LDY #0
- TIME3 LDA Q1,Y
- CLC
- ADC #1
- STA Q1,Y
- CMP K1,Y
- BCS TIME2
- RTS
- TIME2 LDA #0
- STA Q1,Y
- INY
- CPY #7
- BNE TIME3
- RTS
- *
- * IN ROUTINE CHECKS FOR INPUT
- * DATA AT INPUT DEVICE OF CURRENT
- * JOB AND PUSHES IT ONTO THE FIFO
- * IF VALID
- *
- IN LDY #JINDEV
- LDA (JOBPTR),Y
- TAY
- JSR DEVIN
- BCS IN2
- PHA
- LDY #JINP1
- LDA (JOBPTR),Y
- TAY
- PLA
- STA (INBUF),Y
- TYA
- LDY #JINP2
- CLC
- ADC #1
- CMP (JOBPTR),Y
- BEQ IN2
- LDY #JINP1
- STA (JOBPTR),Y
- IN2 RTS
- *
- * OUT ROUTINE CHECKS FOR DATA
- * IN FIFO OUTPUT BUFFER AND
- * SENDS IT TO OUTPUT DEVICE
- *
- OUT LDY #JOUTP2
- LDA (JOBPTR),Y
- LDY #JOUTP1
- CMP (JOBPTR),Y
- BEQ OUT2
- LDY #JOUTP2
- CLC
- ADC #1
- STA (JOBPTR),Y
- LDY #JSUSP
- LDA (JOBPTR),Y
- BNE OUT2
- LDY #JOUTP2
- LDA (JOBPTR),Y
- TAY
- DEY
- LDA (OUTBUF),Y
- PHA
- LDY #JOUTDEV
- LDA (JOBPTR),Y
- TAY
- PLA
- JSR DEVOUT
- BCC OUT2
- LDY #JOUTP2
- LDA (JOBPTR),Y
- SEC
- SBC #1
- STA (JOBPTR),Y
- OUT2 RTS
- *
- RESUME LDY #JINDEV
- LDA (JOBPTR),Y
- TAY
- JSR DEVIN
- BCS RESUME2
- CMP #17
- BEQ RESUME3
- CMP #3
- BEQ RESUME4
- SEC
- RESUME2 RTS
- RESUME3 CLC
- RTS
- RESUME4 JSR INTC
- SEC
- RTS
- *
- INTER LDY #JINP1
- LDA (JOBPTR),Y
- LDY #JINP2
- CMP (JOBPTR),Y
- BEQ INTER3
- TAY
- DEY
- LDA (INBUF),Y
- LDY #7
- INTER1 CMP INTTBL-1,Y
- BEQ INTER2
- DEY
- BNE INTER1
- RTS
- INTER2 DEY
- TYA
- ASL
- TAY
- LDA INTJMP,Y
- STA PTR1
- INY
- LDA INTJMP,Y
- STA PTR1+1
- JMP (PTR1)
- INTTBL DFB 3,20,15
- DFB 19,17,24
- DFB 26,0
- INTJMP DFB #<INTC,#>INTC
- DFB #<INTT,#>INTT
- DFB #<INTO,#>INTO
- DFB #<INTS,#>INTS
- DFB #<INTQ,#>INTQ
- DFB #<INTX,#>INTX
- DFB #<INTZ,#>INTZ
- INTER3 RTS
- INTC LDY #JCCOUNT
- LDA (JOBPTR),Y
- CLC
- ADC #1
- STA (JOBPTR),Y
- CMP #2
- BCS INTC2
- JSR PULL
- RTS
- INTC2 LDA #0
- STA (JOBPTR),Y
- LDY #JCTRLC
- LDA (JOBPTR),Y
- PHA
- INY
- LDA (JOBPTR),Y
- BNE INTC3
- PLA
- JSR PULL
- JSR PRINT
- ASC '?NO CTRL-C VECTOR'
- DFB $8D,0
- RTS
- INTC3 LDY #JPROG+1
- STA (JOBPTR),Y
- DEY
- PLA
- STA (JOBPTR),Y
- JSR RESET
- LDA #0
- LDY #JSUSP
- STA (JOBPTR),Y
- LDY #JPAUSE
- STA (JOBPTR),Y
- LDY #JCTRLC
- LDA (JOBPTR),Y
- PHA
- INY
- LDA (JOBPTR),Y
- LDY #JPROG+1
- STA (JOBPTR),Y
- DEY
- PLA
- STA (JOBPTR),Y
- LDY #JPCOUNT
- LDA PCOUNT
- CLC
- ADC #1
- STA (JOBPTR),Y
- JSR PRINT
- ASC '^C'
- DFB $8D,0
- RTS
- INTO JSR PULL
- LDY #JSUSP
- LDA (JOBPTR),Y
- EOR #1
- STA (JOBPTR),Y
- LDA #0
- LDY #JOUTP1
- STA (JOBPTR),Y
- LDY #JOUTP2
- STA (JOBPTR),Y
- RTS
- INTT JSR PULL
- JSR PRINT
- DFB 91,0
- LDA #<QD
- LDY #>QD
- JSR DAYPRT
- LDA #<QS
- LDY #>QS
- JSR TIMPRT
- JSR PRINT
- ASC ' JOB '
- DFB 0
- LDA #0
- STA T1+1
- LDA JOBNO
- STA T1
- JSR DECPRT
- JSR PRINT
- ASC ' ON DEV ('
- DFB 0
- LDY #JINDEV
- LDA (JOBPTR),Y
- STA T1
- JSR DECPRT
- LDA #'/'
- JSR PUSH
- LDY #JOUTDEV
- LDA (JOBPTR),Y
- STA T1
- JSR DECPRT
- JSR PRINT
- ASC ') S'
- DFB 0
- LDY #JSTATUS
- LDA (JOBPTR),Y
- STA T1
- JSR DECPRT
- JSR PRINT
- ASC ' P'
- DFB 0
- LDY #JPRIORTY
- LDA (JOBPTR),Y
- STA T1
- JSR DECPRT
- JSR PRINT
- ASC ' R'
- DFB 0
- LDY #JRUNSTAT
- LDA (JOBPTR),Y
- STA T1
- JSR DECPRT
- JSR PRINT
- ASC ' ; RUNNING IN '
- DFB 0
- LDY #JNAME
- STY T1
- INTT3 LDY T1
- LDA (JOBPTR),Y
- BEQ INTT2
- JSR PUSH
- INC T1
- JMP INTT3
- INTT2 JSR PRINT
- ASC ' AT '
- DFB 0
- LDY #JPROG
- LDA (JOBPTR),Y
- STA T1
- INY
- LDA (JOBPTR),Y
- STA T1+1
- JSR DECPRT
- LDA #93
- JSR PUSH
- LDA #13
- JSR PUSH
- RTS
- INTS JSR PULL
- LDY #JPAUSE
- LDA #1
- STA (JOBPTR),Y
- RTS
- INTQ JSR PULL
- LDY #JPAUSE
- LDA #0
- STA (JOBPTR),Y
- RTS
- INTX LDY #JINTX
- LDA (JOBPTR),Y
- PHA
- INY
- LDA (JOBPTR),Y
- BNE INTX2
- PLA
- RTS
- INTX2 LDY #JPROG+1
- STA (JOBPTR),Y
- DEY
- PLA
- STA (JOBPTR),Y
- JSR PULL
- RTS
- INTZ LDY #JINTZ
- LDA (JOBPTR),Y
- PHA
- INY
- LDA (JOBPTR),Y
- BNE INTZ2
- PLA
- RTS
- INTZ2 LDY #JPROG+1
- STA (JOBPTR),Y
- DEY
- PLA
- STA (JOBPTR),Y
- JSR PULL
- RTS
- *
- PROMPT PLA
- STA PTR1
- PLA
- STA PTR1+1
- LDX #0
- LDY #JPROMPT
- PROMPT3 INC PTR1
- BNE PROMPT2
- INC PTR1+1
- PROMPT2 LDA (PTR1,X)
- STA (JOBPTR),Y
- INY
- CMP #0
- BNE PROMPT3
- LDA PTR1+1
- PHA
- LDA PTR1
- PHA
- RTS
- *
- NAME PLA
- STA PTR1
- PLA
- STA PTR1+1
- LDX #0
- LDY #JNAME
- NAME3 INC PTR1
- BNE NAME2
- INC PTR1+1
- NAME2 LDA (PTR1,X)
- STA (JOBPTR),Y
- INY
- CMP #0
- BNE NAME3
- LDA PTR1+1
- PHA
- LDA PTR1
- PHA
- RTS
- *
- READLN LDA #0
- LDY #JPRSEP1
- STA (JOBPTR),Y
- LDY #JPRSEP2
- STA (JOBPTR),Y
- LDY #JSUSP
- STA (JOBPTR),Y
- READLN0 LDY #JPROMPT
- STY T1
- READ3 LDY T1
- LDA (JOBPTR),Y
- BEQ READ10
- INY
- STY T1
- JSR PUSH
- JMP READ3
- READ10 LDY #0
- STY T2
- LDY #JPRSEP1
- LDA (JOBPTR),Y
- STA T1
- READ11 LDY T2
- CPY T1
- BEQ READ2
- LDA (PRSEBUF),Y
- JSR PUSH
- INC T2
- JMP READ11
- READ2 JSR SLEEP
- LDY #JCCOUNT
- LDA (JOBPTR),Y
- BEQ READ8
- JMP READC
- READ8 JSR PULL
- BCS READ2
- PHA
- LDY #JSUSP
- LDA #0
- STA (JOBPTR),Y
- PLA
- LDY #8
- READ5 CMP READTBL-1,Y
- BEQ READ4
- DEY
- BNE READ5
- READ7 PHA
- LDY #JPRSEP1
- LDA (JOBPTR),Y
- CLC
- ADC #5
- LDY #JPRSEP2
- CMP (JOBPTR),Y
- BEQ READ9
- LDY #JPRSEP1
- LDA (JOBPTR),Y
- CLC
- ADC #1
- STA (JOBPTR),Y
- TAY
- DEY
- PLA
- STA (PRSEBUF),Y
- PHA
- LDY #JECHO
- LDA (JOBPTR),Y
- BEQ READ12
- PLA
- JMP READ2
- READ12 PLA
- CMP #32
- BCS READ6
- PHA
- LDA #'^'
- JSR PUSH
- PLA
- ORA #%01000000
- READ6 JSR PUSH
- JMP READ2
- READ9 PLA
- LDA #7
- JSR PUSH
- JMP READ2
- READ4 DEY
- TYA
- ASL
- TAY
- LDA RDTBL,Y
- STA PTR1
- INY
- LDA RDTBL,Y
- STA PTR1+1
- JMP (PTR1)
- READM LDA #13
- JSR PUSH
- RTS
- READC LDY #JOUTP1
- LDA (JOBPTR),Y
- LDY #JOUTP2
- CMP (JOBPTR),Y
- BEQ READC2
- JMP READ2
- READC2 JSR RESET
- JSR PRINT
- ASC '^C'
- DFB $8D,0
- LDY #JCCOUNT
- LDA #0
- STA (JOBPTR),Y
- LDY #JCTRLC
- LDA (JOBPTR),Y
- STA PTR1
- INY
- LDA (JOBPTR),Y
- STA PTR1+1
- JMP (PTR1)
- READH LDY #JPRSEP1
- LDA (JOBPTR),Y
- BNE READH2
- LDA #13
- JSR PUSH
- JMP READLN
- READH2 SEC
- SBC #1
- STA (JOBPTR),Y
- TAY
- LDA (PRSEBUF),Y
- CMP #32
- BCS READH3
- LDA #8
- JSR PUSH
- READH3 JSR PRINT
- DFB 8,32,8,0
- JMP READ2
- READE LDA #'$'
- JMP READ7
- READL LDA #12
- JSR PUSH
- JMP READLN0
- READU LDA #' '
- JMP READ7
- READR LDA #13
- JSR PUSH
- JMP READLN0
- READTBL DFB 13,3,8
- DFB 27,127,12
- DFB 21,18
- *
- * M,C,H,ESC,<DELETE>
- *
- RDTBL DFB #<READM,#>READM
- DFB #<READC,#>READC
- DFB #<READH,#>READH
- DFB #<READE,#>READE
- DFB #<READH,#>READH
- DFB #<READL,#>READL
- DFB #<READU,#>READU
- DFB #<READR,#>READR
- *
- LEADIN LDY #JPRSEP1
- LDA (JOBPTR),Y
- STA T1
- LDY #JPRSEP2
- LDA (JOBPTR),Y
- TAY
- LEADIN3 LDA (PRSEBUF),Y
- CPY T1
- BEQ LEADIN2
- JSR DELIM
- BCS LEADIN2
- INY
- JMP LEADIN3
- LEADIN2 TYA
- LDY #JPRSEP2
- STA (JOBPTR),Y
- RTS
- *
- DELIM LDX #0
- STA T7
- DELIM4 LDA DELTBL,X
- BEQ DELIM2
- CMP T7
- BEQ DELIM3
- INX
- JMP DELIM4
- DELIM2 SEC
- LDA T7
- RTS
- DELIM3 CLC
- LDA T7
- RTS
- DELTBL ASC ' "(),./: ;=<>'
- DFB 0
- *
- PARNUM JSR LEADIN
- LDY #JPRSEP2
- LDA (JOBPTR),Y
- STA T1
- LDY #JPRSEP1
- LDA (JOBPTR),Y
- STA T2
- LDA #0
- STA T5
- STA T3
- STA T3+1
- LDA T1
- CMP T2
- BNE PARNUM3
- SEC
- RTS
- PARNUM3 LDY T1
- CPY T2
- BEQ PARNUM2
- LDA (PRSEBUF),Y
- JSR DELIM
- BCC PARNUM2
- CMP #'?'
- BNE PARNUM5
- JSR PRINT
- ASC '(NUMERICAL ARGUMENT EXPECTED)'
- DFB $8D,0
- RTS
- PARNUM5 CMP #'0'
- BCC PARNUM2
- CMP #':'
- BCS PARNUM2
- SEC
- SBC #'0'
- PHA
- LDA T3
- STA T4
- LDA T3+1
- STA T4+1
- ASL T3
- ROL T3+1
- ASL T3
- ROL T3+1
- ASL T3
- ROL T3+1
- ASL T4
- ROL T4+1
- LDA T3
- CLC
- ADC T4
- STA T3
- LDA T3+1
- ADC T4+1
- STA T3+1
- PLA
- CLC
- ADC T3
- STA T3
- LDA #0
- ADC T3+1
- STA T3+1
- LDA #1
- STA T5
- INC T1
- JMP PARNUM3
- PARNUM2 LDY #JPRSEP2
- LDA T1
- STA (JOBPTR),Y
- LDA T5
- BNE PARNUM4
- SEC
- RTS
- PARNUM4 CLC
- RTS
- *
- LISTCMD JSR PRINT
- ASC 'OPTION, ONE OF THE FOLLOWING:'
- DFB $8D,$8D,0
- LDA #0
- STA T2
- LDX #0
- LISTCMD3 LDA (PTR3,X)
- BEQ LISTCMD2
- JSR PUSH
- INC PTR3
- BNE LISTCMD5
- INC PTR3+1
- LISTCMD5 JMP LISTCMD3
- LISTCMD2 JSR SLEEP
- INC T2
- LDA T2
- CMP #3
- BNE LISTCMD6
- LDA #0
- STA T2
- LDA #13
- JSR PUSH
- JMP LISTCMD7
- LISTCMD6 TAY
- LDA LISTTAB,Y
- JSR TAB
- LISTCMD7 LDA (PTR3,X)
- BNE LISTCMD3
- INC PTR3
- BNE LISTCMD4
- INC PTR3+1
- LISTCMD4 LDA (PTR3,X)
- BNE LISTCMD3
- LDA #13
- JSR PUSH
- LDA T2
- BEQ LISTCMD8
- LDA #13
- JSR PUSH
- LISTCMD8 SEC
- RTS
- LISTTAB DFB 0,13,26
- *
- PARSE JSR LEADIN
- LDY #JPRSEP1
- LDA (JOBPTR),Y
- LDY #JPRSEP2
- CMP (JOBPTR),Y
- BNE PARSE0
- CLC
- RTS
- PARSE0 LDX #0
- STX T1
- STX T2
- LDA PTR3
- STA PTR4
- LDA PTR3+1
- STA PTR4+1
- PARSE3 LDY #JPRSEP2
- LDA (JOBPTR),Y
- STA T3
- LDY #JPRSEP1
- LDA (JOBPTR),Y
- STA T4
- PARSE5 LDY T3
- LDA (PRSEBUF),Y
- JSR SLEEP
- CPY T4
- BEQ PARSE1
- CMP #'!'
- BEQ PARSE19
- CMP #'?'
- BNE PARSE14
- JMP LISTCMD
- PARSE14 JSR DELIM
- LDX #0
- BCC PARSE1
- STA T5
- LDA (PTR4,X)
- BEQ PARSE2
- CMP T5
- BNE PARSE2
- INC T3
- INC PTR4
- BNE PARSE4
- INC PTR4+1
- PARSE4 JMP PARSE5
- PARSE1 INC T1
- LDA T2
- STA T6
- LDA T3
- STA T8
- LDA (PTR4,X)
- BEQ PARSE11
- PARSE2 INC T2
- PARSE8 LDA (PTR4,X)
- BEQ PARSE6
- INC PTR4
- BNE PARSE7
- INC PTR4+1
- PARSE7 JMP PARSE8
- PARSE6 INC PTR4
- BNE PARSE9
- INC PTR4+1
- PARSE9 LDA (PTR4,X)
- BEQ PARSE12
- JMP PARSE3
- PARSE12 LDA T1
- BNE PARSE10
- JSR PRINT
- ASC '?UNRECOGNIZED COMMAND-KEYWORD NOT FOUND'
- DFB $8D,0
- SEC
- PARSE19 RTS
- PARSE10 CMP #2
- BCC PARSE11
- JSR PRINT
- ASC '?UNRECOGINIZED COMMAND-AMBIGUOUS'
- DFB $8D,0
- SEC
- RTS
- PARSE11 LDA T6
- ASL
- ASL
- TAY
- LDA (PTR2),Y
- STA PTR1
- INY
- LDA (PTR2),Y
- STA PTR1+1
- INY
- LDA (PTR2),Y
- LDY #JSTATUS
- CMP (JOBPTR),Y
- BCC PARSE18
- JMP PARSE13
- PARSE18 CMP #50
- BCC PARSE15
- JSR PRINT
- ASC '?LOGIN PLEASE'
- DFB $8D,0
- SEC
- RTS
- PARSE15 CMP #10
- BCC PARSE16
- JSR PRINT
- ASC '?PRIVILEGED STATUS REQUIRED'
- DFB $8D,0
- SEC
- RTS
- PARSE16 CMP #1
- BEQ PARSE17
- JSR PRINT
- ASC '?WHEEL OR OPERATOR CAPABILITY REQUIRED'
- DFB $8D,0
- SEC
- RTS
- PARSE17 JSR PRINT
- ASC '?OPERATOR CAPABILITY REQUIRED'
- DFB $8D,0
- SEC
- RTS
- PARSE13 LDY #JPRSEP2
- LDA T8
- STA (JOBPTR),Y
- JMP (PTR1)
- *
- CMD PLA
- STA PTR1
- PLA
- STA PTR1+1
- LDY #1
- LDA (PTR1),Y
- STA PTR3
- INY
- LDA (PTR1),Y
- STA PTR3+1
- INY
- LDA (PTR1),Y
- STA PTR2
- INY
- LDA (PTR1),Y
- STA PTR2+1
- TYA
- CLC
- ADC PTR1
- STA PTR1
- LDA #0
- ADC PTR1+1
- PHA
- LDA PTR1
- PHA
- RTS
- *
- PROGRAM LDX #0
- LDY #JREGS
- PROG2 LDA (JOBPTR),Y
- STA REGS,X
- INY
- INX
- CPX #5
- BNE PROG2
- LDX #0
- LDY #JVAR
- PROG4 LDA (JOBPTR),Y
- STA X1,X
- INY
- INX
- CPX #$30
- BNE PROG4
- LDY #JPROG
- LDA (JOBPTR),Y
- STA TEMP
- INY
- LDA (JOBPTR),Y
- STA TEMP+1
- LDY #0
- PROG3 LDA (SYSMEM),Y
- STA $100,Y
- DEY
- BNE PROG3
- LDY $47
- LDX $49
- TXS
- LDX $46
- LDA $48
- PHA
- LDA $45
- PLP
- JMP (TEMP)
- *
- SLEEP STA REGS
- PLA
- STA TEMP
- PLA
- STA TEMP+1
- LDA REGS
- STA $45
- STX $46
- STY $47
- PHP
- PLA
- STA $48
- TSX
- STX $49
- INC TEMP
- BNE SLEEP4
- INC TEMP+1
- SLEEP4 LDY #JPROG
- LDA TEMP
- STA (JOBPTR),Y
- INY
- LDA TEMP+1
- STA (JOBPTR),Y
- LDX #0
- LDY #JREGS
- SLEEP3 LDA REGS,X
- STA (JOBPTR),Y
- INY
- INX
- CPX #5
- BNE SLEEP3
- LDX #0
- LDY #JVAR
- SLEEP5 LDA X1,X
- STA (JOBPTR),Y
- INY
- INX
- CPX #$30
- BNE SLEEP5
- LDY #0
- SLEEP2 LDA $100,Y
- STA (SYSMEM),Y
- DEY
- BNE SLEEP2
- PLA
- PLA
- JMP LOOP3
- *
- TAB STA T1
- LDY #JCOLUMN
- LDA (JOBPTR),Y
- CMP T1
- BCS TAB3
- LDA T1
- SEC
- SBC (JOBPTR),Y
- STA T1
- INC T1
- TAB2 LDA #' '
- JSR PUSH
- DEC T1
- BNE TAB2
- TAB3 RTS
- *
- PRINT PLA
- STA PTR0
- PLA
- STA PTR0+1
- PRINT1 INC PTR0
- BNE PRINT2
- INC PTR0+1
- PRINT2 LDY #0
- LDA (PTR0),Y
- CMP #0
- BEQ PRINT3
- JSR PUSH
- JMP PRINT1
- PRINT3 LDA PTR0+1
- PHA
- LDA PTR0
- PHA
- RTS
- *
- PUSH AND #$7F
- CMP #10
- BEQ PUSH6
- PUSH0 PHA
- LDY #JCOLUMN
- CMP #13
- BNE PUSH3
- LDA #0
- STA (JOBPTR),Y
- JMP PUSH1
- PUSH3 LDA (JOBPTR),Y
- CLC
- ADC #1
- STA (JOBPTR),Y
- PUSH1 LDY #JOUTP1
- LDA (JOBPTR),Y
- LDY #JOUTP2
- CLC
- ADC #1
- CMP (JOBPTR),Y
- BNE PUSH2
- LDA SUBJOB
- CMP SUBPROG
- BNE PUSH5
- JSR SLEEP
- JMP PUSH1
- PUSH5 PLA
- RTS
- PUSH2 LDY #JOUTP1
- STA (JOBPTR),Y
- TAY
- DEY
- PLA
- STA (OUTBUF),Y
- CMP #13
- BNE PUSH6
- LDA #10
- JMP PUSH0
- PUSH6 RTS
- *
- RESET LDA #0
- LDY #JINP1
- STA (JOBPTR),Y
- LDY #JINP2
- STA (JOBPTR),Y
- LDY #JOUTP1
- STA (JOBPTR),Y
- LDY #JOUTP2
- STA (JOBPTR),Y
- RTS
- *
- PULL LDY #JINP2
- LDA (JOBPTR),Y
- LDY #JINP1
- CMP (JOBPTR),Y
- BEQ PULL2
- LDY #JINP2
- CLC
- ADC #1
- STA (JOBPTR),Y
- TAY
- DEY
- LDA (INBUF),Y
- CLC
- RTS
- PULL2 SEC
- RTS
- *
- DECPRT JSR DEC
- LDX #$FF
- DECPRT3 INX
- CPX #4
- BEQ DECPRT2
- LDA DECOUT,X
- CMP #'0'
- BEQ DECPRT3
- DECPRT2 LDA DECOUT,X
- JSR PUSH
- INX
- CPX #5
- BNE DECPRT2
- RTS
- *
- DEC LDA #5
- STA T2
- LDA #<DECOUT
- STA PTR1
- LDA #>DECOUT
- STA PTR1+1
- LDY #0
- DEC1 LDA #'0'
- STA T3
- DEC2 LDA T1
- SEC
- SBC DECTBL,Y
- TAX
- LDA T1+1
- SBC DECTBL+1,Y
- BCC DEC3
- STA T1+1
- STX T1
- INC T3
- BNE DEC2
- DEC3 LDX #0
- LDA T3
- STA (PTR1,X)
- INC PTR1
- BNE DEC4
- INC PTR1+1
- DEC4 INY
- INY
- DEC T2
- BNE DEC1
- RTS
- DECTBL DFB #<10000,#>10000
- DFB #<1000,#>1000
- DFB #<100,#>100
- DFB #<10,#>10
- DFB #<1,#>1
- DECOUT DS 5
- *
- ZERO LDY #0
- TYA
- ZERO2 STA (JOBPTR),Y
- DEY
- BNE ZERO2
- RTS
- *
- TIMPRT STA PTR2
- STY PTR2+1
- LDA #' '
- JSR PUSH
- LDA #2
- STA T5
- LDA #0
- STA T1+1
- TIMPRT4 LDY T5
- LDA (PTR2),Y
- STA T1
- JSR DEC
- LDX #3
- TIMPRT2 LDA DECOUT,X
- JSR PUSH
- INX
- CPX #5
- BNE TIMPRT2
- LDA T5
- BNE TIMPRT3
- LDA #' '
- JSR PUSH
- RTS
- TIMPRT3 LDA #':'
- JSR PUSH
- DEC T5
- JMP TIMPRT4
- *
- DAYPRT STA PTR2
- STY PTR2+1
- LDA #' '
- JSR PUSH
- LDA #0
- STA T1+1
- LDY #0
- LDA (PTR2),Y
- STA T1
- JSR DECPRT
- LDA #'-'
- JSR PUSH
- LDY #1
- LDA (PTR2),Y
- ASL
- CLC
- ADC (PTR2),Y
- STA T1
- LDX #3
- DAYPRT2 LDY T1
- LDA MNTHTBL,Y
- JSR PUSH
- INC T1
- DEX
- BNE DAYPRT2
- LDA #'-'
- JSR PUSH
- LDY #2
- LDA (PTR2),Y
- STA T1
- JSR DECPRT
- LDA #' '
- JSR PUSH
- RTS
- MNTHTBL ASC '***JANFEBMARAPRMAYJUNJULAUGSEPOCTNOVDEC'
- *
- * MAIN CONTROL SECTION
- *
- INIT LDY #0
- INIT6 LDA LOADTXT,Y
- BEQ INIT7
- JSR COUT
- INY
- JMP INIT6
- LOADTXT DFB $8D,$84
- ASC 'BLOAD MUOBJ'
- DFB $8D,0
- *
- TIMEK DFB 33,60
- DFB 60,60,24
- DFB 31,13,100
- *
- INIT7 JSR DEVICE
- LDA #$4C
- STA $3F8
- LDA #<LOOP
- STA $3F9
- LDA #>LOOP
- STA $3FA
- *
- LDA #$69
- STA $3F2
- LDA #$FF
- STA $3F3
- EOR #$A5
- STA $3F4
- *
- LDA #0
- STA PCOUNT
- *
- LDY #$C0
- LDA #0
- INIT3 STA SYSRUN,Y
- DEY
- BNE INIT3
- STA SYSRUN
- *
- LDY #0
- INIT8 LDA TIMEK,Y
- STA K1,Y
- INY
- CPY #8
- BNE INIT8
- *
- LDY #0
- INIT5 LDA MUSYS,Y
- STA $800,Y
- DEY
- BNE INIT5
- *
- LDA #8
- STA MAXJOBS
- *
- LDA #<LOGTBL
- STA SYSLOG
- LDA #>LOGTBL
- STA SYSLOG+1
- *
- LDA #$FF
- STA JOBNO
- JSR CYCLE
- INIT2 JSR ZERO
- JSR CYCLE
- LDA JOBNO
- BNE INIT2
- *
- LDY #JSTATUS
- LDA #1
- STA (JOBPTR),Y
- LDY #JPRIORTY
- LDA #10
- STA (JOBPTR),Y
- LDY #JPROG
- LDA #<SYSIO
- STA (JOBPTR),Y
- INY
- LDA #>SYSIO
- STA (JOBPTR),Y
- LDY #JPCOUNT
- LDA #1
- STA (JOBPTR),Y
- *
- * SYSTEM SUPERVISORY ROUTINE
- *
- LOOP LDA #0
- STA SUBJOB
- INC PCOUNT
- LDA #$FF
- STA JOBNO
- JSR CYCLE
- LOOP1 LDY SUBJOB
- LDA SUBTBL,Y
- STA LOOPX+1
- INY
- LDA SUBTBL,Y
- BEQ LOOP
- STA LOOPX+2
- INY
- STY SUBJOB
- LOOP2 JSR TIME
- JSR DOCYCLE
- BCS LOOP3
- LOOPX JSR $0000
- LOOP3 LDA JOBNO
- BNE LOOP2
- BEQ LOOP1
- SUBTBL DFB #<IN,#>IN
- DFB #<INTER,#>INTER
- DFB #<OUT,#>OUT
- DFB #<OUT,#>OUT
- DFB #<OUT,#>OUT
- DFB #<PROGRAM,#>PROGRAM
- DFB #<IN,#>IN
- DFB #<INTER,#>INTER
- DFB #<OUT,#>OUT
- DFB #<OUT,#>OUT
- DFB #<OUT,#>OUT
- DFB #<PRTINC,#>PRTINC
- DFB 0,0
- *
- CREATE PHA
- LDA JOBNO
- STA T6
- LDA JOBPTR
- STA PTR1
- LDA JOBPTR+1
- STA PTR1+1
- LDA #0
- STA JOBNO
- CREATE3 JSR CYCLE
- LDY #JSTATUS
- LDA (JOBPTR),Y
- BEQ CREATE2
- LDA JOBNO
- BNE CREATE3
- LDA T6
- STA JOBNO
- JSR SETJOB
- PLA
- SEC
- RTS
- CREATE2 JSR ZERO
- LDY #JSTATUS
- LDA (PTR1),Y
- STA (JOBPTR),Y
- INY
- LDA (PTR1),Y
- STA (JOBPTR),Y
- LDY #JPCOUNT
- LDA PCOUNT
- CLC
- ADC #1
- STA (JOBPTR),Y
- LDY #JPROG
- LDA #<BEGIN
- STA (JOBPTR),Y
- INY
- LDA #>BEGIN
- STA (JOBPTR),Y
- LDY #JUSERID
- CREATE4 LDA (PTR1),Y
- STA (JOBPTR),Y
- INY
- CPY #JPROMPT
- BNE CREATE4
- LDY #JTIME
- LDX #0
- CREATE5 LDA QS,X
- STA (JOBPTR),Y
- INY
- INX
- CPX #6
- BNE CREATE5
- LDY #JRUNSTAT
- PLA
- STA (JOBPTR),Y
- LDA JOBNO
- PHA
- LDA T6
- STA JOBNO
- JSR SETJOB
- PLA
- CLC
- RTS
- *
- ATTACH STX T1
- STY T2
- STA T5
- LDA JOBNO
- STA T6
- LDA T5
- STA JOBNO
- JSR SETJOB
- LDY #JINDEV
- LDA T1
- STA (JOBPTR),Y
- LDY #JOUTDEV
- LDA T2
- STA (JOBPTR),Y
- LDA T6
- STA JOBNO
- JSR SETJOB
- LDA T5
- LDY T1
- STA DEVSTAT,Y
- LDY T2
- STA DEVSTAT,Y
- RTS
- *
- KILL PHA
- LDA JOBNO
- STA T6
- PLA
- STA JOBNO
- JSR SETJOB
- LDY #JINDEV
- LDA (JOBPTR),Y
- LDY #JOUTDEV
- CMP (JOBPTR),Y
- BEQ KILL3
- TAY
- JSR CLOSE
- KILL3 LDY #JINDEV
- LDA #0
- STA (JOBPTR),Y
- LDY #JPROG
- LDA #<DIE
- STA (JOBPTR),Y
- INY
- LDA #>DIE
- STA (JOBPTR),Y
- JSR RESET
- LDY #JRUNSTAT
- LDA #%00010000
- STA (JOBPTR),Y
- LDX #0
- LDY #JTIME
- KILL2 LDA QS,X
- STA (JOBPTR),Y
- INY
- INX
- CPX #6
- BNE KILL2
- JSR PRINT
- DFB $8D
- ASC 'KILLED JOB '
- DFB 0
- LDA #0
- STA T1+1
- LDA JOBNO
- STA T1
- JSR DECPRT
- LDY #JUSERID
- LDA (JOBPTR),Y
- CMP #'*'
- BEQ KILL6
- JSR PRINT
- ASC ' ,USER '
- DFB 0
- LDY #JUSERID
- STY T1
- KILL4 LDY T1
- LDA (JOBPTR),Y
- BEQ KILL5
- JSR PUSH
- INC T1
- LDA T1
- CMP #JACCOUNT
- BNE KILL4
- KILL5 LDA #','
- JSR PUSH
- KILL6 JSR PRINT
- ASC ' AT '
- DFB 0
- LDA #<QD
- LDY #>QD
- JSR DAYPRT
- LDA #<QS
- LDY #>QS
- JSR TIMPRT
- LDA #13
- JSR PUSH
- LDA T6
- STA JOBNO
- JSR SETJOB
- RTS
- *
- SYSID ASC 'SYSJOB'
- DFB 0,0
- ASC '****'
- SYSNEW ASC '****'
- DFB 0,0,0,0
- ASC '****'
- *
- SYSOPR ASC 'OPER'
- DFB 0
- LOGTBL DFB 1,3,0,0,0,0,0,0,0
- *
- SYSIO JSR NAME
- ASC 'SYSIO'
- DFB 0
- LDY #JUSERID
- LDX #0
- SYSIO2 LDA SYSID,X
- STA (JOBPTR),Y
- INX
- INY
- CPY #JPROMPT
- BNE SYSIO2
- LDA SUBJOB
- STA SUBPROG
- LDA JOBNO
- STA T8
- LDA #%10000000
- JSR CREATE
- STA JOBNO
- JSR SETJOB
- LDY #JPROG
- LDA #<JOBCTL
- STA (JOBPTR),Y
- INY
- LDA #>JOBCTL
- STA (JOBPTR),Y
- LDA T8
- STA JOBNO
- JSR SETJOB
- LDA #%10000000
- JSR CREATE
- STA JOBNO
- JSR SETJOB
- LDY #JPROG
- LDA #<OPRCHK
- STA (JOBPTR),Y
- LDA #>OPRCHK
- INY
- STA (JOBPTR),Y
- LDA T8
- STA JOBNO
- JSR SETJOB
- LDA #%10000000
- JSR CREATE
- STA JOBNO
- JSR SETJOB
- LDY #JUSERID
- LDX #0
- SYSIO7 LDA SYSOPR,X
- STA (JOBPTR),Y
- BEQ SYSIO8
- INX
- INY
- JMP SYSIO7
- SYSIO8 LDA T8
- STA JOBNO
- JSR SETJOB
- SYSIO3 LDA #0
- STA T8
- SYSIO4 JSR SLEEP
- LDY T8
- INC T8
- LDA LOGTBL,Y
- BEQ SYSIO3
- TAY
- LDA DEVSTAT,Y
- BNE SYSIO4
- JSR DEVIN
- BCS SYSIO4
- CMP #3
- BEQ SYSIO6
- CMP #13
- BNE SYSIO4
- SYSIO6 LDA #%00100000
- JSR CREATE
- BCS SYSIO4
- STA T7
- LDY T8
- DEY
- LDA LOGTBL,Y
- TAY
- TAX
- LDA T7
- JSR ATTACH
- LDA JOBNO
- STA T6
- LDA T7
- STA JOBNO
- JSR SETJOB
- LDY #JUSERID
- LDX #0
- SYSIO5 LDA SYSNEW,X
- STA (JOBPTR),Y
- INY
- INX
- CPY #JPROMPT
- BNE SYSIO5
- LDY #JSTATUS
- LDA #60
- STA (JOBPTR),Y
- INY
- LDA #2
- STA (JOBPTR),Y
- LDA T6
- STA JOBNO
- JSR SETJOB
- JMP SYSIO4
- *
- JOBCTL JSR NAME
- ASC 'JOBCTL'
- DFB 0
- JOBCTL2 LDA MAXJOBS
- STA T8
- JOBCTL3 JSR SLEEP
- LDA JOBNO
- STA T7
- LDA #2
- STA JOBNO
- JSR SETJOB
- LDY #JSTATUS
- LDA #1
- STA (JOBPTR),Y
- LDY #JRUNSTAT
- LDA #%10000000
- STA (JOBPTR),Y
- LDA T7
- STA JOBNO
- JSR SETJOB
- LDA T8
- STA JOBNO
- JSR SETJOB
- LDA JOBPTR
- STA PTR2
- LDA JOBPTR+1
- STA PTR2+1
- LDA T7
- STA JOBNO
- JSR SETJOB
- LDY #JRUNSTAT
- LDA (PTR2),Y
- AND #%10000000
- BEQ JOBCTL4
- JMP JOBCTL7
- JOBCTL4 LDA (PTR2),Y
- AND #%01000000
- BEQ JOBCTL5
- JMP JOBBCH
- JOBCTL5 LDA (PTR2),Y
- AND #%00100000
- BEQ JOBCTL6
- JMP JOBNLI
- JOBCTL6 LDA (PTR2),Y
- AND #%00010000
- BEQ JOBCTL7
- JMP JOBOUT
- JOBCTL7 DEC T8
- BNE JOBCTL3
- BEQ JOBCTL2
- JOBBCH LDY #JOUTP1
- LDA (PTR2),Y
- LDY #JOUTP2
- CMP (PTR2),Y
- BEQ JOBBCH2
- JMP JOBCTL7
- JOBBCH2 LDY #JINP1
- LDA (PTR2),Y
- LDY #JINP2
- CMP (PTR2),Y
- BEQ JOBBCH4
- JMP JOBCTL7
- JOBBCH4 LDA T8
- JSR KILL
- JMP JOBCTL7
- JOBNLI LDA QM
- LDY #JTIME+1
- SEC
- SBC (PTR2),Y
- CMP #2
- BCS JOBNLI2
- JMP JOBCTL7
- JOBNLI2 LDA T8
- JSR KILL
- JMP JOBCTL7
- JOBOUT LDY #JOUTP1
- LDA (PTR2),Y
- LDY #JOUTP2
- CMP (PTR2),Y
- BNE JOBOUT2
- JOBOUT3 LDY #JSTATUS
- LDA #0
- STA (PTR2),Y
- LDY #JOUTDEV
- LDA (PTR2),Y
- TAY
- JSR CLOSE
- JMP JOBCTL7
- JOBOUT2 LDA QM
- LDY #JTIME+1
- SEC
- SBC (PTR2),Y
- CMP #1
- BCS JOBOUT3
- JMP JOBCTL7
- *
- EXEC0 JMP EXEC
- *
- BEGIN JSR PRINT
- DFB $8D
- ASC 'JOB '
- DFB 0
- JSR SLEEP
- LDA JOBNO
- STA T1
- LDA #0
- STA T1+1
- JSR DECPRT
- JSR PRINT
- ASC ' ON MUSYS PROCESSOR V1(6502)'
- DFB $8D,0
- JSR SLEEP
- LDY #JPRMPT
- LDA #'@'
- STA (JOBPTR),Y
- INY
- LDA #0
- STA (JOBPTR),Y
- JSR SLEEP
- JMP EXEC0
- DIE JSR SLEEP
- JMP DIE
- OPRCHK JSR NAME
- ASC 'OPRCHK'
- DFB 0
- LDA JOBNO
- STA T8
- OPRCHK3 JSR SLEEP
- LDA #0
- STA JOBNO
- OPRCHK2 JSR SETJOB
- LDY #JSTATUS
- LDA #1
- STA (JOBPTR),Y
- INY
- LDA #10
- STA (JOBPTR),Y
- LDY #JRUNSTAT
- LDA #%10000000
- STA (JOBPTR),Y
- INC JOBNO
- LDA JOBNO
- CMP #4
- BNE OPRCHK2
- DEC JOBNO
- JSR SETJOB
- LDY #JPRIORTY
- LDA #1
- STA (JOBPTR),Y
- LDA T8
- STA JOBNO
- JSR SETJOB
- LDA $C000
- CMP #$1E
- BEQ OPRCHK7
- CMP #$9E
- BNE OPRCHK3
- OPRCHK7 LDA MAXJOBS
- STA JOBNO
- OPRCHK6 JSR SETJOB
- LDY #JINDEV
- LDA (JOBPTR),Y
- CMP #1
- BNE OPRCHK4
- LDA #0
- STA (JOBPTR),Y
- OPRCHK4 LDY #JOUTDEV
- LDA (JOBPTR),Y
- CMP #1
- BNE OPRCHK5
- LDA #0
- STA (JOBPTR),Y
- OPRCHK5 DEC JOBNO
- BNE OPRCHK6
- LDA #3
- STA JOBNO
- JSR SETJOB
- LDA #1
- LDY #JINDEV
- STA (JOBPTR),Y
- LDY #JOUTDEV
- STA (JOBPTR),Y
- LDA T8
- STA JOBNO
- JSR SETJOB
- JMP OPRCHK
-