PCASI:UNIT=CSTHH,REV=4-R2A,CI=S88881A,IA=1CC8,RA=1CD6,BYTE=14;
END;
!A;
/* DUMMY PCASI TO CREATE ROOM FOR A NEW ENTRY POINT, FETDIRDAT_15!
PCASI:UNIT=CSTHH,REV=4-R2A,CI=S88881A,IA=1D26,RA=1D32,BYTE=12;
END;
!A;
PCASI:UNIT=CSTHH,REV=4-R2A,CI=S88881A,IA=6CE,RA=6D6,BYTE=8;
CMP.B #$15,D6; !PROSTA = FETDIRDAT_17?!
BNE.S LEND; !NO, THEN CONTINUE IN OLD CODE!
MOVE.B $54(A6),D5; !NEED IT IN D5 IF WE ARE TO REUSE OLD CODE!
TST.B D5; !TRESULT = PRINT_OK?!
BEQ.S OK;
JMP PROGSTART+$2104; !PRINTOUT NOK, REUSE OLD CODE!
OK:;
CMP.L #1000,$93(A4); !TOT_MON_JOBS >= MAX_JOBS_PER_LIM?!
BLO.S L1; !NO, THEN CONTINUE!
JMP PROGSTART+$1CCE; !YES, THEN GOTO FETDIRDAT_20!
L1:;
MOVE.B #$14,$8F(A4); !PROSTA = FETDIRDAT_10!
TRAPT.W #$12; !FETDIRDAT!
LEA.L $27(A4),A3; !PARAMETER_LGRP!
CLR.L D3;
MOVE.B (A3)+,D3;
CMP.B #14,D3;
BLS.S L2;
MOVEQ #14,D3;
L2:;
MOVE.B D3,(A5)+;
BEQ.S L3;
SUBQ.W #1,D3;
L4:;
MOVE.B (A3)+,(A5)+;
DBF D3,L4;
L3:;
CLR.B (A5)+; !CSTA!
MOVE.B $14(A6),(A5)+; !WORKPOINT!
MOVE.B (A4),(A5)+; !ADRCONTROL!
MOVE.L $93(A4),(A5)+; !TOT_MON_JOBS!
MOVE.W $E6(A0),(A5)+; !COWNUNIT!
MOVE.B $E5(A0),(A5)+; !COWNLIM!
MOVE.W #$A0,D0;
MOVE.W #$21F,D1;
MOVE.B $F(A4),D2;
TRAPT.W #$202;
TRAPT.W #$14; !EXIT!
LEND:;
END;
!A;
/* FETDIRDATRES */
PCASI:UNIT=CSTHH,REV=4-R2A,CI=S88881A,SIGNO=A0,RA=1D2C;
TRAPT.W #$213; !FETDIRDATRES!
MOVE.B (A5)+,D5; !WORKPTR!
ANDI.W #$FF,D5;
MOVE.B D5,$14(A6);
SUBA.L A4,A4;
CMP.W $5E(A1),D5;
BCC L1;
MULU.W #$C4,D5;
MOVEA.L A0,A4;
ADDA.L $66(A1),A4;
LEA.L (0,A4,D5.L),A4;
L1:;
MOVE.L A4,$16(A6);
TST.B (A5);
BEQ.S NOCTRL;
MOVE.L A4,D0;
TRAPEQ.W #QFP;
MOVE.B (A4),D1;
BEQ.S NOCTRL;
CMP.B (A5),D1;
TRAPNE.W #QFA;
NOCTRL:;
ADDQ.L #1,A5;
MOVE.L (A5)+,$93(A4); !TOT_MON_JOBS!
MOVE.W (A5)+,$151(A4); !DIRNO_21 & DIRNO_43!
MOVE.W (A5)+,$153(A4); !DIRNO_5 & STATUS!
MOVE.B (A5)+,$39(A4); !PORT_LIM!
CMPI.B #1,$1(A4); !BREAKSTATUS = DYING?!
BNE.S L2;
TRAPT.W #$14; !YES, THEN EXIT!
L2:;
CMPI.B #$14,$8F(A4); !PROSTA = FETDIRDAT_10?!
BEQ.S L3;
JMP PROGSTART+$2330; !NO, THEN GOTO ILLEGALSTATE!
L3:;
CMPI.L #1000,$93(A4); !TOT_MON_JOBS >= MAX_JOBS_PER_LIM?!
BLO.S L4;
JMP PROGSTART+$1CCE; !YES, THEN GOTO FETDIRDAT_20!
L4:;
ADD.L #1,$93(A4); !TOT_MON_JOBS++!
JSR PROGSTART+$3884; !UPDATE TIME SUPERVISION!
MOVEA.L $16(A6),A4;
MOVE.L A4,D0;
TRAPEQ.W #QFP;
CMPI.B #1,$3B(A4); !PRINTFLAG = DATA_PRINTED?!
BEQ.S HEADER_PRINTED;
MOVEQ #4,D6; !PRINTPOINT = CSTMP_HEAD!
MOVE.B D6,$1A(A6);
SUBA.L A3,A3;
CMP.W $6C(A1),D6;
BCC.S L5;
MULU.W #$53,D6;
MOVEA.L A1,A3;
ADDA.L $6E(A1),A3;
LEA.L (0,A3,D6.L),A3;
L5:;
MOVE.L A3,$20(A6);
JMP PROGSTART+$24FE; !GOTO PRINTHEAD!
HEADER_PRINTED:; !CONTINUE AT FETDIRDAT_15, ADDR #1D2C!
END;
!A;
/* FETDIRDAT_15 */
PCASI:UNIT=CSTHH,REV=4-R2A,CI=S88881A,IA=1D2C,RA=20BC;
JSR PROGSTART+$2894; !DO CLEARPRINTSTRING!
MOVEA.L $16(A6),A4;
MOVE.L A4,D0;
TRAPEQ.W #QFP;
LEA.L $3E(A4),A3;
CLR.B (A3)+; !SET PRINTSTRING LENGTH = ZERO!
MOVE.B $151(A4),D1; !1:ST DIGIT!
ANDI.B #$0F,D1;
CMPI.B #$0F,D1;
BEQ.S L1;
ADD.B #$30,D1;
BRA.S L11;
L1:;
MOVEQ #$20,D1;
L11:;
MOVE.B D1,(A3)+;
MOVE.B $151(A4),D1; !2:ND DIGIT!
ANDI.B #$F0,D1;
CMPI.B #$F0,D1;
BEQ.S L2;
LSR.B #4,D1;
ADD.B #$30,D1;
BRA.S L22;
L2:;
MOVEQ #$20,D1;
L22:;
MOVE.B D1,(A3)+;
MOVE.B $152(A4),D1; !3:RD DIGIT!
ANDI.B #$0F,D1;
CMPI.B #$0F,D1;
BEQ.S L3;
ADD.B #$30,D1;
BRA.S L33;
L3:;
MOVEQ #$20,D1;
L33:;
MOVE.B D1,(A3)+;
MOVE.B $152(A4),D1; !4:TH DIGIT!
ANDI.B #$F0,D1;
CMPI.B #$F0,D1;
BEQ.S L4;
LSR.B #4,D1;
ADD.B #$30,D1;
BRA.S L44;
L4:;
MOVEQ #$20,D1;
L44:;
MOVE.B D1,(A3)+;
MOVE.B $153(A4),D1; !5:TH DIGIT!
ANDI.B #$0F,D1;
CMPI.B #$0F,D1;
BEQ.S L5;
ADD.B #$30,D1;
BRA.S L55;
L5:;
MOVEQ #$20,D1;
L55:;
MOVE.B D1,(A3)+;
MOVE.W #$2020,(A3)+; !ADD 3 SPACES FOR A NICER LOOK!
MOVE.B #$20,(A3)+;
MOVE.B #$8,$3E(A4);
CLR.L $42(A6);
MOVE.B $39(A4),$45(A6); !TNUMBER = PORT_LIM!
MOVEM.L A3/A4,-(SP); !CHEAT BY STORING REGISTERS ON THE STACK!
JSR PROGSTART+$2A3A; !DO CONVERTNUMBERTOASCII!
MOVEM.L (SP)+,A3/A4; !RESTORE REGISTER VALUES!
LEA.L $141(A0),A5;
MOVEQ #5,D2; !CASCIINUMBER IS RIGHTPADDED WITH SPACES!
ADD.B D2,$3E(A4); !SAVES US SOME OF THE TROUBLE OF ADJUSTING THE COLUMNS!
LOOP2:;
MOVE.B (A5)+,(A3)+;
DBF D2,LOOP2;
ADD.B #7,$3E(A4); !EXTRA PADDING NEEDED FROM PREVIOUS LOOP, WHAT THE HECK, DO IT HERE!
MOVE.L #$20202020,(A3)+; !PAD WITH SOME EXTRA SPACES, ALL FOR THE LOOK OF IT!
MOVE.W #$2020,(A3)+;
MOVE.B $154(A4),D0; !STATUS!
BEQ.S CASE0;
CMP.B #1,D0;
BEQ.S CASE1;
CMP.B #2,D0;
BEQ.S CASE2;
CMP.B #3,D0;
BNE.S OTHERWISE;
CASE0:;
ADD.B #4,$3E(A4);
MOVE.L #$49444C45,(A3)+; !IDLE!
BRA.S OTHERWISE;
CASE1:;
ADD.B #6,$3E(A4);
MOVE.L #$5345495A,(A3)+; !SEIZED!
MOVE.W #$4544,(A3)+;
BRA.S OTHERWISE;
CASE2:;
ADD.B #6,$3E(A4);
MOVE.L #$41435449,(A3)+; !ACTIVE!
MOVE.W #$5645,(A3)+;
BRA.S OTHERWISE;
CASE3:;
ADD.B #7,$3E(A4);
MOVE.L #$50415353,(A3)+; !PASSIVE!
MOVE.W #$4956,(A3)+;
MOVE.B #$45,(A3)+;
OTHERWISE:;
MOVE.B #1,$3D(A4); !PRINTSTA = END_OF_LINE!
MOVE.B #$15,$8F(A4); !PROSTA = FETDIRDATE_17!
MOVE.L A4,A3; !SET WORKPTR IN A3!
END; !REUSE OLD CODE!
!A;
/* FETLNKGRPRES */
PCASI:UNIT=CSTHH,REV=4-R2A,CI=S88881A,IA=5A0,RA=5A8,BYTE=8;
CMP.B #$13,D0; !PROSTA = CSTMP_10?!
BNE.S LEND; !NO, THEN CONTINUE IN OLD CODE!
JSR PROGSTART+$3686; !DO STORE_REC_LNK_GRPS!
JSR PROGSTART+$27D4; !CHECK_LGRP_ASSIGNED!
TST.B $58(A6); !TSUBRESULT!
BNE.S NOT_ASSIGNED;
MOVE.B $14(A6),D1;
ANDI.W #$FF,D1;
MULU.W #124,D1;
MOVEA.L $16(A6),A2;
MOVE.L A2,D2;
TRAPEQ.W #QFP;
MOVE.W D1,$10(A2); !FIRSTIODEVPTR = WORKPOINT * MAXLIMNO!
CLR.B $16(A2); !NUM_OF_IODEV = ZERO!
CLR.B $F(A2); !CURRENTLIM = ZERO!
JMP PROGSTART+$1CCE;
NOT_ASSIGNED:;
JMP PROGSTART+$1C60; !REUSE OLD CODE!
LEND:;
END;
!A;
/* FETDIRDAT_20 */
PCASI:UNIT=CSTHH,REV=4-R2A,CI=S88881A,IA=1CCE,RA=2234;
MOVEA.L $16(A6),A2;
MOVE.L A2,D2;
TRAPEQ.W #QFP;
ADD.B #1,$F(A2); !CURRENTLIM++!
MOVE.B $F(A2),D1;
MOVE.B $96(A1),D0; !CLASTLIMINUSE!
ANDI.L #$FF,D0;
ANDI.L #$FF,D1;
CLR.L $93(A2); !TOT_MON_JOBS = 0!
LOOP:;
CMP.L D0,D1;
BHI FINITO;
CMP.L #124,D1;
TRAPHI.W #QFI;
CMPI.B #1,($97,A1,D1.L); !CLIMVECTOR(TINDEX) = LIMEXIST?!
BNE.S NEXT;
TST.B ($2C,A0,D1.L); !CBLOCKEDLIM(TINDEX) = LIM_OK?!
BNE.S ELSE1;
BRA.S SENDFETDIRDAT;
ELSE1:;
CMP.B $E5(A0),D1; !TINDEX = COWNLIM?!
BNE.S ELSE2;
SENDFETDIRDAT:;
MOVE.B D1,$F(A2); !CURRENTLIM = TINDEX!
MOVE.B #$14,$8F(A2); !PROSTA = FETDIRDAT_10!
TRAPT.W #$12; !FETDIRDAT!
LEA.L $27(A2),A3; !PARAMETER_LGRP!
CLR.L D3;
MOVE.B (A3)+,D3;
CMP.B #14,D3;
BLS.S L1;
MOVEQ #14,D3;
L1:;
MOVE.B D3,(A5)+;
BEQ.S L2;
SUBQ.W #1,D3;
L3:;
MOVE.B (A3)+,(A5)+;
DBF D3,L3;
L2:;
CLR.B (A5)+; !CSTA!
MOVE.B $14(A6),(A5)+; !WORKPOINT!
MOVE.B (A2),(A5)+; !ADRCONTROL!
MOVE.L $93(A2),(A5)+; !TOT_MON_JOBS!
MOVE.W $E6(A0),(A5)+; !COWNUNIT!
MOVE.B $E5(A0),(A5)+; !COWNLIM!
MOVE.W #$A0,D0;
MOVE.W #$21F,D1;
MOVE.B $F(A2),D2; !CURRENTLIM!
TRAPT.W #$202;
TRAPT.W #$14; !EXIT!
ELSE2:;
MOVE.B #1,$38(A2); !PARTLY_EXECUTED = YES!
BRA.S FINITO;
NEXT:;
ADDQ.L #1,D1; !TINDEX++!
BRA LOOP;
FINITO:; !REUSE OLD CODE!
END;
!A;
/* PARFETRDY */
PCASI:UNIT=CSTHH,REV=4-R2A,CI=S88881A,IA=157C,RA=1582,BYTE=4;
CMP.B #3,D6;
BNE.S LEND;
MOVE.B #$13,$8F(A4); !PROSTA = CSTMP_10!
JMP PROGSTART+$1C36; !REUSE OLD CODE!
LEND:;
TST.B D6;
END;
!A;
PCASI:UNIT=CSTHH,REV=4-R2A,CI=S88881A,IA=258A,RA=2592,BYTE=8;
CMP.B #4,D7; !UPCOMING VIRTUAL PRINTRECORD, NEEDS SPECIAL ATTENTION!
BNE.S LEND;
MOVE.B #3,$3C(A4); !PRINTPOINT = 3, WILL ENSURE PROPER TERMINATION THE!
CLR.B $8F(A4); !NEXT TIME AROUND!
TRAPT.W #$12;
MOVE.W $9E(A4),(A5)+; !OCPOINTER AND OCADRCONTROL!
MOVE.B #1,(A5)+; !PRINTSTATE!
MOVE.B #28,(A5)+; !NBR OF BYTES!
MOVE.L #$4449524E,(A5)+; !A BUNCH OF TEXT!
MOVE.L #$4F202020,(A5)+; ! -"- !
MOVE.L #$494F4445,(A5)+; ! -"- !
MOVE.L #$562D4C49,(A5)+; ! -"- !
MOVE.L #$4D202020,(A5)+; ! -"- !
MOVE.L #$53544154,(A5)+; ! -"- !
MOVE.W #$5553,(A5)+; ! -"- !
JMP PROGSTART+$254C; !REUSE OLD CODE!
LEND:;
END;
!A;
PCASI:UNIT=CSTHH,REV=4-R2A,CI=S88881A,IA=25F4,RA=25FA,BYTE=6;
BEQ.S LEND;
CMP.B #3,$2(A5);
BNE.S LEND;
JMP PROGSTART+$1D2C; !GOTO FETDIRDAT_15!
LEND:;
END;
!A;
/* COMMAND RECORD 3 */
PCASI:UNIT=CSTHH,REV=4-R2A,CI=S88881A,SECTOR=REL,ADDR=189,DATA=0&5&43&53;
PCASI:UNIT=CSTHH,REV=4-R2A,CI=S88881A,SECTOR=REL,ADDR=18D,DATA=54&4D&50&3;
PCASI:UNIT=CSTHH,REV=4-R2A,CI=S88881A,SECTOR=REL,ADDR=191,DATA=6;
/* PARAMETER RECORD 3 */
PCASI:UNIT=CSTHH,REV=4-R2A,CI=S88881A,SECTOR=REL,ADDR=1E0,DATA=4&4C&47&52;
PCASI:UNIT=CSTHH,REV=4-R2A,CI=S88881A,SECTOR=REL,ADDR=1E4,DATA=50&0&0&0;
PCASI:UNIT=CSTHH,REV=4-R2A,CI=S88881A,SECTOR=REL,ADDR=1E8,DATA=1&FF&FF&FF;
PCASI:UNIT=CSTHH,REV=4-R2A,CI=S88881A,SECTOR=REL,ADDR=1EC,DATA=FF&0&1&0;
PCASI:UNIT=CSTHH,REV=4-R2A,CI=S88881A,SECTOR=REL,ADDR=1F0,DATA=1&1&E&1;
/* PRINT RECORD 4 */
PCASI:UNIT=CSTHH,REV=4-R2A,CI=S88881A,SECTOR=REL,ADDR=3F4,DATA=20&43&53&54;
PCASI:UNIT=CSTHH,REV=4-R2A,CI=S88881A,SECTOR=REL,ADDR=3F8,DATA=41&20&4D&4F;
PCASI:UNIT=CSTHH,REV=4-R2A,CI=S88881A,SECTOR=REL,ADDR=3FC,DATA=4E&49&54&4F;
PCASI:UNIT=CSTHH,REV=4-R2A,CI=S88881A,SECTOR=REL,ADDR=400,DATA=52&45&44&20;
PCASI:UNIT=CSTHH,REV=4-R2A,CI=S88881A,SECTOR=REL,ADDR=404,DATA=44&49&52&45;
PCASI:UNIT=CSTHH,REV=4-R2A,CI=S88881A,SECTOR=REL,ADDR=408,DATA=43&54&4F&52;
PCASI:UNIT=CSTHH,REV=4-R2A,CI=S88881A,SECTOR=REL,ADDR=40C,DATA=59&20&4E&55;
PCASI:UNIT=CSTHH,REV=4-R2A,CI=S88881A,SECTOR=REL,ADDR=410,DATA=4D&42&45&52;
PCASI:UNIT=CSTHH,REV=4-R2A,CI=S88881A,SECTOR=REL,ADDR=414,DATA=53;
PCASI:UNIT=CSTHH,REV=4-R2A,CI=S88881A,SECTOR=REL,ADDR=445,DATA=5&1;
PCACS:UNIT=CSTHH,CI=S88881A;
Y;
PCCOS:UNIT=CSTHH,CI=S88881A;
Y;