 .PAGE 'JOBS'
;
; USE LASTJOB FOR DRIVE #
; CMD IS USED FOR JOB COMMAND
;
SETLJB
 LDA LSTJOB,X
 AND #1
 ORA CMD
;
; SET JOB UP AND CHECK T&S
;  .A=COMMAND FOR JOBS
;  .X=JOB NUMBER
;
SETJOB
 PHA
 STX JOBNUM
 TXA
 ASL A
 ASL A
 ASL A
 TAX
 LDA HDRS+3,X
 STA CMD ;SAVE SECTOR
 LDA HDRS+2,X
 BEQ TSERR
;
 CMP #MAXTRK
 BCS TSERR ;TRACK TOO LARGE
;
 TAX
 PLA ;CHECK FOR WRITE
 PHA
 AND #$F0
 CMP #WRITE
 BNE SJB1 ;NOT WRITE,SKIP CHECK
 PLA
 PHA
 LSR A
 BCS SJB2 ;DRIVE 1
;
 LDA BAM0+2 ;GET VERSION #
 BCC SJB3
SJB2
 LDA BAM1+2 ;GET DRIVE 1 VER#
SJB3
 BEQ SJB4 ;NO # IS OK, TOO
 CMP VERNUM
 BNE VNERR ;NOT SAME VERNUM #
;
SJB4
 TXA ;RESTORE TRACK #
 JSR MAXSEC
 CMP CMD
 BEQ TSERR
 BCS SJB1 ;SECTOR IS OK!
;
;
; ILLEGAL TRACK AND SECTOR
;
TSERR
 JSR HED2TS
TSER1
 LDA #BADTS
 JMP CMDER2
;
;
HED2TS
 LDA JOBNUM
 ASL A
 ASL A
 ASL A
 TAX
 LDA HDRS+2,X
 STA TRACK
 LDA HDRS+3,X
 STA SECTOR
 RTS
;
;
TSCHK
 LDA TRACK
 BEQ TSER1
 CMP #MAXTRK
 BCS TSER1
;
 JSR MAXSEC
 CMP SECTOR
 BEQ TSER1
 BCC TSER1
 RTS
;
VNERR
 JSR HED2TS
 LDA #CBMV2 ;WRITE TO WRONG VERSION
 JMP CMDER2
;
SJB1
 LDX JOBNUM
 LDA REVCNT ;SET RECOV COUNT
 AND #$1F
 STA ERRCNT,X
 PLA
 STA CMD
 STA JOBS,X
 STA LSTJOB,X
 RTS
;
;
; DO JOB IN .A, SET UP ERROR COUNT
; AND LSTJOB. RETURN WHEN JOB DONE OK
; JMP TO ERROR IF ERROR RETURNS
;
DOIT STA CMD
DOIT2 LDA CMD
 JSR SETJOB
 JMP WATJOB
 .END
