IMD 1.16: 31/08/2008 23:06:52 93055-03a1 f05503 naked mini-4, lsi-4/10S system diagnostic source/jcl files  ư@ٰ BӠٰ HʰٰP ʰٰP Ͱٰ P Ͱٰ H&"Ӱٰ P+Ӱٰ HYϰٰϰٰϰٰ°ٰ°ٰ(m/Q Q%(m](&@$2-$*"IJQ!2",)Q($J &!' %| )"""WS HLG!8FP1VY1C]OJL(NdbƁe"B!1> 1 1B")U1)T$U#"#H$L0P 22'm'p'r'u#% )oP2$U(D~ FCv  1 1B")U1)T$U#"#H$L0P 22'm'p'r'u#% )oP2$U(D~ FCv  1 1B")U1)T$U#"#H$L0P 22'm'p'r'u#% )oP2$U(D~ FCv 1>) 1)313 DFIiTV qHCECCݞsT 1A ,`@ , X)1)IÞSILjDD@NلQHC@+kT§ӧ󦢦1Ǡ砦)A0$ ✜6`pFCI #1A٠¬٠Ѡ٬ȰˠҠҠΠԠŠĠԠԠŠؠѠԠԠŠԠРȰԠŠŠԠԠԠȰՠ٠٠٠٬ԠǠ٠٬ ԠǠ§ԠԠǠԠȰՠ٠Ȱؠ٠جԱԠԠҠ٠ìԠҠԠƠĠҠȰŠԠӠРԠ ŠȰԠԠԠĠԠԠԠŠȰԠԠӠؠѠԠԠŠԠРԠԠԠԠԠԠŠ٠ɬؠ٠جԱŠԠԠӠǠԠȰՠԺȰȰԠ٠Ҭ٠ŠŠǠ٠٠ҠԠҠΠŠΠҠ٠ؠؠѠԠԠŠРجԠŠԠԺȰȰԠĠԠŠĠؠѠԠԠŠԠРРȰԠŠԠԠӠԠРȰԠԠȰ٠ؠؠѠРجԠĠԠԺȰȰԠ ؠѠԠԠŠԠРРȰԠŠԠԠĠŠԠРȰԠԠŠȰ٠ؠؠѠԠԠŠРجԠԠԠĠĠŠǠ٠ҬѠˠѬРԠŠǠĠŠŠ٠ҠǠ٠ҠԠĠĠŠǠ٠ҬѠˠѬРԠŠǠĠŠ٠ؠ٠̬ѠؠѠԠԠŠРجԠǠҠԠԺȰȰԠؠѠԠРԠĠԠԠԠԠŠؠѠԠ РԠŠԠԠԠԠŠؠѠԠРԠǠҠԠԠԠŠؠѠԠРԠԠԠԠԠԠȰՠ٠٬ҠŠŠǠ٠٠ҠԠĠŠŠǠӰŠԠҠȠŠàԺέ̠ǴՠĠ٠٬ҠŠŠǠ٠٠Ҡ̠ԭŠ͠ԠŠ̠͠ԭŠ͠ԠԠӠӠĠ٠ĠӠӠԠΠŠ Ҡ ҠҠҠŠàƳàԠƠĩàĴРӠԠӠŠ֠ԱԲĠΠРӠŠРЫРΠԠĠԠ̠͠ԠĠ٠РŠРĠРĠԠ̠͠ԠҠ̠éŠРЫРΠԠàԠàԠŠРàԠΠàΠԠԠ֠Š ŠԠԠԠɠҠàРŠӠРРũРΠԠ̠͠ԠˠРéРРũŠРΠԠ̠͠ԠͬҠĠŠӠĩӠŰĠԠŠӠŠӠҠ̠ŠŠԠՠԠ٠ìԠǠϠؠŠ٠ҠԠàΠŠŠ֠ՠԠŠ٠РŠǠ٠ì٠ҠŠԠҠ٠ì٠àŠΠҠ٠ЬŠΠǠԠӠŠàŠΠ֠ΠĠŠԠ ɠՠԠ٠ƬѠŠРѬԠ̠ҠŠҠՠŠԠԠӠ٠à٠ҬӠҠ٠٠ŠРƱԠӠԠӠΠҠ̠ԭŠΠŠΠ̠͠ƠŠԠĠҠΠΠǠΠՠԺԠΠ٠֬ŠΠ٠ӠԠӠŠٺŠ٠٠ԠǠҠԠŠРΠǠԠԠҠԠϠȠРРΠŠ Ӱՠ٠ìԠҠԠҠҠҠĠͰӰ٠ѠԠҠРΠРӰˠŠŠͰԠŠԠŠ٠٠ԠǠԠӠРˠԠРΠĠΠͰŠŠӰԠӠРˠ٠٠ؠ٠Ѡ٠٠٬̠ŠٺŠԠԠҠԠҠΠŠӰՠ٠֬Π٠Ӡ٠Ƭ٠ˠŠŠٺŠ٠٠ԠԠҠԠРӰРŠҠЪ٠ŠРӰ̠ ҠΠӰՠŠ٠٠ƬѠРȠԠРӰŠǠРРٺŠŠԠԠҠԠҠΠРӰ̰Š̰Ӱՠ٠̰٠ҠԠ٠Ӡ٠Ѡ٠Ѭ٠Ԡ٠ѠŠŠѬԠҠԠ٠ҬؠˠؠŠ̠ׯĠР٠ѠѽӠŠ٠Ѭ٠ѠŠ٠Ѭ٠ԠƠΠٺŠ٠ѠŠѬԠҠԠРӰРŠҠЪŠ ٠٠̰٠٠̰РӰŠҠΠӰՠ٠̰٠ҠԠ٠Ӡ٠Ѡ٠Ѭ٠ԠŠŠٺРΠӰՠŠ٠ӰԠРΠĠ٠РԠĠҠŠӰРРҠĠԠŠҠРРŠŠٺŠ٠ѠѠѬԠРӰ̠̠ԠԠΠŠŠԠǠԠӰՠ٠ΠΠĠɠӠΠ٠ӠԠӠŠ٠Ӱ٠ԠԠԠ̠٠ìԠҠƭĠ ҠӰŠٺŠŠ٠Ѡ٠Ѭ٠ԠРԠӰԠŠԠŠԠӠРˠŠ٠ؠ٠ج Ԡ ҩРӰŠӰԠԠŠԠӠРˠӰРѬƠԠɠԠŠŠٺŠ٠٠٠ԠŠԠԠǠԠӰՠ٠РƹΠƠԠԠӠΠ٠ɬŠ٠ԠԠנԠ̠٠ԱРƠԠԠŠٺŠРӰŠ̠ǠԠӰՠ٠ӰŠ ٠ҠĠǠԠϠԠŠٺ ԠŠӰՠŠ٠֬Π٠ӠԠӠŠٺàŠРέŠĠ٠ӠԠӠŠٺàŠРέŠǴ Ǵ ~ž<8T&Wdd? /p5`ab6V7 ( :ӂP - :ӂ" )   ȦpP0 @0B %` h !}cF «⫂pP0/o M D B U G 4 B 1 ӟi 7}ǺǺǺǺǺǺǺǺǺǺǺǺ ǺàǺĠǺŠǺƠǺǠǺȠǺɠǺʠǺˠǺ̠Ǻ͠ǺΠǺϠǺРǺѠǺҠǺӠǺԠǺՠǺ֠ǺנǺؠǺ٠Ǻڠ ӂzӾ P AC Q@ X= Y:ԽѾ K3 L0 S- D* C'ԟK =ӟ{ } ӟ|" *ٽ҆ Gҽ؆ R ƜƘ™LBLCLFLLLSLJLILGLRȝ ǞJ =} _ٞ Ğ|QEo , ,oс熂՟ ` JTߞւ [ޏ @ލދ ` ,p\Bs o7| xj D `枊oc B `ǁ D瞄*`riQ `ĢO*MG Er "Bƽу۽ֽˁCā / XŃ ѽ۞i ]с߆@ڃ۽ցBǢ ,ž[ + - * X /KJƎߞ^ߞ[{ xނZ ,ş|˽с߆۽ޅ{ўu ,Žֆx@FC pqLL (w{u dޅJQB`y߾ˆzxo| IƎQ ,ŽƇ ,ƂpIưk , ,Htr Hm -ņց -ņ߆CB\\ÂF -0tт5ڃ3Ԟx ’@"Fz@ Ό F ō l#߆.bƝޙޖJQ!’ފދJQĽ %ӂԞu U B * ӂGo h fe "cIaM K Y&V&RR `QKL$kK N =ӂDD GӂA   :Ӟ ӟL   ǟ{ y9u    :w ® 0C C 96C C "0 `j •࢒C "C tC I6  W  'ĀA х   AqE       A`           >UU@ffv  sp Nj   b` 0  YY O>I II  IQ>QA IQ>Ai/ (   @  j     @+ iiq C q>qE C  i% 7   WC  )T% E Q )C $ P C  )C $ \C^ C  )C $1 )M@ )C $ ~ C  C  C  C    90                                                        ࢒C "C tC I6 W zW ¡P` `d h  h 0p `.d h  h mRUUQff | |IJ `>d h  h UUIQ+II `Nd h  hQQcNbbI `^d h ? h  `nd h  hQ>VW P0!0 `~d h  hI W) WD `d h h   M  `d h h `d h h 0 `d h h ¡P` `d h  h 0p `.d h  h mRUUQff | |IQ `>d h  h UUIQ+II `Nd h  hQQcNbbI `^d h ? h  `nd h  hQ>VW P   $@$%T@  )C $C | C $  g b4 ) C $C |qpFWdΞ e )C $C |srFWK g  $Y@ _}_{Ux6 0     ">  W  'ĀA х   AqE-            r     >UU@ffv  sp Nj   b` 0  YY O>I II  IQ>QA IQ>Ai/ (   @  j     @+ iiq C q>qE C  i% 7   WC  )T% E Q )C $ P C  )C $ ^ C  )C $1 n )M@ )C $ ~ C  C  C  C    90 ~ž<8T&Wdd? /p5`ab6V7 ( :ӂP - :ӂ" )   pP0 @0B %` h !}cF «⫂pP0/o M D B U G 4 B 1 ӟi 7} ӂzӾ Pj AC Q@ X= Y:ԽѾ K3 L0 S- D* C'ԟK =ӟ{ } ӟ|"  *ٽ҆ Gҽ؆ R ƜƘ™LBLCLFLLLSLJLILGLRȝ ǞJ =} _ٞ Ğ|QEo , ,oс熂՟ ` JTߞւ [ޏ @ލދ ` ,p\BsM o7| xj D `枊oc B `ǁ D瞄*`riQ `ĢO*MG Er "Bƽу۽ֽˁCā / XŃj ѽ۞i ]с߆@ڃ۽ցBǢ ,ž[ + - * X /KJƎߞ^ߞ[{ xނZ ,ş|˽с߆۽ޅ{ўu ,Žֆx@FC pqLL (w{u dޅJQB`y߾ˆzxo| IƎQ ,ŽƇ ,ƂpIưk , ,Htr Hm -ņց -ņ߆CB\\ÂF -0tт5ڃ3x ’@"Fz@ Ό F ō l#߆.bƝޙޖJQ!’ފދJQĽ %ӂԞuf U B * ӂGo h fe "cIaM K Y&V&RR `QKL$kK N =ӂDD GӂA   :Ӟ ӟL ǟ{ y9u    :w ® 0C C 96C C "0 `j •࢒C "C tC I6 W zW ¡P` `d h  h 0p `.d h  h mRUUQff | |IQ `>d h  h UUIQ+II `Nd h  hQQcNbbI `^d h ? h  `nd h  hQ>VW PY0! `~d h  hI W) WD `d h h   M  `d h h `d h h 0 `d h h777777777777777777777777777777777IALIZE COLUMN NO. RTST1 JSK IN GET CHAN STATUS COPY =RTSTAT+7,Y LOCN IN BUFFER EXCH X,RTSTMP SWAP CHAN AND COLUMN NUMBER JSK CTH CONVERT STATUS TO HEX ADD =1,X SKIP A COLUMN EXCH X,RTSTMP SWAP AGAIN ADD =1,X INCR TO NEXT CHAN IMS RTSLC CHECK LOOP JMP RTST1 JUMP TO LOOP * COPY =54,X LINE LENGTH (BYTES) COPY =RTSTAT,Y BUFFER ADDR JSK PRINT PRINT THE BUFFER COPY CFLG,Q GET CONTINUATION FLAG JNE Q,$+2 SKIP IF SET JMP COMND GO PROCESS NEXT COMMAND COPY =2,A WAIT INTERVAL JST TRDLIN TIMED READ NOP DO NOTHING SPECIAL COPY BRK,A GET BREAK FLAG JEQ A,$+2 SKIP IF NO BREAK JMP COMND ELSE, DO ANOTHER COMMAND COPY =1,A GET ONE COPY A,LINTOT SET UP FOR CURSOR MOVE JSK BACKUP BACK UP CURSOR ONE LINE JMP RTST0 LOOP RTSLC RES 1 LOOP COUNT CELL RTSTMP RES 1 TEMP CELL RTSTAT WORD :0A0D LF-CR BYTE 'R/T STATUS ' RES 20,:2020 REST OF PRINT BUFFER LPOOL TITL SCREEN COMMENT (H) * * OUTPUT HOLLERITH MESSAGES FROM PROGRAM STRING * HOLL COPY =OBUF,A ADDR OF BUFFER COPY A,CBTW SET UP CBT PARAMETER COPY =2,A COL TWO COPY A,CBTB CBT PARAMETER COPY =-OBUFL+1*2,Q GET MAX LENGTH JSK CBTCK COPY STRING TO FIRST CR OR PERIOD JSK CTRM CLOSE COMMAND COPY =:0A0D,A LF-CR COPY A,OBUF PUT IN BUFFER COPY =OBUF,Y ADDR OF MSG COPY CBTB,X LENGTH SUB =1,X DON'T PRINT PERIOD OR CR JSK PRINT OUTPUT JMP COMND GO DO NEXT COMMAND LPOOL TITL CRT PRINT ROUTINE * * CRT PRINT ROUTINE * * THIS ROUTINE DELAYS UNTIL ANY PREVIOUS CRT PRINT FUNCTION HAS * COMPLETED. IT THEN COPIES THE USER BUFFER INTO A LOCAL BUFFER * AND INITIATES THE NEXT PRINT FUNCTION TO THE CRT. RETURN IS * THEN MADE TO THE CALLER WHILE THE OUTPUT IS IN PROGRESS * (COMPUTING AND OUTPUT ARE OVERLAPPED). * * Y = WORD ADDR OF THE USER BUFFER ON ENTRY * X = BYTE OFFSET OF LAST CHAR + 1 IN THE BUFFER (= NUMBER * OF CHARS TO BE PRINTED) * * IF THE BREAK KEY IS DEPRESSED DURING OUTPUT, THE 'BRK' FLAG *  IS SET WITH :7F . * PRINT COPY YIO,A GET CRT PRESENCE FLAG JNE A,$+2 SKIP IF THERE RSK ELSE, DON'T TRY COPY OBSY,A GET BUSY FLAG JNE A,$-1 LOOP IF BUSY * COPY AOB,A GET OUTPUT INSTR COPY A,TVIO PUT IN PLACE NEG X,A GET NEG BYTE COUNT COPY A,TVIO+1 PUT IN PLACE COPY A,LPO+1 PUT IN PRINTER BLOCK, TOO. COPY STRNGA,A GET BYTE BUFFER ADDR-1 COPY A,TVIO+2 PUT IN PLACE COPY A" ,LPO+2 PUT IN PRINTER BLOCK COPY OJMP,A GET EOB JUMP INSTR COPY A,TVIO+4 PUT INTO BLOCK COPY =PRINT1,A BRANCH ADDR COPY A,TVIO+5 PUT INTO BLOCK ADD =1,X FORM COVERED QUOTIENT BY 2 SHIFT X,RO,1 GIVING WORD COUNT NEG X,Q FOR LOOP CONTROL COPY =STRING,X DESTINATION EXCH X,Y SWAP FOR BT JSK BT PERFORM BLOCK TRANSFER * COPY HCRT,A GET FLAG JNE A,PRLP IF SET, SKIP CRT OUTPUT  COPY =:0612,A OUTPUT FUNCTION IMS OBSY INCR ACTIVITY FLAG *CRIT SEQ* OUT A,TV+1 START IT UP *CRIT SEQ* PRLP COPY LPF,Q GET LINE PRINTER FLAG JEQ Q,PRXIT EXIT IF NO USAGE COPY LPALF,Q GET AUTO LINE FEED FLAG JEQ Q,PRLP1 GO AHEAD AND START IF NOT COPY OBSY,A GET BUSY FLAG JNE A,$-1 ELSE, WAIT FOR CRT TO FINISH COPY STRING,A GET 1ST CHAR ROTATE A,L,8 RIGHT JUSTIFY CLSN A,=:0A LINE FEED? ADD =:16,A CONVERT LF TO BLANK ROTATE A,L,8 RE-JUSTIFY COPY A,STRING REPLACE PRLP1 COPY =:0210,A GET FUNCTION FOR PRINTER IMS OBSY INCR ACTIVITY FLAG *CRIT SEQ* OUT A,LP+1 START PRINTER *CRIT SEQ* PRXIT RSK RETURN PRINT1 PUSH :40 SAVE CONTEXT IN TV+1,A GET STATUS AND =:20,A MASK OFF ALL BUT FRAME ERR JEQ A,PRINT2 IF NO BREAK, GO ON COPY =:7F,A GET DEL COPY A,BRK RESTORE JST BRKWT GO WAIT TO LET BREAK CLEAR PRINT2 JSK DECBSY DECR BUSY FLAG POP RESTORE CONTEXT RSK RETURN AFTER INTRPT LPINT PUSH :40 EOB FOR LINE PRINTER JSK DECBSY DECR BUSY FLAG POP RESTORE CONTEXT RSK RETURN AFTER EOB INTRPT DECBSY SIN 4 MAKE 4 INSTR NON-INTERRUPTIBLE COPY OBSY,A GET BUSY FLAG SUB =1,A DECR JGE A,$+2 MAKE SURE NO ACCIDENTS COPY =0,A DON'T ALLOW LESS THAN ZERO COPY A,OBSY RESTORE RSK RETURN LPF WORD 0 SET TO TURN ON PRINTER LPALF WORD 0 SET FOR AUTO LINE FEED PRINTER HCRT RES 1 TO HOLD CRT INTS BRK RES 1 SET IF BREAK OCCURED OBSY RES 1 SET IF OUTPUT IN PROGRESS OJMP JSK *$+1 EOB JUMP INSTR AOB AOB TV OUTPUT INSTR STRNGA WORD STRING*2-1 BYTE ADDR FOR LINE STRINL EQU 40 LENGTH OF OUTPUT LINE (WORDS) STRING RES STRINL OUTPUT BUFFER LPOOL * * ROUTINE TO ISSUE A PROMPT * PROMPT COPY =PRMPT,Y ADDR OF MESSAGE COPY =PRMPTL,X CHARS JSK PRINT RSK RETURN PRMPT WORD :0A0D LF-CR BYTE '->' PRMPTL EQU $-PRMPT*2 BYTE LENGTH * * ROUTINE TO MARK A BREAK ON INPUT * MBREAK COPY =MBRK,Y ADDR OF MESSAGE COPY =MBRKL,X LENGTH IN BYTES JSK PRINT OUTPUT RSK RETURN MBRK BYTE '' MBRKL EQU $-MBRK*2 BYTE LENGTH * * ROUTINE TO PRINT A LINE FEED * PLINE COPY =PLN,Y ADDR OF MESSAGE COPY =1,X LENGTH OF MESSAGE JSK PRINT OUTPUT RSK RETURN PLN WORD :0A00 LF-NULL * * ROUTINE TO PRINT BAD MESSAGE * PRBAD COPY =PBD,Y ADDR OF MESSAGE COPY =PBDL,X LENGTH OF MESSAGE JSK PRINT PRINT MESSAGE RSK RETURN PBD WORD :0A0D LF-CR WORD :0720 BEL-SPC BYTE 'BAD' PBDL EQU $-PBD*2 BYTE LENGTH LPOOL TITL  CRT READ ROUTINE * * CRT READ ROUTINE * * THIS ROUTINE FILLS THE CRT INPUT BUFFER WITH BLANKS. * THEN A DELAY IS PERFORMED UNTIL ANY OUTSTANDING PRINT IS FINISHED * A READ IS THEN INITIATED. CONTROL IS NOT RETURNED UNTIL END- * OF-BLOCK. STATUS IS RETURNED IN CELL RDSTAT. * * MAIN ENTRY IS RDLIN: * RETURN IS TO +1 IF A BREAK WAS DETECTED * RETURN IS TO +2 IF NO BREAK WAS DETECTED * * ALTERNATE ENTRY IS TRDLIN, WHICH ALLOWS SETTING NON-INFINITE * DELAY TO WAIT FOR SINGLE CHARACTER RESPONSE FROM OPERATOR. * IN THIS CASE THE A REG MUST CONTAIN THE APPROPRIATE COUNT * UPON ENTRY TO TRDLIN (SEE WAIT LOOP BELOW TO CALCU# LATE VALUE). * ONE CHARACTER FROM THE CA INPUT BUFFER WILL CAUSE EOB. * IF THE WAIT LOOP EXPIRES WITH NO RESPONSE, * RETURN IS MADE TO +1. * IF ANY RESPONSE WAS RECEIVED (INCLUDING BREAK), THEN * RETURN IS MADE TO +2. * THE CHAR IS STORED IN BRK. IF THE RESPONSE WAS BREAK, * A :7F (DEL) IS STORED IN BRK. * TRDLIN ENT ALTERNATE ENTRY COPY YIO,Q GET CRT PRESENCE FLAG JNE Q,$+2 SKIP IF THERE JMP RNIO ELSE, GO DO SPECIAL THINGS COPY TRDLIN,Q RETRIEVE RETURN ADDR COPY Q,RDLIN PUT IN ITS PROPER PLACE JMP RSIDL GO SET DELAY RDLIN ENT COPY YIO,A GET CRT PRESENCE FLAG JNE A,RDLIN1 JUMP IF THERE COPY =1,Q GET STOP FLAG HLT DON'T ALLOW SUCH CALLS W/ NO CRT RDLIN1 JSK CURN TURN ON CURSOR COPY =0,A GET ZERO RSIDL COPY A,IDLAY SET DELAY COPY =IBUF,Y ADDR TO INDEX COPY =-IBUFL,Q -WORD COUNT JSK BLANK BLANK THE BUFFER * COPY OBSY,A GET PRINT BUSY FLAG JNE A,$-1 LOOP TILL CLEAR * COPY AIB,A GET INPUT INSTR COPY A,TVIO PUT INTO VECTOR ADDR COPY =-IBUFL*2,A GET BYTE LENGTH (MAX) COPY IDLAY,Q GET DELAY COUNT JEQ Q,$+2 SKIP IF INFINITE COPY =-1,A IF TIMED, GET ONE CHAR COPY A,TVIO+1 PUT INTO BLOCK COPY IBUFA,A GET CONSTANT FOR BUFFER COPY A,TVIO+2 INTO BLOCK COPY IJMP,A GET EOB JUMP INSTR COPY A,TVIO+4 PUT AT EOB INTRPT ADDR COPY =RDINT,A GET BRANCH ADDR COPY A,TVIO+5 PUT INTO BLOCK COPY =:0E18,A GET READ FUNCTION (EOB ON CR) COPY IDLAY,Q GET DELAY FLAG JEQ Q,$+2 SKIP IF NOT DELAY TYPE COPY =:0610,A OMIT AUTO-ECHO AND CHAR MATCH COPY A,IBSY SET BUSY FLAG *CRIT SEQ* OUT A,TV+1 INITIATE FUNCTION *CRIT SEQ* * COPY IDLAY,Q GET DELAY VALUE COPY Q,Y SAVE IT ADD RTC,Q FORM FINAL RTC VALUE RBSL COPY IBSY,A GET BUSY FLAG JEQ A,RGOT DONE!!! JEQ Y,RBSL LOOP IF DELAY INFINITE SPACE 1 COPY Q,A DUPLICATE VALUE SUB RTC,A FORM DIFF WITH CURRENT RTC JGT A,RBSL LOOP IF TIME NOT EXPIRED COPY =:0100,A PICO RESET FUNCTION OUT A,TV+1 SEND IT IN TV+1,A GET STATUS TBIT 4,A TEST PROPER BIT JF OV,$-2 LOOP IF NOT COMPLETED JMP *RDLIN TAKE 'BREAK' EXIT LPOOL TITL RGOT COPY TVIO+2,A GET CURRENT BUFFER LOCN SUB IBUFA,A LESS INITIAL VALUE COPY A,RDSIZE SAVE LENGTH OF STRING COPY IDLAY,Q GET DELAY COUNT JNE Q,RRTN TIMED? COPY =1,A GET NON-ZERO COPY A,HCRT HOLD CRT PRINT COPY =IBUF,Y MSG LOCN COPY RDSIZE,X AND LENGTH JSK PRINT OUTPUT TO PRINTER, IF ENABLED COPY =0,A GET ZERO COPY A,HCRT RESET FLAG JSK CURF TURN OFF CURSOR COPY RDSTAT,A GET READ STATUS FROM CRT TBIT 5,A CHECK BREAK BIT JT OV,RBRK JUMP IF BREAK IMS RDLIN TAKE NORMAL EXIT JMP *RDLIN EXIT RBRK JSK MBREAK 'ECHO' IF SO JMP *RDLIN TAKE BREAK EXIT SPACE 1 RRTN IMS RDLIN INCR EXIT COPY IBUF,Q GET CHAR SHIFT Q,RO,8 ISOLATE AND =:7F,Q STRIP ANY PARITY COPY Q,BRK SET UP BREAK FLAG COPY =:7F,Q GET DEL COPY RDSTAT,A GET STATUS TBIT 5,A CHECK FOR BREAK JF OV,$+2 SKIP IF NOT COPY Q,BRK SET BREAK FLAG JMP *RDLIN EXIT TITL * * SPECIAL THINGS TO DO FOR TRDLIN WHEN CRT ABSENT * RNIO JF SS,$+2 DO 'BREAK' IF SW RESET  JMP *TRDLIN ELSE, SIMULATE 'NO RESPONSE' IMS TRDLIN TAKE 'REPONSE FOUND' EXIT COPY =:0D,A GET CR COPY A,BRK SIMULATE CR BREAK FROM CRT COPY =0,A GET ZERO COPY A,RDSTAT IN CASE ANYONE CHECKS COPY =1,A GET ONE COPY A,RDSIZE FOR CHAR COUNT OUT A,:0 SET SS AGAIN JMP *TRDLIN RETURN LPOOL * * END OF BLOCK INTERRUPT PROCESSING * RDINT PUSH :40 SAVE CONTEXT IN TV+1,A GET STATUS$  FROM PICO COPY A,RDSTAT STORE FOR IN-LINE CODE TBIT 5,A GET FRAME ERR BIT JF OV,$+2 'BREAK' OCCUR? JST BRKWT GO WAIT TO LET BREAK CLEAR COPY =0,A GET ZERO COPY A,IBSY RESET BUSY FLAG POP RESTORE CONTEXT RSK RETURN IBUFL EQU 40 INPUT BUFFER LENGTH IBUFA WORD IBUF*2-1 INITIAL BYTE ADDR IBUF RES IBUFL INPUT BUFFER WORD :5F0D BACK ARROW-CR IJMP JSK *$+1 EOB JUMP INSTR IBSY RES 1 INPUT BUSY FLAG RDSTAT RES 1 HOLD READ STATUS RDSIZE RES 1 HOLD SIZE OF READ STRING AIB AIB TV AUTO INPUT INSTR IDLAY RES 1 DELAY LOOP COUNTER LPOOL TITL !!!!! ALLOCATION BOUNDARY!!!!! * * ALLOCATION BOUNDARY * ENDPART1 EQU $ MARK THE END ABS PART2 START NEXT SECTION HERE IFT $-ENDPART1<0 ALLOCATION ERROR? NOTE E,'ALLOCATION ERROR' ENDC BUFFSV RES TBUFL BUFFER SAVE AREA TITL AUTO I/O INTERRUPT LOCATIONS BIAS EQU $ INITIAL ADDR OF VECTOR BLOCK * * AUTO I/O INTERRUPT LOCATIONS * VP AOT,0 VP AOT,1 VP AOT,2 VP AOT,3 VP AOT,4 VP AOT,5 VP AOT,6 VP AOT,7 VP AIN,8 VP AIN,9 VP AIN,10 VP AIN,11 VP AIN,12 VP AIN,13 VP AIN,14 VP AIN,15 TITL FIXED LOCATION TABLES * * STATUS TABLE * * 16 WORDS * STAT RES 16 * * INITIAL CHANNEL COMMANDS * *  8 WORDS * INSTR RES 8 RES 8,:FFFF DUMMY * * INTERRUPT CHANNEL COMMANDS * * 16 WORDS * IINSTR RES 16 * * BYTE COUNT TABLE * BC RES 16 * * BYTE COUNT ON LAST EOB * OBC RES 16 * * BUFFER LOCN TABLE * BL RES 16 * * BUFFER LOCATION POINTER ON LAST EOB * OBL RES 16 * * INCREMENT TABLE SHOWS ACTIVITY * * HALF-CHANNEL ENTRY IS INCREMENTED AT END-OF-BLOCK * INC RES 16 * * BUFFERS * BUFF RES TBUFL * * CHANNEL ACTIVATE MASK * * BIT 2^N CAUSES INITIAL ACTIVATION OF CHAN N * BIT MASK NOT USED FOR COMMAND REFRESH (DURING EOB INTRPT) * CHAN RES 1 BITS FOR ACTIVE CHANS * * INITIAL PROGRAM TO EXECUTE WHEN CRT IS NOT PRESENT * INTPRG WORD :B RES 1,:FFFF DUMMY * * STORED OPTION TABLE * OPTBL EQU 8 LENGTH OF STORED OPTION TABLE OPTABR WORD :23,:DD,:3A,:37,0,0,0,0 REFRESH SOURCE OPTAB RES OPTBL TABLE FOR USE * * STORED SPECIAL CHARACTER TABLE * SPCTBR WORD :3B,:0D 2 CR'S SPCTB RES 2 SPECIAL CHARACTER TABLE * * DEVICE ADDRESS * DV WORD :7 DEFAULT TO 7 TITL HALF-CHANNEL EOB ROUTINES * * END OF BLOCK HEADER ROUTINES * EOB0 EP 0 EOB1 EP 1 EOB2 EP 2 EOB3 EP 3 EOB4 EP 4 EOB5 EP 5 EOB6 EP 6 EOB7 EP 7 EOB8 EP 8 EOB9 EP 9 EOB10 EP 10 EOB11 EP 11 EOB12 EP 12 EOB13 EP 13 EOB14 EP 14 EOB15 EP 15 TITL RE-ENTRANT INTERRUPT AND DEVICE HANDLERS * * COMMON EOB ROUTINE * *  (RE-ENTRANT) * * X CONTAINS THE HALF-CHANNEL NUMBER * EOB EQU $ COPY =INC,Y TABLE ADDR IMS 0(X,Y) INCREMENT CONTENT OF ENTRY NOP DON JSK IN GET CHANNEL STATUS PUTX A,STAT STORE STATUS IN TABLE JSK RF REFRESH AIO BLOCK COPY =IINSTR,Y TABLE HEADER  JSK OUT INITIATE OUTPUT POP RESTORE CONTEXT RSK AND EXIT TO PREVIOUS CONTEXT * * REFRESH AIO BLOCK * * (RE-ENTRANT) * *  X CONTAINS THE HALF-CHANNEL PARAMETER * RF EQU $ COPY X,Q COPY PARAMETER SHIFT Q,LO,3 TIMES 8 ADD =BIAS,Q ABSOLUTIZE TO AIO BLOCK GETX BC,A GET PROPER BYTE COUNT NEG A,A FORM NEG COPY Q,Y MOVE TO INDEX EXCH A,1(Y) REFRESH BYTE COUNT PUTX A,OBC STORE OLD VALUE IN TABLE GETX BL,A GET PROPER BUF LOCN SUB =1,A LESS ONE COPY Q,Y MOVE TO INDEX EXCH A,2(Y) REFRESH BUFFER LOCN PUTX A,OBL SAVE OLD VALUE IN TABLE RSK RETURN * * INITIATE FUNCTION ROUTINE * * (RE-ENTRANT) * * Y CONTAINS INSTRUCTIO% N TABLE ADDRESS * X CONTAINS HALF-CHANNEL PARAMETER * OUT COPY 0(X,Y),A LOAD FUNCTION COPY X,Y COPY CHAN INDEX AND =:7,Y ISOLATE TRUE CHANNEL SHIFT Y,LO,1 DOUBLE ADD DVX4,Y INSERT DEVICE ADDR XNX Y INDEX NEXT INSTR OUT A,1 SEND OUTPUT FUNCTION RSK RETURN * * STATUS READ ROUTINE * * (RE-ENTRANT) * * X CONTAINS HALF-CHANNEL PARAMETER * A CONTAINS STATUS ON RETURN * IN COPY X,Y COPY HALF-CHAN NUMBER AND =:7,Y SHIFT Y,LO,1 TIMES 2 ADD DVX4,Y INSERT DEVICE ADDR XNX Y INDEX NEXT INSTR IN 1,A LOAD STATUS RSK RETURN LPOOL TITL UTILITIES * * TURN CURSOR ON AND OFF * CURN COPY =:13,A GET CTRL-S (TURNS ON CA CRT CURSOR) JMP $+2 SKIP CURF COPY =:14,A GET CTRL-T (TURNS OFF CA CRT CURSOR) ROTATE A,L,8 LEFT JUSTIFY COPY A,CURMSG STORE IN MEMORY COPY =0,A GET ZERO EXCH A,LPF SAVE AND RESET LIN PRT FLAG COPY A,LPFSAV ETC. COPY =CURMSG,Y ADDR OF MSG COPY =1,X ONE CHAR JSK PRINT PUT IT OUT COPY LPFSAV,A GET SAVED LPF COPY A,LPF RESTORE RSK RETURN LPFSAV RES 1 SAVE LPF HERE CURMSG RES 1 HOLD CURSOR CONTROL CHARACTER LPOOL * * ROUTINE TO DELAY ABOUT 2/3 SECOND * * THIS ROUTINE MUST BE CALLED WITH THE STACK POINTER POSITIONED * TO RETURN (VIA POP AND RSK) FROM THE CURRENT LOGICAL INTERRUPT. * BRKWT ENT ENTER ON JST (NON-REENTRANT) COPY =-80,Q GET 2/3 SECOND COPY Q,RTC SET UP CLOCK COUNT COPY =BRKRTN,Q GET INTRPT ADDR COPY Q,RTC+2 SET UP JUMP ADDR COPY BJMP,Q GET ARMING JUMP INSTR COPY Q,RTC+1 ARM THE CLOCK POP RESTORE CALLERS CONTEXT RSK AND RETURN TO POINT OF INTRPT * BRKRTN PUSH :40 SAVE CONTEXT SIN 1 HOLD INTS FOR CRITICAL SEQ COPY =0,Q GET ZERO COPY Q,RTC+1 DISABLE JUMPS (NOP AT VECTOR) JMP *BRKWT RE-CALL USER CODE BJMP JSK *$+1 FOR CLOCK JUMP LPOOL * * GIVE IDENTIFIED HEX DUMP OF A TABLE * * AQ = 4 CHARS ID Y = TABLE ADDR  X = -WORD COUNT * * ON RETURN, LINTOT CONTAINS THE NUMBER OF LINES PRINTED * LINE COPY X,LINECT SAVE WORD COUNT COPY A,OBUF+2 STORE 1ST WORD OF ID COPY Q,OBUF+3 STORE 2ND WORD OF ID COPY Y,LINADD SET UP LINADD COPY =:0A0D,A GET LF-CR COPY A,OBUF PUT IN OUTPUT BUFFER COPY =:3E20,A GET LINE INDICATOR COPY A,OBUF+1 PUT IN PLACE COPY =:2020,A WORD OF BLANKS COPY A,OBUF+4 BLANK CERTAIN PARTS OF LINE COPY =:3D20,A EQUALS-BLANK COPY A,OBUF+7 ETC. COPY =0,A GET ZERO COPY A,LINTOT INITIALIZE LINE COUNT LINELP COPY =OBUF+8,Y INDEX TO START BLANKING COPY =-20,Q WORD COUNT JSK BLANK BLANK OUT REST OF LINE COPY =10,X SET UP BYTE INDEX COPY =OBUF,Y SET UP INDEX TO BUFFER COPY LINADD,A GET ADDRESS TO EDIT JSK CTH CONVERT TO HEX ADD =2,X SKIP TWO COLS COPY =-8,Q MAX LOOP COUNT CSK Q,LINECT COMPARE TO WHAT'S LEFT COPY LINECT,Q USE LESS, HERE NOP NO CHANGE JSK CBTH CONVERT A BLOCK COPY =56,X LINE LENGTH (MAX) JSK PRINT PRINT THE LINE IMS LINTOT INCR LINE COUNT JSK ERSLP ERASE THE LINE POINTER COPY =2,A WAIT SOME HUNDREDTHS OF SEC JST TRDLIN OPERATOR HAVE ANYTHING? NOP DON'T CARE HERE COPY LINECT,Q GET REMAINING COUNT ADD =8,Q LESS MAX DO-ABLE COPY Q,LINECT RESTORE, IN CASE JGE Q,LXIT EXIT IF NO MORE TO EDIT COPY BRK,A GET BREAK FLAG JEQ A,LINELP LOOP IF NOT SET COPY LINECT,Q GET COUNT REMAINING CSK Q,=-25*8 MORE THAN SCREEN FULL? COPY =-25*8,Q YES. LIMIT MAGNITUDE OF Q NOP COPY Q,LINECT UPDATE CELL JMP LINELP LOOP LXIT RSK RETURN * ERSLP COPY LINCTL,A GET CTRL FOR UPAROW SHIFT A,RO& ,8 RIGHT JUSTIFY CLSN A,=:1A PROBABLE 'ADS' CRT? RSK YES, DON'T MAKE FLICKER COPY =ERSLPS,Y STRING ADDR COPY =4,X 4 CHARS JSK PRINT PUT THEM OUT RSK RETURN ERSLPS WORD :0A0D LF-CR LINCTL RES 1,UAC%8+:20 CONTAINS UP-ARROW+BLANK LINECT RES 1 WORD COUNT LINTOT RES 1 LINE COUNTER OBUFL EQU 40 LENGTH OF BUFFER OBUF RES OBUFL OUTPUT BUFFER LPOOL TITL START MUX (S) * * START UP MUX * BEGIN COPY CHAN,A GET CURRENT CHAN MASK JEQ A,BEGPRT ALWAYS PRINT IF ZERO CSK A,CHANSV ELSE, IS SAME AS LAST TIME? NOP JMP $+2 NO. JMP BEGIN1 YES. GO ON BEGPRT COPY A,CHANSV UPDATE SAVE REGISTER COPY CHANID,X GET 1ST WORD OF ID COPY CHANID+1,Y GET 2ND WORD JSK PRMASK LIST CHANNEL MASK BEGIN1 COPY =0,X INITIALIZE INDEX COPY =-16,A LOOP COUNT COPY A,LC SET UP COUNTER LOOP JSK RF REFRESH AIO BLOCK COPY =:FFFF,A GET ALL BITS PUTX A,STAT STORE INTO PROPER SLOT PUTX A,OBC PREP OLD BYTE COUNT PUTX A,OBL PREP OLD BUFFER LOCN ADD =1,X INCR INDEX IMS LC LOOP TEST JMP LOOP GO AROUND * COPY =0,X INITIALIZE CHAN INDEX COPY =-8,A GET A COUNT COPY A,LC SET UP LOOP COUNT COPY CHAN,Q GET CHANNEL MASK COPY Q,TEMP SAVE IT LOOP0 COPY TEMP,Q GET CURRENT MASK SHIFT Q,RO,1 GET NEXT CHAN BIT COPY Q,TEMP RESTORE MASK JF OV,LOOP1 SKIP IF OFF COPY =INSTR,Y TABLE HEADER JSK OUT INITIATE OUTPUT LOOP1 ADD =1,X INCREMENT INDEX IMS LC CHECK LOOP COUNT JMP LOOP0 GO AROUND IF MORE JMP COMND GO TO COMMAND LOOP CHANSV WORD :FFFF CHAN MASK SAVE CELL CHANID BYTE 'CHAN' LPOOL * * PRINT MASK * * ID'S IN X,Y. VALUE IN A * PRMASK COPY X,CHMSG+1 STUFF IN MSG COPY Y,CHMSG+2 2ND WORD COPY =CHMSG,Y MESSAGE ADDR COPY =CHMSK,X GET OFFSET IN X TO EDIT JSK CTH CONVERT TO HEX COPY =CHMSGL,X MESG LENGTH JSK PRINT OUTPUT RSK CHMSG WORD :0A0D LF-CR BYTE 'XXXX MASK = ' CHMSK EQU $-CHMSG*2 BYTE OFFSET BYTE 'XXXX' CHMSGL EQU $-CHMSG*2 LENGTH TITL DISPLAY EOB STATUS SNAPSHOT * * DISPLAY LOOP * * A 'SNAPSHOT' OF EOB STATUS IS DISPLAYED * (THE TABLE IS COPIED WITH INTRPTS PREVENTED) * DISP0 EQU $ DISP EQU $ COPY =STAT,X SOURCE COPY =STATC,Y DESTINATION COPY =-16,Q WORD COUNT RBIT 8,S PREVENT CHANGE JSK BT TRANSFER BLOCK SBIT 8,S ALLOW INTS COPY STATID,A 1ST WORD OF ID COPY STATID+1,Q 2ND WORD OF ID COPY =STATC,Y DATA SOURCE COPY =-16,X WORD COUNT JSK LINE DUMP THE TABLE COPY BRK,A GET BREAK FLAG JEQ A,$+2 SKIP IF NOT SET JMP COMND GO DO NEXT COMMAND JSK BACKUP BACK UP THE CURSOR JMP DISP LOOP LC RES 1 TEMP RES 1 STATC RES 16 STATID BYTE 'STAT' LPOOL TITL RESET, CHANGE DEVICE ADDR (R) * * CODE TO ISSUE RESETS * * DEVICE ADDRESS IS RECOMPUTED HERE AFTER BOARD RESET. * SPECIAL BOARD OPERATIONS ARE SUPPORTED AS SINGLE CHAR * NUMERIC ARGUMENT TO THE R COMMAND: RN * RESET JST HTST CHECK FOR HEX DIGIT JMP RESET1 NOT HEX. PLAIN RESET ADD DVX4,Q ADD DEVICE ADDR TO HEX XNX Q INDEX NEXT INSTR SELP A,0 SEND SPECIFIED BOARD FUNC JSK CTRM CLOSE COMMAND JMP COMND GO DO NEXT ONE SPACE 2 RESET1 COPY DVX4,Q GET DEVICE ADDR XNX Q INDEX NEXT INSTR SELP A,:4 SEL FUNC 4 (RESET) COPY DV,Q GET DEVICE ADDR SHIFT Q,LO,4 POSITION FOR XNX'S. CSK Q,DVX4 ARE WE CHANGING ADDRESS NOP JMP $+2 YES JMP COMND NO COPY Q,DVX4 UPDATE ACTUAL ADDR CELL XNX Q INDEX NEXT INSTR SELP A,:4 SEND A RESET TO THE NEXT ONE COPY DV,A GET ADDRESS COPY =DVMSG,Y MSG ADDR COPY =DVMVAL,X BYTE OFFSET WHERE TO EDIT ' JSK CTH EDIT ADDRESS COPY =:2020,A GET BLANKS COPY A,DVMWW BLANK SOME CHARS COPY =DVMLN,X MSG LENGTH JSK PRINT PRINT ADDR JSK DVMOD MODIFY DEVICE ADDR JSK SETCDR UPDATE CDR JMP COMND GO FOR NEXT COMMAND TITL MODIFY DEVICE ADDRESS (DVMOD) * * MODIFY DEVICE ADDRESS IN AUTO I/O USING VALUE IN DVX4 * DVMOD COPY =-16,A GET LOOP COUNT COPY A,DVLC SET UP LOOP COUNT COPY =BIAS,Y GET ADDR OF VECTOR BLOCK COPY =0,X INITIALIZE HALF-CHAN INDEX DVLOOP COPY 0(X,Y),A GET AN I/O INSTR AND =:FF0F,A REMOVE DEVICE ADDR ADD DVX4,A ADD NEW DEVICE ADDR COPY A,0(X,Y) RESTORE ADD =8,X INCR TO NEXT INSTR IMS DVLC CHECK LOOP JMP DVLOOP LOOP  RSK RETURN DVX4 RES 1 ACTUAL DEVICE ADDRESS USED %4 DVLC RES 1 LOOP COUNT DVMSG WORD :0A0D LF-CR BYTE 'DEVICE ADDR =' DVMVAL EQU $-DVMSG*2 BYTE OFFSET FOR EDIT DVMWW BYTE 'XXXX' FOR ADDRESS DVMLN EQU $-DVMSG*2 WHOLE LENGTH LPOOL TITL !!! STACK !!! * * STACK * STACKL EQU 100 STACK SIZE STACK RES STACKL STACK TITL CONVERT FROM ABS TO REL FOR LINKING CONVENIENCE * * CONVERT FROM ABS TO REL FOR LINKING CONVENIENCE * REL $ WE ARE NOW IN RELATIVE MODE WORD 0 ALLOCATE A WORD TO ENSURE CHANGE END :A0 START AT USER TRAP X4 RES 1 ACTUAL DEVICE ADDRESS USED %4 DVLC RES 1 LOOP COUNT DVMSG WORD :0A0D LF-CR BYTE 'DEVICE ADDR =' DVMVAL E OM790111120000OM790111120000OM790111120000O0SEGMENTBLANK oii 1  B B   ~#   a` 6z B t  A  a`6M• B p o  | xwv6H+ OM790111120000OM790111120000OM790111120000M1  B B  ~#   a`6z¤ B t  A a`6M• B po  | xwv6H+ OM790111120000OM790111120000OM790111120000c}ho!@GT~LBA6!................................................................H RESET MUX.Z.....R.H READ MODEM REGISTERS.F3090,3093,A000.S.F3090,3093,4000..F2FF0,2FF3,8.S.CM3080,3083,2FF0.H READ OPTION TABLES.F3090,3093,4100.F30B0,30B3,7.F2FF0,2FF3,0..AH( .S.CM3080,3083,2FF0...AF....................M2FF0,1,C9,3E,10,00,D,3B..CM3100,3106,2FF0..CM3150,3156,2FF0..CM31A0,31A6,2FF0..CM31F0,31F6,2FF0.M2C00,C.M2C01,1007.M2C02,0.......................................ED.. H MODEM REGISTER WRITE/READ.Z.M3600,F.......................F3090,3097,A000.S.F2B00,2B07,1000,1.C2B00,2B07,2B08.M2FE0,9,8,D,C,B,A,F,E.C2FE0,2FE7,2FE8.M2FF0,C,9,A,D,E,B,8,F.C2FF0,2FF7,2FF8.F2FD0,2FD7,0..C2B00,2B07,3090.S.CM3080,3083,2FD0..F3090,3097,4000.S.CM3080,3083,2FE0..C2B01,2B08,3090.S.CM3080,3083,2FE0..F3090,3097,4000.S.CM3080,3083,2FF0..C2B02,2B09,3090.S.CM3080,3083,2FF0..F3090,3097,4000.S.CM3080,3083,2FE2..C2B03,2B0A,3090.S.CM3080,3083,2FE2..F3090,3097,4000.S.CM3080,3083,2FF2..C2B04,2B0B,3090.S.CM3080,3083,2FF2..F3090,3097,4000.S.CM3080,3083,2FE4..C2B05,2B0C,3090.S.CM3080,3083,2FE4..F3090,3097,4000.S.CM3080,3083,2FF4..C2B06,2B0D,3090.S.CM3080,3083,2FF4..F3090,3097,4000.S.CM3080,3083,2FE6..C2B07,2B0E,3090.S.CM3080,3083,2FE6..F3090,3097,4000.S.CM3080,3083,2FF6...................................................................................E2....... H WRITE OPTION TABLE AND SPECIAL CHARS, VERIFY.Z.M3600,F..........F3090,3097,A000.S...F3090,3097,1003.F2FF0,2FF7,0.S.CM3080,3083,2FF0.F3090,3097,1020.F30D0,30D7,360B.S.CM3080,3083,2FF0..F3090,3097,10C0.F30D0,30D7,3615.S.CM3080,3083,2FF0..F3090,3097,4100.F30B0,30B7,7.S.CM3088,308B,2FF0.C360B,360E,2FF0.M2FF4,C1.C3615,3616,2FF5..CM3380,3386,2FF0.CM33D0,33D6,2FF0.CM3420,3426,2FF0.CM3470,3476,2FF0.........................LR2FF0.F2FF8,2FFB,0FFF.CM2FF4,2FF7,2FF8...........................................E3.. CM3100,314F,33D0.CM3150,319F,3380.CM31A0,31EF,3470.CM31F0,323F,3420...CM3240,328F,3510.CM3290,32DF,34C0.CM32E0,332F,35B0.CM3330,337F,3560...................................................................................................................................E4.. H SEND AND RECV SPEC'L CHARS.Z.M3600,F..F3090,3097,A000.S.F3090,3097,4A00.S.F3090,3097,10A3.F2FF0,2FF3,43.S.CM3080,3083,2FF0,2F00.CM3088,308B,2FF0,10FF.F2FF4,2FF7,FFFF.CM3084,3087,2FF4.CM308C,308F,2FF4.....F3090,3097,A000.S.F3090,3097,4900.S.F3090,3097,10AD...F2FF0,2FF3,61.S.CM3080,3083,2FF0,2F00.CM3088,308B,2FF0,10FF.................................F3090,3097,A000.S.F3090,3097,4A00.M3093,4900.S..M3090,10A0,10A1,1040,10AF,10B0,10B8,10BF,10AD.M31A0,3B..M2FF0,41,40,4F,60,58,50,4D,5F.S.CM3080,3083,2FF0,2F00.CM3088,308B,2FF0,10FF...................................E5.. H FIRMWARE AUTO-ECHO.Z.M3600,F..F3090,3097,A000.S.C2B00,2EFF,3100.........M3090,5840,4C00,5840,4C00,5840,4C00,5840,4C00.F30A0,30A7,0000.M30A8,4800,4C00,4800,4C00,4800,4C00,4800,4C00...M2FF0,0,FFFF,0,FFFF,FFFF,FFFF,FFFF,FFFF.F2FF8,2FFB,0.F2FFC,2FFF,FFFF.S............CM3080,3087,2FF0,AF00.CM3088,308F,2FF8,90FF................................E6. H SEND NEW LINES.Z.M3600,F.........................F3090,3097,A000.S.F3090,3097,4800..S.M3090,01080,1081,1082,1084,1086,1088,108A,108F..F2FF0,2FF7,0.S.CM3080,3083,2FF0,2F00.F2FF0,2FF7,FFFF..CM3088,308F,2FF0..M2FF0,D.CM3380,3380,2FF0.CM33D0,33D0,2FF0.CM3420,3420,2FF0..CM3470,3470,2FF0.......................................................................M2FF0,A.CM3382,3382,2FF0.CM33D1,33D1,2FF0..CM3425,3425,2FF0.CM3473,3473,2FF0.......................................................................F2FF0,2) FFF,0.CM3381,3381,2FF0.CM3421,3424,2FF0..CM3471,3472,2FF0.CM34C1,34C8,2FF0.CM3511,3516,2FF0..CM3561,356F,2FF0.CM35B1,35BA,2FF0........................E7. H TEST LOCAL LOOPBACK.Z.F3090,3093,A000.S.M360E,B7.F3090,3093,1020..F30D0,30D7,360B.F2FF0,2FF7,0.S.CM3080,3083,2FF0...............Z.M3090,5840,4800,5840,4800.......................M2FF0,0,FFFF,0,FFFF,0,FFFF,0,FFFF...S.CM3080,3083,2FF0,2F00.CM3088,308B,2FF0,10FF......................................................EA. H CHANNEL INDEPENDENCE TEST.Z.F3090,3093,A000.S.M3090,2C01*.F3091,3093,0.M2FF0,2C02*........F2FF1,2FF7,FFFF.S.CM3080,3087,2FF0..RT3090,3093.RT2FF0,2FF3.S.CM3080,3087,2FF0..RT3090,3093.RT2FF0,2FF3.S.CM3080,3087,2FF0..RT3090,3093.RT2FF0,2FF3...S.CM3080,3087,2FF0..RT3090,3093.RT2FF0,2FF3.S.CM3080,3087,2FF0..RT3090,3093.RT2FF0,2FF3.S.CM3080,3087,2FF0..RT3090,3093.RT2FF0,2FF3.S.CM3080,3087,2FF0..RT3090,3093.RT2FF0,2FF3.S.CM3080,3087,2FF0..........................................E2C00* ........................................M2C00,1.......M2C01,4000...............M2C02,F................ED.. H FULL DUPLEX RECV AND XMIT.Z.M3600,F.F3090,3093,A000.S...F3100,314F,50.F3150,319F,51.F31A0,31EF,52.F31F0,323F,53...F3380,34BF,FF...........................................C3100,35FF,2B00.F3090,3093,5840.F30A0,30A3,0........................................................F30A8,30AB,0.S.F2FF0,2FF3,0.F2FF4,2FF7,FFFF.................................................C2FF0,2FF7,2FF8.CM3080,3087,2FF0,2F00.CM3088,308F,2FF0,10FF.......................................................EE.. H BREAK TEST.Z.M3600,F.F3090,3093,A000.S.F3090,3093,4800.S..F3090,3093,1060...........................................F2FF0,2FF3,4A2.F2FF4,2FF7,FFFF.S.CM3080,3087,2FF0,AF00..CM3088,308F,2FF0,90FF.......................................................E8............ H HARDWARE AUTO-ECHO.Z.F3090,3093,A000.S.M3600,5..F3090,3093,1020.F30D0,30D3,360B.M2FF0,0,FFFF,0,FFFF.S.CM3080,3083,2FF0.M3600,A.M360E,77.RT2FF0,2FF3.S.CM3080,3083,2FF0...Z.M3600,F.M3090,5840,4800,5840,4800..M2FF0,0,2F00,0,2F00.S.CM3080,3083,2FF0,2F00.CM3088,308B,2FF0,10FF.E9.. H HALF DUPLEX RECV/XMIT...Z.F3090,3093,A000.S.M360B,22..F30D0,30D7,360B.F3090,3093,1020.F2FF0,2FF7,0..S.CM3080,3083,2FF0..................................................Z.F3090,3093,1007.S.CM3080,3083,2FF0................................................M3090,4800,1040,4800,1040.M2FF8,2F00,10FF,2F00,10FF,FFFF,FFFF,FFFF,FFFF.S.CM3080,3087,2FF8,2F00.CM3088,308F,2FF8,10FF.................................................Z.F3090,3093,1007.S.CM3080,3083,2FF0................................................M3090,1040,4800,1040,4800.RT2FF8,2FFB.S.CM3080,3087,2FF8,2F00.CM3088,308F,2FF8,10FF...............................................EB...... H4-CHANNEL ASYNC MUX DIAGNOSTIC (93812-11B0) .R RESET MUX BOARD.Z RESET EXERCISER TABLES AND POINTERS.M3090,A000 READ/WRITE PARTIAL RESET COMMAND.S SEND IT TO THE MUX CHANNEL ZERO.HDUMP ROM AND VERIFY..Z CLEAR EXERCISER, AGAIN..M3090,1020 WRITE OPTION TABLE ON CHAN 0.M30B0,1 ONE BYTE..M30D0,360B FROM HERE..M360B,41 PATCH TIMER BYPASS ENABLE 'ON'.M2FF0,0 SET UP A ZERO WORD FOR COMPARE..S START OPT TABLE WRITE.CM3080,3080,2FF0 WAIT TILL F INISHED.Z CLEAR EXERCISER.M3090,4100 READ OPTION TABLE+ROM..M30B0,807 7 REGULAR BYTES FOLLOWED BY ROM.M* 30D0,AF9 INPUT INTO :AF9 AND FOLLOWING.FAF9,12FF,FF FILL DESTINATION W/ FIXES..AH SET PRIMARY VECTORS TO READ..S CRANK IT UP.CM3080,3080,2FF0 WAIT TILL THROUGH..CMNB00,12FF,200 COMPARE TO REF..EF EXECUTE PROGRAM F NEXT. H***** END OF DIAGNOSTIC PASS *****..RT100,109 ROTATE BUFFER OF DEV ADDR'S.M3617,100* PUT NEXT ONE IN :3617..E0 RESTART DIAG4.. TART OPT TABLE WRITE.CM3080,3080,2FF0 WAIT TILL F INISHED.Z CLEAR EXERCISER.M3090,4100 READ OPTION TABLE+ROM..M30B0,807 7 REGULAR BYTES FOLLOWED BY ROM.McPng[!=%2sL`o?6!|H RESET MUX.Z.....R.H READ MODEM REGISTERS.F3090,3097,A000.S.F3090,3097,4000..F2FF0,2FF7,8.S.CM3080,3087,2FF0.H READ OPTION TABLES.F3090,3097,4100.F30B0,30B7,7.F2FF0,2FF7,0..AH.S.CM3080,3087,2FF0...AF....................M2FF0,1,C9,3E,10,00,D,3B..CM3100,3106,2FF0..CM3150,3156,2FF0..CM31A0,31A6,2FF0..CM31F0,31F6,2FF0..CM3240,3246,2FF0..CM3290,3296,2FF0..CM32E0,32E6,2FF0..CM3330,3336,2FF0.M2C00,C.M2C01,1007.............M2C02,0...................ED.. H MODEM REGISTER WRITE/READ.Z.F3090,3097,A000.S.F2B00,2B07,1000,1.C2B00,2B07,2B08.M2FE0,9,8,D,C,B,A,F,E.C2FE0,2FE7,2FE8.M2FF0,C,9,A,D,E,B,8,F.C2FF0,2FF7,2FF8.F2FD0,2FD7,0..C2B00,2B07,3090.S.CM3080,3087,2FD0..F3090,3097,4000.S.CM3080,3087,2FE0..C2B01,2B08,3090.S.CM3080,3087,2FE0..F3090,3097,4000.S.CM3080,3087,2FF0..C2B02,2B09,3090.S.CM3080,3087,2FF0..F3090,3097,4000.S.CM3080,3087,2FE2..C2B03,2B0A,3090.S.CM3080,3087,2FE2..F3090,3097,4000.S.CM3080,3087,2FF2..C2B04,2B0B,3090.S.CM3080,3087,2FF2..F3090,3097,4000.S.CM3080,3087,2FE4..C2B05,2B0C,3090.S.CM3080,3087,2FE4..F3090,3097,4000.S.CM3080,3087,2FF4..C2B06,2B0D,3090.S.CM3080,3087,2FF4..F3090,3097,4000.S.CM3080,3087,2FE6..C2B07,2B0E,3090.S.CM3080,3087,2FE6..F3090,3097,4000.S.CM3080,3087,2FF6.................................................................................................................E2....... H WRITE OPTION TABLE AND SPECIAL CHARS, VERIFY..Z.F3090,3097,A000.S...F3090,3097,1003.F2FF0,2FF7,0.S.CM3080,3087,2FF0.F3090,3097,1020.F30D0,30D7,360B.S.CM3080,3087,2FF0..F3090,3097,10C0.F30D0,30D7,3615.S.CM3080,3087,2FF0..F3090,3097,4100.F30B0,30B7,7.S.CM3088,308F,2FF0.C360B,360E,2FF0.M2FF4,C1.C3615,3616,2FF5..CM3380,3386,2FF0.CM33D0,33D6,2FF0.CM3420,3426,2FF0.CM3470,3476,2FF0.CM34C0,34C6,2FF0.CM3510,3516,2FF0.CM3560,3566,2FF0.CM35B0,35B6,2FF0.......................................................E3.. H FILL TRANSMIT BUFFERS WITH 50,51,ETC; PERFORM FULL DUPLEX.HRECEIVE AND TRANSMIT.Z.F3090,3097,A000.S.F3100,314F,50.F3150,319F,51.F31A0,31EF,52.F31F0,323F,53.F3240,328F,54.F3290,32DF,55.F32E0,332F,56.F3330,337F,57.F3380,35FF,FF...C3100,35FF,2B00.F3090,3097,5840.F30A0,30A7,0000.F30A8,30AF,0000.S.F2FF0,2FFF,0.CM3080,3087,2FF0,2F00.CM3088,308F,2FF0,10FF.EE. CM3100,314F,33D0.CM3150,319F,3380.CM31A0,31EF,3470.CM31F0,323F,3420...CM3240,328F,3510.CM3290,32DF,34C0.CM32E0,332F,35B0.CM3330,337F,3560...................................................................................................................................E4.. H SEND AND RECEIVE SPECIAL CHARACTERS.Z.F3090,3097,A000+ .S.F3090,3097,4A00.S.F3090,3097,10A3.F2FF0,2FF7,43.S.CM3080,3087,2FF0,2F00...CM3088,308F,2FF0,10FF.....................................Z.F3090,3097,A000.S.F3090,3097,4900.S.F3090,3097,10AD...F2FF0,2FF7,61.S.CM3080,3087,2FF0,2F00.CM3088,308F,2FF0,10FF...........................................Z.F3090,3097,A000.S.F3090,3097,4A00.M3093,4900.S..M3090,10A0,10A1,1040,10AF,10B0,10B8,10BF,10AD.M31A0,3B..M2FF0,41,40,4F,60,58,50,4D,5F.S.CM3080,3087,2FF0,2F00.CM3088,308F,2FF0,10FF...................................E5.. H EXERCISE FIRMWARE AUTO ECHO.Z.F3090,3097,A000.S.C2B00,2EFF,3100.........M3090,5840,4C00,5840,4C00,5840,4C00,5840,4C00.F30A0,30A7,0000.M30A8,4800,4C00,4800,4C00,4800,4C00,4800,4C00...M2FF0,0,FFFF,0,FFFF,0,FFFF,0,FFFF.F2FF8,2FFF,0.S..........CM3080,3087,2FF0,2F00.CM3088,308F,2FF8,10FF........................................................E6. H SEND NEW LINES.Z.F3090,3097,A000.S.F3090,3097,4800..S.M3090,01080,1081,1082,1084,1086,1088,108A,108F..F2FF0,2FF7,0.S.CM3080,3087,2FF0,2F00.F2FF0,2FF7,FFFF..CM3088,308F,2FF0..M2FF0,D.CM3380,3380,2FF0.CM33D0,33D0,2FF0.CM3420,3420,2FF0..CM3470,3470,2FF0.CM34C0,34C0,2FF0.CM3510,3510,2FF0..CM3560,3560,2FF0.CM35B0,35B0,2FF0..M2FF0,A.CM3382,3382,2FF0.CM33D1,33D1,2FF0..CM3425,3425,2FF0.CM3473,3473,2FF0.CM34C9,34C9,2FF0..CM3517,3517,2FF0.CM3570,3570,2FF0.CM35BB,35BB,2FF0..F2FF0,2FFF,0.CM3381,3381,2FF0.CM3421,3424,2FF0..CM3471,3472,2FF0.CM34C1,34C8,2FF0.CM3511,3516,2FF0..CM3561,356F,2FF0.CM35B1,35BA,2FF0........................................................E7. H SEND BREAK.Z.F3090,3097,A000.S.F3090,3097,4800.S.F3090,3097,1060..F2FF0,2FF7,4A2.S.CM3080,3087,2FF0,2F00.CM3088,308F,2FF0,10FF..........................................................E8.. H HARDWARE AUTO ECHO TEST.Z.F3090,3097,A000.S.F3600,3600,55.F3090,3097,1020.F30D0,30D7,360B.M2FF0,0,FFFF,0,FFFF,0,FFFF,0,FFFF.S.CM3080,3087,2FF0.M3600,AA.M360E,77.RT2FF0,2FF7.S.CM3080,3087,2FF0...................................Z.M3090,5840,4800,5840,4800,5840,4800,5840,4800...M2FF0,0,2F00,0,2F00,0,2F00,0,2F00.S.CM3080,3087,2FF0,2F00.CM3088,308F,2FF0,10FF...........................................E9.. H TEST LOCAL LOOPBACK.Z.F3090,3097,A000.S.M360E,B7.F3090,3097,1020..F30D0,30D7,360B.F2FF0,2FF7,0.S.CM3080,3087,2FF0...............Z.M3090,5840,4800,5840,4800,5840,4800,5840,4800...M2FF0,0,FFFF,0,FFFF,0,FFFF,0,FFFF...S.CM3080,3087,2FF0,2F00.CM3088,308F,2FF0,10FF......................................................EA. H CHANNEL INDEPENDENCE TEST.Z.F3090,3097,A000.S.M3090,2C01*.F3091,3097,0.M2FF0,2C02*........F2FF1,2FF7,FFFF.S.CM3080,3087,2FF0..RT3090,3097.RT2FF0,2FF7.S.CM3080,3087,2FF0..RT3090,3097.RT2FF0,2FF7.S.CM3080,3087,2FF0..RT3090,3097.RT2FF0,2FF7...S.CM3080,3087,2FF0..RT3090,3097.RT2FF0,2FF7.S.CM3080,3087,2FF0..RT3090,3097.RT2FF0,2FF7.S.CM3080,3087,2FF0..RT3090,3097.RT2FF0,2FF7.S.CM3080,3087,2FF0..RT3090,3097.RT2FF0,2FF7.S.CM3080,3087,2FF0..........................................E2C00* ........................................M2C00,1.......M2C01,4000...............M2C02,F................ED.. H HALF DUPLEX RECV/XMIT...Z.F3090,3097,A000.S.M360B,22..F30D0,30D7,360B.F3090,3097,1020.F2FF0,2FF7,0..S.CM3080,3087,2FF0..........................................................Z.F3090,3097,1007.S.CM3080,3087,2FF0..................................., .........................M3090,4800,1040,4800,1040,4800,1040,4800,1040.M2FF8,2F00,10FF,2F00,10FF,2F00,10FF,2F00,10FF.S.CM3080,3087,2FF8,2F00.CM3088,308F,2FF8,10FF...........................................................Z.F3090,3097,1007.S.CM3080,3087,2FF0............................................................M3090,1040,4800,1040,4800,1040,4800,1040,4800.RT2FF8,2FFF.S.CM3080,3087,2FF8,2F00.CM3088,308F,2FF8,10FF.......................................................EB...... H8-CHAN ASYNC MUX DIAGNOSTIC (93812-12B0) .R RESET MUX BOARD.Z RESET EXERCISER TABLES AND POINTERS.M3090,A000 READ/WRITE PARTIAL RESET FOR CHAN 0, ONLY..S SEND COMMAND TO MUX CHANNEL.HDUMP ROM AND VERIFY..M3090,1020 WRITE OPTION TABLE.M30B0,1 ONE BYTE..M30D0,360B LOC OF BYTE..M360B,41 SET TIMER BYPASS ENABLE..M2FF0,0 ZERO WORD FOR COMPARE.S BEGIN WRITE OPTION TABLE..CM3080,3080,2FF0 LOOK FOR ZERO.. OPTION TABLE SUCCESSF ULLY WRITTEN..Z CLEAR EXERCISER.M3090,4100 READ OPT TABL..M30B0,807 NORMAL 7 BYTES FOLLOWED BY ROM DUMP.M30D0,AF9 PUT IT AT LOC :AF9..FAF9,12FF,FF FILL DESTINATION W/ FOXES..AH SET PRIMARY VECTORS TO INPUT.S CRANK IT UP.CM3080,3080,2FF0 WAIT TILL THROUGH..CMNB00,12FF,200 COMPARE AGAINST AMXROM..EF GO TO NEXT PROG.. H***** END OF DIAGNOSTIC PASS *****..RT100,109 ROTATE BUF OF DEV ADDR'S..M3617,100* PUT NEXT ADDR IN :3617.E0 RESTART DIAG. BLE..CM3080,3080,2FF0 LOOK FOR ZERO.. OPTION TABLE SUCCESSF ULLY WRITTEN..Z CLEAR EXERCISER.M3090,4100 READ OPT TABL..M30B0,807 NORMAL 7 BYTES FOLLOWED BY ROM DUMP    t4y@~qrq4k- kO,DF1.DIAG U,DF1.DIAGS U,DF1.AMXROM U,DF1.ROTATE U,DF1.PROG.OBJ T OM790111120000OM790111120000OM790111120000O,DF1.DIAG4 U,DF1.DIAG4S U,DF1.AMXROM U,DF1.ROTATE U,DF1.PROG.OBJ T OM790111120000OM790111120000OM790111120000 TITL PROGRAMMED I/O TEST ABS :110 COPY :3617,A GET DEVICE ADDR SHIFT A,LO,4 SHIFT FOR XNX'S XNX A SELP A,6 INHIBIT BOARD INTS COPY =:4800,Q READ FUNCTION XNX A OUT Q,3 SEND TO CHAN 1 COPY =:10A3,Q SEND CC FUNCTION XNX A OUT Q,1 SEND TO CHAN 0 JST WT WAIT FOR INT JMP DATA WAS DATA INTRPT JST CK0 JST BAD JST WT WAIT FOR INT JMP $+2 SKIP IF DATA INTRPT JST BAD JST CK1 CHECK CHAN 1 JST BAD JMP GOOD DATA EQU $ JST CK1 CHECK CHAN 1 JST BAD JST WT WAIT FOR INT JST BAD JST CK0 JST BAD GOOD COPY =0,A GOOD STATUS JMP EXIT BAD ENT COPY $-1,A GET ADDR EXIT COPY A,:2B00 RETURN STATUS RSK CK0 ENT XNX A IN 1,Y GET STATUS TBIT 13,Y BUSY BIT CHECK JF OV,$+2 SKIP IF BAD IMS CK0 CHANGE RETURN COPY =:2000,Q PARTIAL RESET XNX A OUT Q,1 CLEAR HIM OUT XNX A SELP A,7 RESET FF JMP *CK0 RETURN CK1 ENT XNX A IN 2,Q GET DATA XNX A IN 3,Y GET STATUS TBIT 12,Y BUSY?  JF OV,CK1X ERROR IF NOT CSK Q,=3 DATA OK? NOP JMP CK1X GO OUT IF BAD COPY =:8000,Q PARTIAL RESET XNX A OUT Q,3 STOP HIM XNX A SELP A,7 RESET FF IMS CK1 CHANGE RETURN CK1X JMP *CK1 RETURN WT ENT XNX A SST 0 INT PENDING? JMP $+2 YES. JMP $-3 NO XNX A INDEX SST 1 CHECK FOR EOB JMP *WT EXIT IF NOT IMS WT ELSE, CHANGE EXIT JMP *WT EXIT LPOOL END :A0 A OUT Q,1 CLEAR HIM OUT XNX A SELP A,7 RESET FF JMP *CK0 RETURN CK1 ENT XNX A IN 2,Q GET DATA XNX A IN 3,Y GET STATUS TBIT 12,Y BUSY?  JF OV,CK1X ERROR IF NOT CSK Q,=3 DATA OK? NOP JMP CK1X GO OUT IF BAD COPY =:8000,Q PARTIAL RESET XNX A OUT Q,3 STOP HIM c}ho!@GT~LBA6!................................................................H RESET MUX.Z.....R.H READ MODEM REGISTERS.F3090,3093,A000.S.F3090,3093,4000..F2FF0,2FF3,8.S.CM3080,3083,2FF0.H READ OPTION TABLES.F3090,3093,4100.F30B0,30B3,7.F2FF0,2FF3,0..AH. .S.CM3080,3083,2FF0...AF....................M2FF0,1,C9,3E,10,00,D,3B..CM3100,3106,2FF0..CM3150,3156,2FF0..CM31A0,31A6,2FF0..CM31F0,31F6,2FF0.M2C00,C.M2C01,1007.M2C02,0.......................................ED.. H MODEM REGISTER WRITE/READ.Z.M3600,F.......................F3090,3097,A000.S.F2B00,2B07,1000,1.C2B00,2B07,2B08.M2FE0,9,8,D,C,B,A,F,E.C2FE0,2FE7,2FE8.M2FF0,C,9,A,D,E,B,8,F.C2FF0,2FF7,2FF8.F2FD0,2FD7,0..C2B00,2B07,3090.S.CM3080,3083,2FD0..F3090,3097,4000.S.CM3080,3083,2FE0..C2B01,2B08,3090.S.CM3080,3083,2FE0..F3090,3097,4000.S.CM3080,3083,2FF0..C2B02,2B09,3090.S.CM3080,3083,2FF0..F3090,3097,4000.S.CM3080,3083,2FE2..C2B03,2B0A,3090.S.CM3080,3083,2FE2..F3090,3097,4000.S.CM3080,3083,2FF2..C2B04,2B0B,3090.S.CM3080,3083,2FF2..F3090,3097,4000.S.CM3080,3083,2FE4..C2B05,2B0C,3090.S.CM3080,3083,2FE4..F3090,3097,4000.S.CM3080,3083,2FF4..C2B06,2B0D,3090.S.CM3080,3083,2FF4..F3090,3097,4000.S.CM3080,3083,2FE6..C2B07,2B0E,3090.S.CM3080,3083,2FE6..F3090,3097,4000.S.CM3080,3083,2FF6...................................................................................E2....... H WRITE OPTION TABLE AND SPECIAL CHARS, VERIFY.Z.M3600,F..........F3090,3097,A000.S...F3090,3097,1003.F2FF0,2FF7,0.S.CM3080,3083,2FF0.F3090,3097,1020.F30D0,30D7,360B.S.CM3080,3083,2FF0..F3090,3097,10C0.F30D0,30D7,3615.S.CM3080,3083,2FF0..F3090,3097,4100.F30B0,30B7,7.S.CM3088,308B,2FF0.C360B,360E,2FF0.M2FF4,C1.C3615,3616,2FF5..CM3380,3386,2FF0.CM33D0,33D6,2FF0.CM3420,3426,2FF0.CM3470,3476,2FF0.........................LR2FF0.F2FF8,2FFB,0FFF.CM2FF4,2FF7,2FF8...........................................E3.. CM3100,314F,33D0.CM3150,319F,3380.CM31A0,31EF,3470.CM31F0,323F,3420...CM3240,328F,3510.CM3290,32DF,34C0.CM32E0,332F,35B0.CM3330,337F,3560...................................................................................................................................E4.. H SEND AND RECV SPEC'L CHARS.Z.M3600,F..F3090,3097,A000.S.F3090,3097,4A00.S.F3090,3097,10A3.F2FF0,2FF3,43.S.CM3080,3083,2FF0,2F00.CM3088,308B,2FF0,10FF.F2FF4,2FF7,FFFF.CM3084,3087,2FF4.CM308C,308F,2FF4.....F3090,3097,A000.S.F3090,3097,4900.S.F3090,3097,10AD...F2FF0,2FF3,61.S.CM3080,3083,2FF0,2F00.CM3088,308B,2FF0,10FF.................................F3090,3097,A000.S.F3090,3097,4A00.M3093,4900.S..M3090,10A0,10A1,1040,10AF,10B0,10B8,10BF,10AD.M31A0,3B..M2FF0,41,40,4F,60,58,50,4D,5F.S.CM3080,3083,2FF0,2F00.CM3088,308B,2FF0,10FF...................................E5.. H FIRMWARE AUTO-ECHO.Z.M3600,F..F3090,3097,A000.S.C2B00,2EFF,3100.........M3090,5840,4C00,5840,4C00,5840,4C00,5840,4C00.F30A0,30A7,0000.M30A8,4800,4C00,4800,4C00,4800,4C00,4800,4C00...M2FF0,0,FFFF,0,FFFF,FFFF,FFFF,FFFF,FFFF.F2FF8,2FFB,0.F2FFC,2FFF,FFFF.S............CM3080,3087,2FF0,AF00.CM3088,308F,2FF8,90FF................................E6. H SEND NEW LINES.Z.M3600,F.........................F3090,3097,A000.S.F3090,3097,4800..S.M3090,01080,1081,1082,1084,1086,1088,108A,108F..F2FF0,2FF7,0.S.CM3080,3083,2FF0,2F00.F2FF0,2FF7,FFFF..CM3088,308F,2FF0..M2FF0,D.CM3380,3380,2FF0.CM33D0,33D0,2FF0.CM3420,3420,2FF0..CM3470,3470,2FF0.......................................................................M2FF0,A.CM3382,3382,2FF0.CM33D1,33D1,2FF0..CM3425,3425,2FF0.CM3473,3473,2FF0.......................................................................F2FF0,2/ FFF,0.CM3381,3381,2FF0.CM3421,3424,2FF0..CM3471,3472,2FF0.CM34C1,34C8,2FF0.CM3511,3516,2FF0..CM3561,356F,2FF0.CM35B1,35BA,2FF0........................E7. H TEST LOCAL LOOPBACK.Z.F3090,3093,A000.S.M360E,B7.F3090,3093,1020..F30D0,30D7,360B.F2FF0,2FF7,0.S.CM3080,3083,2FF0...............Z.M3090,5840,4800,5840,4800.......................M2FF0,0,FFFF,0,FFFF,0,FFFF,0,FFFF...S.CM3080,3083,2FF0,2F00.CM3088,308B,2FF0,10FF......................................................EA. H CHANNEL INDEPENDENCE TEST.Z.F3090,3093,A000.S.M3090,2C01*.F3091,3093,0.M2FF0,2C02*........F2FF1,2FF7,FFFF.S.CM3080,3087,2FF0..RT3090,3093.RT2FF0,2FF3.S.CM3080,3087,2FF0..RT3090,3093.RT2FF0,2FF3.S.CM3080,3087,2FF0..RT3090,3093.RT2FF0,2FF3...S.CM3080,3087,2FF0..RT3090,3093.RT2FF0,2FF3.S.CM3080,3087,2FF0..RT3090,3093.RT2FF0,2FF3.S.CM3080,3087,2FF0..RT3090,3093.RT2FF0,2FF3.S.CM3080,3087,2FF0..RT3090,3093.RT2FF0,2FF3.S.CM3080,3087,2FF0..........................................E2C00* ........................................M2C00,1.......M2C01,4000...............M2C02,F................ED.. H FULL DUPLEX RECV AND XMIT.Z.M3600,F.F3090,3093,A000.S...F3100,314F,50.F3150,319F,51.F31A0,31EF,52.F31F0,323F,53...F3380,34BF,FF...........................................C3100,35FF,2B00.F3090,3093,5840.F30A0,30A3,0........................................................F30A8,30AB,0.S.F2FF0,2FF3,0.F2FF4,2FF7,FFFF.................................................C2FF0,2FF7,2FF8.CM3080,3087,2FF0,2F00.CM3088,308F,2FF0,10FF.......................................................EE.. H BREAK TEST.Z.M3600,F.F3090,3093,A000.S.F3090,3093,4800.S..F3090,3093,1060...........................................F2FF0,2FF3,4A2.F2FF4,2FF7,FFFF.S.CM3080,3087,2FF0,AF00..CM3088,308F,2FF0,90FF.......................................................E8............ H HARDWARE AUTO-ECHO.Z.F3090,3093,A000.S.M3600,5..F3090,3093,1020.F30D0,30D3,360B.M2FF0,0,FFFF,0,FFFF.S.CM3080,3083,2FF0.M3600,A.M360E,77.RT2FF0,2FF3.S.CM3080,3083,2FF0...Z.M3600,F.M3090,5840,4800,5840,4800..M2FF0,0,2F00,0,2F00.S.CM3080,3083,2FF0,2F00.CM3088,308B,2FF0,10FF.E9.. H HALF DUPLEX RECV/XMIT...Z.F3090,3093,A000.S.M360B,22..F30D0,30D7,360B.F3090,3093,1020.F2FF0,2FF7,0..S.CM3080,3083,2FF0..................................................Z.F3090,3093,1007.S.CM3080,3083,2FF0................................................M3090,4800,1040,4800,1040.M2FF8,2F00,10FF,2F00,10FF,FFFF,FFFF,FFFF,FFFF.S.CM3080,3087,2FF8,2F00.CM3088,308F,2FF8,10FF.................................................Z.F3090,3093,1007.S.CM3080,3083,2FF0................................................M3090,1040,4800,1040,4800.RT2FF8,2FFB.S.CM3080,3087,2FF8,2F00.CM3088,308F,2FF8,10FF...............................................EB...... H4-CHANNEL ASYNC MUX DIAGNOSTIC (93812-11B0) .R RESET MUX BOARD.Z RESET EXERCISER TABLES AND POINTERS.M3090,A000 READ/WRITE PARTIAL RESET COMMAND.S SEND IT TO THE MUX CHANNEL ZERO.HDUMP ROM AND VERIFY..Z CLEAR EXERCISER, AGAIN..M3090,1020 WRITE OPTION TABLE ON CHAN 0.M30B0,1 ONE BYTE..M30D0,360B FROM HERE..M360B,41 PATCH TIMER BYPASS ENABLE 'ON'.M2FF0,0 SET UP A ZERO WORD FOR COMPARE..S START OPT TABLE WRITE.CM3080,3080,2FF0 WAIT TILL F INISHED.Z CLEAR EXERCISER.M3090,4100 READ OPTION TABLE+ROM..M30B0,807 7 REGULAR BYTES FOLLOWED BY ROM.M0 30D0,AF9 INPUT INTO :AF9 AND FOLLOWING.FAF9,12FF,FF FILL DESTINATION W/ FIXES..AH SET PRIMARY VECTORS TO READ..S CRANK IT UP.CM3080,3080,2FF0 WAIT TILL THROUGH..CMNB00,12FF,200 COMPARE TO REF..EF EXECUTE PROGRAM F NEXT. H***** END OF DIAGNOSTIC PASS *****..RT100,109 ROTATE BUFFER OF DEV ADDR'S.M3617,100* PUT NEXT ONE IN :3617..E0 RESTART DIAG4.. + d p p\ %'34(6(()GSHTof ]g ]eoq]p{ 6~ ~ p"!p!%K vbwcwPp[ !Pq0Z py@|P))p} x|P)}(x!+PqhqZPS@Uvbw(tJPqhqZPT@VwcP (tJ@PCSEUGW@Pq<hqZd \bpP0\(m(e{!!Pp@p  ![JSz)(tvb\JU) !yQxPpeq! 8 dL" \ P) dp @ %"@L@f"`g@epx@|pt@Pp Xb\)b(e(D "[bw\) !pP))Zd \@\e \ @ qL"\qe* qrt(((3($q P)eL JWbu\)JW) !@psb\JS)p b\ !(D "[bt\) b\ !vbLR !p~P)!)($@P(epqb\JS)p(A "[rb\)pd \,*,eLdL&R2123232325,,P @b\)b* Hb\)L{zPp d\{z{yfLPgpP(m)(m~(op~(mp c\)zd "\d \rt\(oLP(ep v p (] pc\JT) "[wc\)@Q($d \@!\AP((((3x($d  c\)z)(o~P*K  c\)p~f\dq ~g\)d \@! \(  c\)z(v*\( (`*^()d  P0 \pqc\JT)p c\(a "[cr\) c\(o(bcw)xJVtc\)(o)(  @c\)z(v Hc\)px Pc\)~|pdq)d \ Xc\)p~Pd R1{p2 2-@p@~rd\!p ((3) hc\)z@e\zp+@!Pd \(  `c\)z(v xc\)d(oL"|p)eLcu\JX)JX(o)@!Pd \(  pc\)z(v c\) |p(1 ` c\) |p c\) |pJX(oy!p)cs\JX)))))w))[)c)) ))r) !" !P ! !"@p+qpPerP !{sP0 A @@p !rtxqrtoxirZjtkxlqmrnt{Pp@p"  "  {!"Pp e!P ))z)))))))))))S)))k)))) ))3)N))S%H[c \)Sd \q\ !"*(((3($q)w *we\@PDTFVHX@Pq4hqZcpP0\(o(e{Pp@! 8!p  ![JT)O(te  @ q($t p + M1  B B  ~#   a`6z¤ B t  A a`6M• B po  | xwv6H+  \q\ !"*(((3($q)w *we\@PDTFVHX@Pq4hqZcpP0\(o(e{Pp@! 8!p  ![JT)O(te  @ q($t p + M1  B B  ~#   a`KKK.P @0| v1uo)  " }jA ce":I "[ 00"I120000OM7901"ke" OMEGA:PLUS eSx ) eSw) p[ !1  B B  ~#   a`6z¤ B t  A a`6M• B po  | xwv6H+ ]e JRiCp@=<; G9P@ G1>) 1)313 wDF #/TV qHCECCݞsT 1A ,`@ , X)1)IÞSILjDD@NلQHC@+kT§ӧ󦢦1Ǡ砦)A0$ ✜6`pF|CIWx >1Ajr1`d1 C @``pD1ÄDc Uc Ā #) {w*sdbC @`pDqM `EBB`piIABc # fx C @ :`pB`pB.rc # `prErE# )g -)b )# )C @ 2qS1G p `BC @E A@C @`pJ1) Dr)H)HJKN`pJEc c # @6A sXM m # + T) # xtf l 'PT TYPPTVC @.)8Ѐ`pD81H 'G@ @D.1.1G '<+ D3O :BByB9B )c #  7)# I# **DE **PE **SE **SY  C @` @UM p@rp1UF p@jk12`pDc # .2` xꘀ@.2r` x꒴@# 0123456789ABCDEF   1))1)# ,,)`pD Bc # ۤ) 1)1)#  s,)C @@6 p GC @qB EC @F  `pBBB `pDc # & A@+T@ SASO.@qF 1A B1 # # 2# CITV/I )@6A HDT# ntC @@ pc # C @@c # C @@oC @@c # C @@dC @@c # B @C @@p`HB`HAc # C @s@`(# C @@p`HB`HAc # C @s  XC  * XX  ܃1F܃ DB܃CȞC @ăN U@C }  yОqrǞ@܃UbsKj䃀@mC C _q ׄ@j@ -`*@ v@c @ĀAy  `6D肀@3 r肀@H ă)c  C } {} W _`p@`p@# _# r@ p D -DxC)t /*n܃A  - D D ϸDsr u_6 0m 1 is} ܃ DH D L DL  ܅ .@ UBD} Dt LpqD LhL fDDDlXr)`p U`pJEc qpB) 3 0xAIĐ .Aʄ ҠA) .lA` kB Ac # `pD{`pCC# r Drr U`pEc q)B pIЄ @ANĐI+AQ Us #[ 1 o@NyN2tLsLq 1A{_IĄw @6O tABh  @6A G@`(OLBqq  5k8_NBȆNąR rܞlkC @I)`pDGc ʞ\H@k@Q܆ PT@܅mc x ]] "I`(+ `pA8@ HAkTj eDICkI`(+ I`(S C @GEC`pB`pFc # SA @ȏď@6F @Ić& WD`p@# D``JK# ] ^1€G@6܃B A1' ALL Dw ] tXhC @ pDc # uАؐ֍ؐА# yC @ pCc # ў@AąĆEǞ@VAӀBЀC̀DʀEǀFĀGjqK# hkk܅\/`x@`x#  # Oph@v N # IlkGWQxNyQIďK# )^ > oC @HrTr1A .JTc # QCTrU91 Qc # 1x,) c # )1C @`p Z 0 ; @Fc # @kk# p #    nC @n`i`l gH e Ib^\`@@X QHX QHX QE ML pc # ECA@@B @d # B# };X# C @ +nx)I@&'I$gH!dG |C @# A@6‘# BˆӈUP W pwwwc C @L1| nn # @6cc #  C @C @II I Iy@6Pc ` p+ pN L L p c # p+s# B# A@6<# # n`# e`9#  # x`B# b# # a`@xAlK`pCDH @r# @# kT# r@# @@@kT p䄀 :# BFT p 3BA# ĄN @b@ӌ`@@B# p 4WVUtN Q_Ą@b@(@+k@(pxwjA@BFB`܅w^\ # # B# A@6C@?6@?67# A@?6# A@XE# B# yc@6@6@@nҞXS@6# A@6# # B# B#  # AN 6AN @/6# AXLɞLОL؞v«# B# @@@Ɵ=YES,=NO)? )q$$#IƔƔސ1BwŠQ† *# Á# IƆeʄƃ +{# $@@JSA{MwM utsJMpon# I NIƧQ*\)  -KJܞt•Q)))⧿k# P7*+Ƕµ ,# KƯp #$"%6$ 6& = 6 6*# (ƙ%ƗƓ ,ƑeA @⇂@kTV/0? M P LF R*l ,H>8*@_KRD@MdRA@AX-UUŠ#A sLIST$S# )$\7q6)H NI FISAoǿǿQE AIǹ b ,|{ⲣ-)#  M*cG `D AA< @$ "6)q#$&))%BA%Ǟ"ǝ ,RA@AƒcÒϒRc` +@]]@ނuSY-$$ J* N Sk i; ,Ǩ0__ [Y-X ))8 g &5&& #$\# $S&K&&*)%; ƂA# A·㻣¯# 0)# OPER BREAK MISMATCH AT XXXX CMPRREF )q67`$6&H󂓇)?l#  @fAz+kTvu6 6%B7 HHŸ PH͂H@k PT Hă&&"00100666 6666I HŸ FgQƒb+@C @kނy# ## $ &0@kT# `# C`C*j*@jT# +@kT# HƎI92 0@ ނu# %+'# ƈއd+ނy# 0 ? . Z #54*M?SA/Ʋ. I D L%"'6(($\$S(j' ⰢJ) +)(I)ދދo) )@ PROG 0F 1381 LAST ADDRESS USED = 1380)q"'8'K'@v^As@`K)w*2 .. `"搞n+ . `"Y`⒢# "#&@''=t! ޞσ d}Iǘ  $ ÈQAAc' ()6*6) 20A5= 0F. Z CLEAR EXERCISER.CESSFULLY WRITTEN.0, ONLY.QQ#  I))FPC+# >:: # .{*2 * S D Z R THII HI@HĢ *K< # #(d(c'& )q'$\Ʃsަ|# ƣIƢj ΝSDƙޗ} .oŽ# ގ‹SGKƈ# "'"&࣮⩀ ⨀)+ߜx `ØΆǖϒQB@A3 H# "$ '6'@'7&& R X*ƸnjƲhca$S(  Ac ǹ縟tLqI#  ߪëC @w)# 4{0) )# ** PROGRAM 00 ** &)q#"###( ϿϞ*-ƫ )LJ+ޣޠy)⺲Z++ޑw)6ñQ A cX R/T STATUS  "$ )#$\6})=)6%*6%; Hn℣*f6(d(c(A # Ç!킺+. @!`(悭Âެ¦QM¥QHr rޝ# C @ C c # C @c # ? A # eSw->ST ADDRESS USED = 1380 CLEAR EXERCISER.CESSFULLY WRITTEN.0, ONLY. BAD #S))&6)# ->)# )# )#  BAD )q))**"NQ{Ɓ"GI H;ÞQA7654ÓQAÎ`@˗Zq=@:O6Q****6&*** Q i( _6B0/ -,¥NyXǔI_6Ǐ"  *)6)C @_6 c # U) _ E6JKGG# # ۠C C H]\# B@yX@ACĘ# C # GGCܘ# # GGCܙ# BC # F/6OI BG!AKLG"V܀ā# F@9X @ BJQŁE  # +""/*B@SA# @`E%  }*19' `@# EJCC H # C lF0 A@ĀfDK@A A@ āF6܂# C݄ # C B@.y$B8%# CC # M   VE$F# §F¤@&# ## ܗ+ A !@ )A G֑@'G# C# j!A:="xBF ?@@ā6F @ā6C # C @C @C @C @C @C @`pYϤA ]XFDZYB]JZ ]FZ B]>ą  Y H H H @ ΠAZgB/p $p# Zp/{..6$. /?66-676667.t>6C @C @C @C @C @C @`pYѤA ʄZH ОǞ͞WX]^ AZ̀  TZ]JT UVE]<Tj`]4ZՀ`Z])ϠAZZgB/p $p# ZAq/{..6$. /?.66576766766>6C @C @C @C @C @C @`pYܠY ABPA ]YτZ΀ZYABā €A@Ѐ ĀBĉZĊ¹ć¸ā@ giBg/p $p# ZAZqC @C @C @C @C @C @`pY ABZZC]A;6(/{..6$. /?6./2/ր6>̞C @C @C @C @C @C @`p*YB1-! _ "*QX HTBC @ H*߆ @6:-힜c @*3$B1NBɀ6a 1 g/p $p# /{8.88qoPc Pki\f-1C @C @C @C @C @C @`p*YBB1KLg/p $p# v6(6$66ʞ N OQJ?QC @QBTPQRS GGG_\c BR IG!SGBĝBR IG SB # 77566xu I[QaGWX]%Z/p(p(Y@IC @C U?p(+p(# }657667ʠYIA@AĊ# PB1LZĀ6P1PA# ƒċ# 6IGVWXWBG! R]^TVC SSURR9ƀ^S66 # 87Q;\ /ph@ph@(РP+?ph@kph P+P6XP  TP{z  Ā ?ph@kph # ?ph@kphv:3:>ZB+E(z(# # ^][WXS SޠY\ʀ[ PWXG[nI\ji\+U*ZZ# }| z77"565.6YB1Jy YQ^\YQg!WXWXJS+XW7y B\  N OKƠQ ?F # }{y=v N O5ӠQMI+9\Y\+\JR9P#P# / \F6\AB [ IZF cL\FXN9C 0012z220000000%p6%r6%t6 6$%x6(%p6%r6%t6 %v6$%x6(%z6,%|60%~64p68r6<t6@v6Dx6Hz6L|6P~9 6T PPPPPPPPPPPPPPP6 1P112@2230334 4p455`5A] YAcAw #:7A:7; ; C @)C @)C @)C @)C @)C @)C @)C @)C @)C @) C @) C @) C @) C @) C @)C @)⨄c # @ N!ʡ⡀`@A❄✀ `@B☄# ` xnc # ` xnc # 000000007  r )# )q)6 HǍǍ‰njc # C @IDžq6ƻᆵކ H) ك+H )8Lޜ –KƔSH&H8ƌ`# y # )3#   > CMPR 3080= FFFF :  )⚄✄⛄&)& > = 6&6&*86D)⚄✄⛄+u)ÐƻºN Ƹ6+޲wCHAN0"66c0006u)2)# XXXX MASK = XXXXbH›(AVpN1%ƙC ))\STAT)q7h7&6%;ʧC .¢C íN1%ƙC ))Z)+ރy# p DEVICE ADDR = XXXX$\$ 67& #^01]*BONQ6J,\.!AF70@<A&70@;P; C70@@;P; DC70A L970@H@70BE;HF70@< A&70@ ;P<EF70@MA&70A;P<9&70@ ?CO)8Q#0 Ž 1AOMEGA 0@CO8S:A ?8`8C @`pB)1)1@ƀ@JAk`pBc # ) p ,܀# I )1    E  N1@o   0# I )1 C 0# BBN!@q) ,=;) C @)c # :}:W89?jC  pĆ67 1)1 YI C¥ D L WN!h t4R0R ,XfJ8P8E89:d8b,qHCECCٞsT i1A ,`@ , \)X1)IOIjðDD@NلQHC@+kT£ӣ󢢢1ǜ眦)A0$ ☜8`pF:CI9q@8|D9C9L9h8 #) {L8`9C @`pDqM `EBB`piIABc # :k:}B)C @ qS1G p `BC @E A@C @`pJ1) Dr)H)HJKN`pJEc c # @6A sXM m # + T) # :}:y:kBB:WBiPT TYPPTV:C @.)8ˀ`pD81H 'B@ @D.1.1G '7+ D3O :BByB9B )c #  7)# I# **DE **PE **SE :,:/:2:W:5 :C @` @UM p@rp1UF p@jk12`pDc # ,)C @@6 p GC @qB EC @F  `pBBB `pDc #  & A@+T@ SASO.@qF 1A B1 # # # :::;P;:CI ;:COSISOBI BOLOSC;P; UIUODITV;@@BCAR@@@@TXAABCAR@@@@PRA ABCAR@@@@PPA ABCAR@@@@LPA ABCAR@@@@CR@@BCI\@@@@DF;PA"A.BCCG CCBDXA=AIBCCG%CCBMM@@JCJ@@@@DU@@BC@@@@@:; <LAMBDA4 ::;PA :: ?:E,DF.LAMBDA4 e+ OM790111120000OM790111120000OM790111120000@&@t@m jKkĀ iĀ+ux@Ā # @[@gL8@<m00255075SMc GNqʅ@# H# 00JO@ 1LJIq# # # ; ?  @?փֆ{ՆzvтuТР*+$hgDb  bb c@ `+A@*BHIf*+$hgDb  bb c@ `+A@*BHIfn NB ā` gE g?G= g9G7Nʰ` g2@bmĀIā @&@t@m jKkĀ iĀ+ux@Ā # @[@gL8@<m00255075SMc GNqʅ@# H# 00JO@ 1LJIq# # # ?  @?փֆ{ՆzvтuТР*+$hgDb  bb c@ `+A@*BHIf*+$hgDb  bb c@ `+A@*BHIfn NB ā` gE g?G= g9G7Nʰ` g2@bmĀIā @&@t@m jKkĀ iĀ+ux@Ā # @[@gL8@<m00255075SMc GNqʅ@# H# 00JO@ 1LJIq# # # ?  @?փֆ{ՆzvтuТР*+$hgDb  bb c@ `+A@*BHIf*+$hgDb  bb c@ `+A@*BHIfn NB ā` gE g?G= g9G7Nʰ` g2@bmĀIā @&@t@m jKkĀ iĀ+ux@Ā # @[@gL8@<m00255075SMc GNqʅ@# H# 00JO@ 1LJIq# # # ?  @?փֆ{ՆzvтuТР*+$hgDb  bb c@ `+A@*BHIf*+$hgDb  bb c@ `+A@*BHIf@=I )@6A HDT# :s:yC @@ pc # C @@c # H"HQC @@oC @@c # C @@dC @@c # HFHH(HC @@c # HC @@p`HB`HAc # C @s@`(# FG FC @@p`HB`HAc # C @sA3GYG%G[XC ABTAlB4ABA_B4܃1F܃ DB܃CȞC @ăN U@C } yОqrǞ@܃UbsKj䃀@mC C _q ׄ@j@ -`*@ v@c @ĀAy  `6D肀@r肀@H ă)c  C } {} W _`p@`p@# _# r@ p D -DxC):y /*:s܃A  - D D ϸDsr u_6 0m 1 is} ܃ DH D L DL  ܅ .@ UBD} Dt LpqD LhL fDDDlAr)`p U`pJEc qnB) 3 0xAIĐ .AȄ ҠA) .lAB Ac # `pD{`pCC# r Drr U`pEc q)B pIЄ @ANĐI+AQGB:W99 E9JG@1 o@NyN2tLsLq 1A{_IĄw @6O :yABhDDG @6A G@`(OLBqqm:aNBȆNąR rܞnkC @I)`pDGc ʞ\H@k@Q܆ PT@܅mc xDFpE "I`(+ `pA8@ HAkTj eDICkI`(+ I`(S C @GEC`pB`pFc # SA @ȏď@6F @Ić& WD`p@# D``JK# JKDCBE1@6܃B A1/ ALL DwBDE GB:y@ !:yXC D.CD,CD.CD.CD,C} < ܃C @Ӟc n 6Cq肴@@ ܇# ܆# p )`pBc DV:yF'D:sIIh ܃`pDn 6D肀@r肀@QE} ĒTHă`pBBBc # !SDC @ܐ@ȓ@@ȕ@@ȗ@c # O`pFc # c !# ?DEhC @ pDc # uАؐ֍ؐА# yC @ pCc # ў@AąĆEǞ@VAӀBЀC̀DʀEǀFĀGjqK# hkk܅\/`x@`x#  # Oph@v N # IlkGWQxNyQIďK# )^C|C߀JKڀ# HՄ@kTD@AąC @E@)EIFÞc kC @܅tH㸀@ @kTc HC @@+kTc C @@@+kTc # F@ EFF@Jc k܅<#  c # DCDDVE?FpExIkIKE# DEC @D`OCLCICc # c # DkDܑ:# C @` HrTr1A .JTc # QCTrU91 Qc # 1x,) c # )1C @`p Z 0 ; @Fc # Hkk# p # 9:WC @󽖽 IC @`pCDc `pBCc ē D`DQjDQ=EF `p@# # c N Q c # ExE?FpDDDVC @`pQQD @6PDD3c # BĀCDBFc # BC*1Q GB+ B @62 !CDD]DBC @ *1 :BĀ+ Bq)1.9# E M  nC @n`i`l gH e Ib^\`@@X QHX QHX QE ML pc # ECA@@B @d # B# };X# C @ +nx)I@&'I$gH!dGFFC @# A@6‘# BˆӈUPG>W pwwwc C @L1| nn # @6cc #  C @C @II I Iy@6Pc ` p+ pN L L p c # p+s# B# A@6<# # n`# e`9#  # x`B# b# # a`@xAlK`pCDH @r# @# kT# r@# @@@kT p䄀 :# BFT p BA# ĄN @b@ӌ`@@B# p :@@@:yN Q_Ą@b@(@+k@(pxwjA@BFB`܅w^\ # # B# A@6C@?6@?67# A@?6# A@XE# B# yc@6@6@@nҞXS@6# A@6# # B# B#  # AN 6AN @/6# AXLɞLОL؞v«# B# @@@Ɵ?abcdefgh^jklmnopq stuvwxy\{}[]@6C  ą :yG܆܃j HA. 6Ar6 @ ) @A )) :sC @`UD@k4c B# J A&70@;P; C70@@;P; DC70A L970@H@70BE;HF70@< A&70@ ;P<EF70@MA&70A;P<9&70@ ?CO)8Q#0 Ž 1AOMEGA 0@CO8S:A ?8`8C @`pB)1)1@ƀ@JAk`pBc # ) p ,܀# I )1    E  N1@o   0# I )1 C 0# BBN!@q) ,=;) C @)c # :}:W89?jC  pĆ67 1)1 YI C¥ D L WN!h t4R0R ,XfJ8P8E89:d8b,qHCECCٞsT i1A ,`@ , \)X1)IOIjðDD@NلQHC@+kT£ӣ󢢢1ǜ眦)A0$ ☜8`pF:CI9q@8|D9C9L9h8 #) {L8`9C @`pDqM `EBB`piIABc # :k:}B)C @ qS1G p `BC @E A@C @`pJ1) Dr)H)HJKN`pJEc c # @6A sXM m # + T) # :}:y:kBB:WBiPT TYPPTV:C @.)8ˀ`pD81H 'B@ @D.1.1G '7+ D3O :BByB9B )c #  7)# I# **DE **PE **SE :,:/:2:W:5 :C @` @UM p@rp1UF p@jk12`pDc # ,)C @@6 p GC @qB EC @F  `pBBB `pDc #  & A@+T@ SASO.@qF 1A B1 # # # :::;P;:CI ;:COSISOBI BOLOSC;P; UIUODITV;@@BCAR@@@@TXAABCAR@@@@PRA ABCAR@@@@PPA ABCAR@@@@LPA ABCAR@@@@CR@@BCI\@@@@DF;PA"A.BCCG CCBDXA=AIBCCG%CCBMM@@JCJ@@@@DU@@BC@@@@@:; <LAMBDA4 ::;PA :: ?:E,DF.LAMBDA4 e+ OM790111120000OM790111120000OM790111120000> @&@t@m jKkĀ iĀ+ux@Ā # @[@gL8@<m00255075SMc GNqʅ@# H# 00JO@ 1LJIq# # # ?  @?փֆ{ՆzvтuТР*+$hgDb  bb c@ `+A@*BHIf*+$hgDb  bb c@ `+A@*BHIfn NB ā` gE g?G= g9G7Nʰ` g2@bmĀIā @&@t@m jKkĀ iĀ+ux@Ā # @[@gL8@<m00255075SMc GNqʅ@# H# 00JO@ 1LJIq# # # ?  @?փֆ{ՆzvтuТР*+$hgDb  bb c@ `+A@*BHIf*+$hgDb  bb c@ `+A@*BHIfn NB ā` gE g?G= g9G7Nʰ` g2@bmĀIā @&@t@m jKkĀ iĀ+ux@Ā # @[@gL8@<m00255075SMc GNqʅ@# H# 00JO@ 1LJIq# # # ?  @?փֆ{ՆzvтuТР*+$hgDb  bb c@ `+A@*BHIf*+$hgDb  bb c@ `+A@*BHIfn NB ā` gE g?G= g9G7Nʰ`I/O USING VALUE IN DVX4 * DVMOD COPY =-16,A GET LOOP COUNT COPY A,DVLC SET UP LOOP COUNT COPY =BIAS,Y GET ADDR OF VECTOR BLOCK COPY =0,X INITIALIZE HALF-CHAN INDEX DVLOOP COPY 0(X,Y),A GET AN I/O INSTR AND =:FF0F,A REMOVE DEVICE ADDR ADD DVX4,A ADD NEW DEVICE ADDR COPY A,0(X,Y) RESTORE ADD =8,X INCR TO NEXT INSTR IMS DVLC CHECK LOOP JMP DVLOOP LOOP RSK RETURN DVX4 RES 1 ACTUAL DEVICE ADDRESS USED %4 DVLC RES 1 LOOP COUNT DVMSG WORD :0A0D LF-CR BYTE 'DEVICE ADDR =' DVMVAL EQU $-DVMSG*2 BYTE OFFSET FOR EDIT DVMWW BYTE 'XXXX' FOR ADDRESS DVMLN EQU $-DVMSG*2 WHOLE LENGTH LPOOL TITL !!! STACK !!! * * STACK * STACKL EQU 100 STACK SIZE STACK RES STACKL STACK TITL CONVERT FROM ABS TO REL FOR LINKING CONVENIENCE * * CONVERT FROM ABS TO REL FOR LINKING CONVENIENCE * REL $ WE ARE NOW IN RELATIVE MODE WORD 0 ALLOCATE A WORD TO ENSURE CHANGE END :A0 START AT USER TRAP TITL OMEGA INTERFACE FOR EXERCISER * * OMEGA INTERFACE FOR EXERCISER * NAM EX:OMEGA EXTR O:CMD,O:MSG EXTR EX:MXMUM MAXIMUM ADDRESS SPACE 1 ABS O4:BWD PATCH OMEGA TO FENCE OFF EXERCISER WORD EX:MXMUM ABS O4:BLL ETC. WORD EX:MXMUM SPACE 1 REL EXERCIZR EQU :A0 ENTRY POINT TO EXERCISER SPACE 1 EX:OMEGA COPY =:3040,A GET PROPER STATUS REG COPY A,S CONVERT TO OMEGA MODE UIS TELL CONTROLLERS SPACE 1 COPY ='CO',Q LUN FOR MSG COPY =OMSG,X ADDR OF MSG COPY =OMSGL,A LENGTH IN BYTES JSK O:MSG OUTPUT MSG JEQ X,$+2 CHECK STATUS JMP EXERCIZR JUMP BACK IF BAD SPACE 1 COPY =' ?',A GET PROMPT JSK O:CMD GET OMEGA COMMAND JSK O:ERFL ERROR IF WE RETURN JMP EXERCIZR BACK TO EXERCISER SPACE 1 OMSG BYTE 'OMEGA' BYTE :20,:0D OMSGL EQU $-OMSG*2 END L EXERCIZR EQU :A0 ENTRY POINT TO EXERCISER SPACE 1 EX:OMEGA COPY =:3040,A GET PROPER STATUS REG COPY A,S CONVERT TO OMEGA MODE UIS TELL CONT? ROLLERS SPACE 1 COPY ='CO',Q LUN FOR MSG COPY =OMSG,X ADDR OF MSG COPY =OMSGL,A LENGTH IN BYTES JSK O:MSG OUTPUT MSG JEQ X,$+2 CHECK STATUS JMP EXERCIZR JUMP BACK IF BAD SPACE 1 COPY =' ?',A GET PROMPT JSK O:CMD GET OMEGA COMMAND JSK O:ERFL ERRO WORD COUNT RBIT 8,S PREVENT CHANGE JSK BT TRANSFER BLOCK SBIT 8,S ALLOW INTS COPY STATID,A 1ST WORD OF ID COPY STATID+1,Q 2ND WORD OF ID COPY =STATC,Y DATA SOURCE COPY =-16,X WORD COUNT JSK LINE DUMP THE TABLE COPY BRK,A GET BREAK FLAG JEQ A,$+2 SKIP IF NOT SET JMP COMND GO DO NEXT COMMAND JSK BACKUP BACK UP THE CURSOR JMP DISP LOOP LC RES 1 TEMP RES 1 STATC RES 16 STATID BYTE 'STAT' LPOOL TITL RESET, CHANGE DEVICE ADDR (R) * * CODE TO ISSUE RESETS * * DEVICE ADDRESS IS RECOMPUTED HERE AFTER BOARD RESET. * SPECIAL BOARD OPERATIONS ARE SUPPORTED AS SINGLE CHAR * NUMERIC ARGUMENT TO THE R COMMAND: RN * RESET JST HTST CHECK FOR HEX DIGIT JMP RESET1 NOT HEX. PLAIN RESET ADD DVX4,Q ADD DEVICE ADDR TO HEX XNX Q INDEX NEXT INSTR SELP A,0 SEND SPECIFIED BOARD FUNC JSK CTRM CLOSE COMMAND JMP COMND GO DO NEXT ONE SPACE 2 RESET1 COPY DVX4,Q GET DEVICE ADDR XNX Q INDEX NEXT INSTR SELP A,:4 SEL FUNC 4 (RESET) COPY DV,Q GET DEVICE ADDR SHIFT Q,LO,4 POSITION FOR XNX'S. CSK Q,DVX4 ARE WE CHANGING ADDRESS NOP JMP $+2 YES JMP COMND NO COPY Q,DVX4 UPDATE ACTUAL ADDR CELL XNX Q INDEX NEXT INSTR SELP A,:4 SEND A RESET TO THE NEXT ONE COPY DV,A GET ADDRESS COPY =DVMSG,Y MSG ADDR COPY =DVMVAL,X BYTE OFFSET WHERE TO EDIT JSK CTH EDIT ADDRESS COPY =:2020,A GET BLANKS COPY A,DVMWW BLANK SOME CHARS COPY =DVMLN,X MSG LENGTH JSK PRINT PRINT ADDR JSK DVMOD MODIFY DEVICE ADDR JSK SETCDR UPDATE CDR JMP COMND GO FOR NEXT COMMAND TITL MODIFY DEVICE ADDRESS (DVMOD) * * MODIFY DEVICE ADDRESS IN AUTO I/O USING VALUE IN DVX4 * DVMOD COPY =-16,A GET LOOP COUNT COPY A,DVLC SET UP LOOP COUNT COPY =BIAS,Y GET ADDR OF VECTOR BLOCK COPY =0,X INITIALIZE HALF-CHAN INDEX DVLOOP COPY 0(X,Y),A GET AN I/O INSTR AND =:FF0F,A REMOVE DEVICE ADDR ADD DVX4,A ADD NEW DEVICE ADDR COPY A,0(X,Y) RESTORE ADD =8,X INCR TO NEXT INSTR IMS DVLC CHECK LOOP JMP DVLOOP LOOP RSK RETURN DVX4 RES 1 ACTUAL DEVICE ADDRESS USED %4 DVLC RES 1 LOOP COUNT DVMSG WORD :0A0D LF-CR BYTE 'DEVICE ADDR =' DVMVAL EQU $-DVMSG*2 BYTE OFFSET FOR EDIT DVMWW BYTE 'XXXX' FOR ADDRESS DVMLN EQU $-DVMSG*2 WHOLE LENGTH LPOOL TITL !!! STACK !!! * * STACK * STACKL EQU 100 STACK SIZE STACK RES STACKL STACK TITL CONVERT FROM ABS TO REL FOR LINKING CONVENIENCE * * CONVERT FROM ABS TO REL FOR LINKING CONVENIENCE * REL $ WE ARE NOW IN RELATIVE MODE WORD 0 ALLOCATE A WORD TO ENSURE CHANGE END :A0 START AT USER TRAP X4 RES 1 ACTUAL DEVICE ADDRESS USED %4 DVLC RES 1 LOOP COUNT DVMSG WORD :0A0D LF-CR BYTE 'DEVICE ADDR =' DVMVAL EQU $-DVMSG*2 BYTE OFFSETDELAY LOOP COUNTER LPOOL TITL !!!!! ALLOCATION BOUNDARY!!!!! * * ALLOCATION BOUNDARY * ENDPART1 EQU $ MARK THE END ABS PART2 START NEXT SECTION HERE IFT $-ENDPART1<0 ALLOCATION ERROR? NOTE E,'ALLOCATION ERROR' ENDC BUFFSV RES TBUFL BUFFER SAVE AREA TITL AUTO I/O INTERRUPT LOCATIONS BIAS EQU $ INITIAL ADDR OF VECTOR BLOCK * * AUTO I/O INTERRUPT LOCATIONS * VP AOT,0 VP AOT,1 VP AOT,2 VP AOT,3 VP AOT,4 VP AOT,5 VP AOT,6 VP AOT,7 VP AIN,8 VP AIN,9 VP AIN,10 VP AIN,11 VP AIN,12 VP AIN,13 VP@  AIN,14 VP AIN,15 TITL FIXED LOCATION TABLES * * STATUS TABLE * * 16 WORDS * STAT RES 16 * * INITIAL CHANNEL COMMANDS * *  8 WORDS * INSTR RES 8 RES 8,:FFFF DUMMY * * INTERRUPT CHANNEL COMMANDS * * 16 WORDS * IINSTR RES 16 * * BYTE COUNT TABLE * BC RES 16 * * BYTE COUNT ON LAST EOB * OBC RES 16 * * BUFFER LOCN TABLE * BL RES 16 * * BUFFER LOCATION POINTER ON LAST EOB * OBL RES 16 * * INCREMENT TABLE SHOWS ACTIVITY * * HALF-CHANNEL ENTRY IS INCREMENTED AT END-OF-BLOCK * INC RES 16 * * BUFFERS * BUFF RES TBUFL * * CHANNEL ACTIVATE MASK * * BIT 2^N CAUSES INITIAL ACTIVATION OF CHAN N * BIT MASK NOT USED FOR COMMAND REFRESH (DURING EOB INTRPT) * CHAN RES 1 BITS FOR ACTIVE CHANS * * INITIAL PROGRAM TO EXECUTE WHEN CRT IS NOT PRESENT * INTPRG WORD :B RES 1,:FFFF DUMMY * * STORED OPTION TABLE * OPTBL EQU 8 LENGTH OF STORED OPTION TABLE OPTABR WORD :23,:DD,:3A,:37,0,0,0,0 REFRESH SOURCE OPTAB RES OPTBL TABLE FOR USE * * STORED SPECIAL CHARACTER TABLE * SPCTBR WORD :3B,:0D 2 CR'S SPCTB RES 2 SPECIAL CHARACTER TABLE * * DEVICE ADDRESS * DV WORD :7 DEFAULT TO 7 TITL HALF-CHANNEL EOB ROUTINES * * END OF BLOCK HEADER ROUTINES * EOB0 EP 0 EOB1 EP 1 EOB2 EP 2 EOB3 EP 3 EOB4 EP 4 EOB5 EP 5 EOB6 EP 6 EOB7 EP 7 EOB8 EP 8 EOB9 EP 9 EOB10 EP 10 EOB11 EP 11 EOB12 EP 12 EOB13 EP 13 EOB14 EP 14 EOB15 EP 15 TITL RE-ENTRANT INTERRUPT AND DEVICE HANDLERS * * COMMON EOB ROUTINE * *  (RE-ENTRANT) * * X CONTAINS THE HALF-CHANNEL NUMBER * EOB EQU $ COPY =INC,Y TABLE ADDR IMS 0(X,Y) INCREMENT CONTENT OF ENTRY NOP DON JSK IN GET CHANNEL STATUS PUTX A,STAT STORE STATUS IN TABLE JSK RF REFRESH AIO BLOCK COPY =IINSTR,Y TABLE HEADER  JSK OUT INITIATE OUTPUT POP RESTORE CONTEXT RSK AND EXIT TO PREVIOUS CONTEXT * * REFRESH AIO BLOCK * * (RE-ENTRANT) * *  X CONTAINS THE HALF-CHANNEL PARAMETER * RF EQU $ COPY X,Q COPY PARAMETER SHIFT Q,LO,3 TIMES 8 ADD =BIAS,Q ABSOLUTIZE TO AIO BLOCK GETX BC,A GET PROPER BYTE COUNT NEG A,A FORM NEG COPY Q,Y MOVE TO INDEX EXCH A,1(Y) REFRESH BYTE COUNT PUTX A,OBC STORE OLD VALUE IN TABLE GETX BL,A GET PROPER BUF LOCN SUB =1,A LESS ONE COPY Q,Y MOVE TO INDEX EXCH A,2(Y) REFRESH BUFFER LOCN PUTX A,OBL SAVE OLD VALUE IN TABLE RSK RETURN * * INITIATE FUNCTION ROUTINE * * (RE-ENTRANT) * * Y CONTAINS INSTRUCTION TABLE ADDRESS * X CONTAINS HALF-CHANNEL PARAMETER * OUT COPY 0(X,Y),A LOAD FUNCTION COPY X,Y COPY CHAN INDEX AND =:7,Y ISOLATE TRUE CHANNEL SHIFT Y,LO,1 DOUBLE ADD DVX4,Y INSERT DEVICE ADDR XNX Y INDEX NEXT INSTR OUT A,1 SEND OUTPUT FUNCTION RSK RETURN * * STATUS READ ROUTINE * * (RE-ENTRANT) * * X CONTAINS HALF-CHANNEL PARAMETER * A CONTAINS STATUS ON RETURN * IN COPY X,Y COPY HALF-CHAN NUMBER AND =:7,Y SHIFT Y,LO,1 TIMES 2 ADD DVX4,Y INSERT DEVICE ADDR XNX Y INDEX NEXT INSTR IN 1,A LOAD STATUS RSK RETURN LPOOL TITL UTILITIES * * TURN CURSOR ON AND OFF * CURN COPY =:13,A GET CTRL-S (TURNS ON CA CRT CURSOR) JMP $+2 SKIP CURF COPY =:14,A GET CTRL-T (TURNS OFF CA CRT CURSOR) ROTATE A,L,8 LEFT JUSTIFY COPY A,CURMSG STORE IN MEMORY COPY =0,A GET ZERO EXCH A,LPF SAVE AND RESET LIN PRT FLAG COPY A,LPFSAV ETC. COPY =CURMSG,Y ADDR OF MSG COPY =1,X ONE CHAR JSK PRINT PUT IT OUT COPY LPFSAV,A GET SAVED LPF COPY A,LPF RESTORE RSK RETURN LPFSAV RES 1 SAVE LPF HERE CURMSG RES 1 HOLDA  CURSOR CONTROL CHARACTER LPOOL * * ROUTINE TO DELAY ABOUT 2/3 SECOND * * THIS ROUTINE MUST BE CALLED WITH THE STACK POINTER POSITIONED * TO RETURN (VIA POP AND RSK) FROM THE CURRENT LOGICAL INTERRUPT. * BRKWT ENT ENTER ON JST (NON-REENTRANT) COPY =-80,Q GET 2/3 SECOND COPY Q,RTC SET UP CLOCK COUNT COPY =BRKRTN,Q GET INTRPT ADDR COPY Q,RTC+2 SET UP JUMP ADDR COPY BJMP,Q GET ARMING JUMP INSTR COPY Q,RTC+1 ARM THE CLOCK POP RESTORE CALLERS CONTEXT RSK AND RETURN TO POINT OF INTRPT * BRKRTN PUSH :40 SAVE CONTEXT SIN 1 HOLD INTS FOR CRITICAL SEQ COPY =0,Q GET ZERO COPY Q,RTC+1 DISABLE JUMPS (NOP AT VECTOR) JMP *BRKWT RE-CALL USER CODE BJMP JSK *$+1 FOR CLOCK JUMP LPOOL * * GIVE IDENTIFIED HEX DUMP OF A TABLE * * AQ = 4 CHARS ID Y = TABLE ADDR  X = -WORD COUNT * * ON RETURN, LINTOT CONTAINS THE NUMBER OF LINES PRINTED * LINE COPY X,LINECT SAVE WORD COUNT COPY A,OBUF+2 STORE 1ST WORD OF ID COPY Q,OBUF+3 STORE 2ND WORD OF ID COPY Y,LINADD SET UP LINADD COPY =:0A0D,A GET LF-CR COPY A,OBUF PUT IN OUTPUT BUFFER COPY =:3E20,A GET LINE INDICATOR COPY A,OBUF+1 PUT IN PLACE COPY =:2020,A WORD OF BLANKS COPY A,OBUF+4 BLANK CERTAIN PARTS OF LINE COPY =:3D20,A EQUALS-BLANK COPY A,OBUF+7 ETC. COPY =0,A GET ZERO COPY A,LINTOT INITIALIZE LINE COUNT LINELP COPY =OBUF+8,Y INDEX TO START BLANKING COPY =-20,Q WORD COUNT JSK BLANK BLANK OUT REST OF LINE COPY =10,X SET UP BYTE INDEX COPY =OBUF,Y SET UP INDEX TO BUFFER COPY LINADD,A GET ADDRESS TO EDIT JSK CTH CONVERT TO HEX ADD =2,X SKIP TWO COLS COPY =-8,Q MAX LOOP COUNT CSK Q,LINECT COMPARE TO WHAT'S LEFT COPY LINECT,Q USE LESS, HERE NOP NO CHANGE JSK CBTH CONVERT A BLOCK COPY =56,X LINE LENGTH (MAX) JSK PRINT PRINT THE LINE IMS LINTOT INCR LINE COUNT JSK ERSLP ERASE THE LINE POINTER COPY =2,A WAIT SOME HUNDREDTHS OF SEC JST TRDLIN OPERATOR HAVE ANYTHING? NOP DON'T CARE HERE COPY LINECT,Q GET REMAINING COUNT ADD =8,Q LESS MAX DO-ABLE COPY Q,LINECT RESTORE, IN CASE JGE Q,LXIT EXIT IF NO MORE TO EDIT COPY BRK,A GET BREAK FLAG JEQ A,LINELP LOOP IF NOT SET COPY LINECT,Q GET COUNT REMAINING CSK Q,=-25*8 MORE THAN SCREEN FULL? COPY =-25*8,Q YES. LIMIT MAGNITUDE OF Q NOP COPY Q,LINECT UPDATE CELL JMP LINELP LOOP LXIT RSK RETURN * ERSLP COPY LINCTL,A GET CTRL FOR UPAROW SHIFT A,RO,8 RIGHT JUSTIFY CLSN A,=:1A PROBABLE 'ADS' CRT? RSK YES, DON'T MAKE FLICKER COPY =ERSLPS,Y STRING ADDR COPY =4,X 4 CHARS JSK PRINT PUT THEM OUT RSK RETURN ERSLPS WORD :0A0D LF-CR LINCTL RES 1,UAC%8+:20 CONTAINS UP-ARROW+BLANK LINECT RES 1 WORD COUNT LINTOT RES 1 LINE COUNTER OBUFL EQU 40 LENGTH OF BUFFER OBUF RES OBUFL OUTPUT BUFFER LPOOL TITL START MUX (S) * * START UP MUX * BEGIN COPY CHAN,A GET CURRENT CHAN MASK JEQ A,BEGPRT ALWAYS PRINT IF ZERO CSK A,CHANSV ELSE, IS SAME AS LAST TIME? NOP JMP $+2 NO. JMP BEGIN1 YES. GO ON BEGPRT COPY A,CHANSV UPDATE SAVE REGISTER COPY CHANID,X GET 1ST WORD OF ID COPY CHANID+1,Y GET 2ND WORD JSK PRMASK LIST CHANNEL MASK BEGIN1 COPY =0,X INITIALIZE INDEX COPY =-16,A LOOP COUNT COPY A,LC SET UP COUNTER LOOP JSK RF REFRESH AIO BLOCK COPY =:FFFF,A GET ALL BITS PUTX A,STAT STORE INTO PROPER SLOT PUTX A,OBC PREP OLD BYTE COUNT PUTX A,OBL PREP OLD BUFFER LOCN ADD =1,X INCR INDEX IMS LC LOOP TEST JMP LOOP GO AROUND * COPY =0,X INITIALIZE CHAN INDEX COPB Y =-8,A GET A COUNT COPY A,LC SET UP LOOP COUNT COPY CHAN,Q GET CHANNEL MASK COPY Q,TEMP SAVE IT LOOP0 COPY TEMP,Q GET CURRENT MASK SHIFT Q,RO,1 GET NEXT CHAN BIT COPY Q,TEMP RESTORE MASK JF OV,LOOP1 SKIP IF OFF COPY =INSTR,Y TABLE HEADER JSK OUT INITIATE OUTPUT LOOP1 ADD =1,X INCREMENT INDEX IMS LC CHECK LOOP COUNT JMP LOOP0 GO AROUND IF MORE JMP COMND GO TO COMMAND LOOP CHANSV WORD :FFFF CHAN MASK SAVE CELL CHANID BYTE 'CHAN' LPOOL * * PRINT MASK * * ID'S IN X,Y. VALUE IN A * PRMASK COPY X,CHMSG+1 STUFF IN MSG COPY Y,CHMSG+2 2ND WORD COPY =CHMSG,Y MESSAGE ADDR COPY =CHMSK,X GET OFFSET IN X TO EDIT JSK CTH CONVERT TO HEX COPY =CHMSGL,X MESG LENGTH JSK PRINT OUTPUT RSK CHMSG WORD :0A0D LF-CR BYTE 'XXXX MASK = ' CHMSK EQU $-CHMSG*2 BYTE OFFSET BYTE 'XXXX' CHMSGL EQU $-CHMSG*2 LENGTH TITL DISPLAY EOB STATUS SNAPSHOT * * DISPLAY LOOP * * A 'SNAPSHOT' OF EOB STATUS IS DISPLAYED * (THE TABLE IS COPIED WITH INTRPTS PREVENTED) * DISP0 EQU $ DISP EQU $ COPY =STAT,X SOURCE COPY =STATC,Y QU $-DVMSG*2 BYTE OFFSET FOR EDIT DVMWW BYTE 'XXXX' FOR ADDRESS DVMLN EQU $-DVMSG*2 WHOLE LENGTH LPOOL TITL !!! STACK !!! * * STACK * STACKL EQU 100 STACK SIZE STACK RES STACKL STACK TITL CONVERT FROM ABS TO REL FOR LINKING CONVENIENCE * * CONVERT FROM ABS TO REL FOR LINKING CONVENIENCE * REL $ WE ARE NOW IN RELATIVE MODE WORD 0 ALLOCATE A WORD TO ENSURE CHANGE END :A0 START AT USER TRAP OM790111120000OM790111120000OM79011112000040SmPCOL`o?6x3D(,H** FRONT END CHECK **..HINPUT CHANNEL NUMBER:....IN40 USE LOCN 10 IN SCRATCH TO HOLD NUMBER..Z CLEAR EXERCISER.R RESET THE MUX BOARD.R6 INHIBIT BOARD GENERATION OF INTS.M3090+40*,10F0+4100 DIAG(OUT)+ROT(IN).S START (4100 WILL HANG INPUT, NO INTS).M41,1 INITIALIZE BIT VALUE..M42,1000 SET FINAL LIMIT..ER01 CALL TEST..R RESET MUX BOARD.HTEST CONCLUDED .... M3090+40*,5000+11* SET UP PATTERN.S SEND TO FRONT END.ER02 CHECK RESULT.M41,41*+41* SHIFT BIT TO LEFT.CMS41,41,42 LIMIT?..E01 NO, LOOP..EX EXIT WHEN THROUGH.. LR50 READ STATUS INTO MEM.CMS50+40*,50+40*,41,FFF PROPER RESULT BACK?.E03 PERFORM ERROR OPERATIONS IF NOT.EX ELSE, RETURN FROM CALL. H** MODEM REGISTER CONTINUOUS WRITE.HSELECT CHANNEL:..IN10 PUT CHANNEL NUMBER HERE..HSELECT PATTERN (:0-:7) :.IN11 PUT PATTERN HERE.Z.R RESET BOARD.M3090+10*,1000+11* SET UP WMR COMMAND.M30A0+10*,1000+11* SET UP REFRESH.S START IT UP.HEND OF BLOCK STATUS---.L3080+10*,3080+10*.. H** MODEM REGISTER CONTINUOUS READ..HSELECT CHANNEL:..IN10 PUT CHANNEL NUMBER HERE..Z CLEAR EXERCISER.R RESET BOARD.M3090+10*,4000 SET UP RMR COMMAND.M30A0+10*,4000 SET UP REFRESH.S CRANK IT UP.HEND OF BLOCK STATUS---.L3080+10*,3080+10*.. HUART OPTION CONTINUOUS WRITE FROM :360B..HSELECT CHANNEL:..IN10 PUT CHANNEL NUMBER HERE..Z CLEAR EXERCISER.R RESET BOARD.M3090+10*,1020 SET UP WOT COMMAND.M30A0+10*,1020 SET UP REFRESH.M30B0+10*,4 WRITE ONLY 4 BYTES..M30D0+10*,360B WRITE FROM WORKING TABLE.HEND OF BLOCK STATUS---.L3080+10*,3080+10* LIST EOB STATUS ONCE. H** UART OPTION TABLE CONTINUOUSC  READ **..HSELECT CHANNEL:..IN10 PUT CHANNEL NUMBER HERE..Z CLEAR EXERCISER.R RESET BOARD.M3090+10*,4100 SET UP ROT COMMAND.M30A0+10*,4100 ALSO REFRESH.M30B0+10*,5 TRANSFER 5 BYTES..C30D0+10*,30D0+10*,11 ADDR OF INPUT BUFFER TO :11.F11*,11*+4,FFFF CLR INPUT BUFFER..AF SET UP PRIMARIES FOR INPUT.S CRANK IT UP.HINPUT BUFFER---..L11*,11*+4 DISPLAY 5 BYTES.. HMISCOMPARE!!!!!!!..HVALUE SHOULD BE,,,.L41,41 LIST REFERENCE.HVALUE WAS,,,.L50+40*,50+40* LIST ACTUAL..HRECHECKING,,...E2.................................. ..HSELECT CHANNEL:..IN10 PUT CHANNEL NUMBER HERE..Z CLEAR EXERCISER.R RESET BOARD.M3090+10*,4100 SET UP ROT COMMAND.M30A0+10*,4100 ALSO REFRESH.M30B0+10*,5 TRANSFER 5 BYTES..C30D0+10*,30D0+10*,11 ADDR OF INPUT BUFFER TO :11.F11*,11*+4,FFFF CLR INPUKKK.P @0| v1uo)  " }jA ce":I "[ 00"I120000OM7901"ke" OMEGA:PLUS eSx ) eSw) p[ !1  B B  ~#   a`6z¤ B t  A a`6M• B po  | xwv6H+ ]e JRiCp@=<; G9P@ G1>) 1)313 wDF #/TV qHCECCݞsT 1A ,`@ , X)1)IÞSILjDD@NلQHC@+kT§ӧ󦢦1Ǡ砦)A0$ ✜6`pF|CIWx >1Ajr1`d1 C @``pD1ÄDc Uc Ā #) {w*sdbC @`pDqM `EBB`piIABc # fx C @ :`pB`pB.rc # `prErE# )g -)b )# )C @ 2qS1G p `BC @E A@C @`pJ1) Dr)H)HJKN`pJEc c # @6A sXM m # + T) # xtf l 'PT TYPPTVC @.)8Ѐ`pD81H 'G@ @D.1.1G '<+ D3O :BByB9B )c #  7)# I# **DE **PE **SE **SY  C @` @UM p@rp1UF p@jk12`pDc # .2` xꘀ@.2r` x꒴@# 0123456789ABCDEF   1))1)# ,,)`pD Bc # ۤ) 1)1)#  s,)C @@6 p GC @qB EC @F  `pBBB `pDc # & A@+T@ SASO.@qF 1A B1 # # 2# CITV/I )@6A HDT# ntC @@ pc # C @@c # C @@oC @@c # C @@dC @@c # B @C @@p`HB`HAc # C @s@`(# C @@p`HB`HAc # C @s  XC  * XX  ܃1F܃ DB܃CȞC @ăN U@C }  yОqrǞ@܃UbsKj䃀@mC C _q ׄ@j@ -`*@ v@c @ĀAy  `6D肀@r肀@H ă)c  C } {} W _`p@`p@# _# r@ p D -DxC)t /*n܃A  - D D ϸDsr u_6 0m 1 is} ܃ DH D L DL  ܅ .@ UBD} Dt LpqD LhL fDDDlXr)`p U`pJEc qpB) 3 0xAIĐ .Aʄ ҠA) .lA` kB Ac # `pD{`pCC# r Drr U`pEc q)B pIЄ @ANĐI+AQ Us #[ 1 o@NyN2tLsLq 1A{_IĄw @6O tABh  @6A G@`(OLBqq  5k8_NBȆNąR rܞlkC @I)`pDGc ʞ\H@k@Q܆ PT@܅mc x ]] "I`(+ `pA8@ HAkTj eDICkI`(+ I`(S C @GEC`pB`pFc # SA @ȏď@6F @Ić& WD`p@# D``JK# ] ^E 1€G@6܃B A1' ALL Dw ] tXhC @ pDc # uАؐ֍ؐА# yC @ pCc # ў@AąĆEǞ@VAӀBЀC̀DʀEǀFĀGjqK# hkk܅\/`x@`x#  # Oph@v N # IlkGWQxNyQIďK# )^ > oC @HrTr1A .JTc # QCTrU91 Qc # 1x,) c # )1C @`p Z 0 ; @Fc # @kk# p #    nC @n`i`l gH e Ib^\`@@X QHX QHX QE ML pc # ECA@@B @d # B# };X# C @ +nx)I@&'I$gH!dG |C @# A@6‘# BˆӈUP W pwwwc C @L1| nn # @6cc #  C @C @II I Iy@6Pc ` p+ pN L L p c # p+s# B# A@6<# # n`# e`9#  # x`B# b# # a`@xAlK`pCDH @r# @# kT# r@# @@@kT p䄀 :# BFT p 3BA# ĄN @b@ӌ`@@B# p 4WVUtN Q_Ą@b@(@+k@(pxwjA@BFB`܅w^\ # # B# A@6C@?6@?67# A@?6# A@XE# B# yc@6@6@@nҞXS@6# A@6# # B# B#  # AN 6AN @/6# AXLɞLОL؞v«# B# @@@ƟW pwwwc C @L1| nn # @6cc #  C @C @II I Iy@6Pc ` p+ pN L L p c # p+s# B# A@6<# # n`# e`9#  # x`B# b# # a`@xAlK`pCDH @r# @# kT# r@# @@@kT p䄀 :# BFT p BA# ĄN @b@ӌ`@@B# p :@@@:yN Q_Ą@b@(@+k@(pxwjA@BFB`܅w^\ # # B# A@6C@?6@?67# A@?6# A@XE# B# yc@6@6@@nҞXS@6# A@6# # B# B#  # AN 6AN @/6# AXLɞLОL؞v«# B# @@@Ɵ?abcdefgh^jklmnopq stuvwxy\{}[]@6C  ą :yG܆܃j HA. 6Ar6 @ ) @A )) :sC @`UD@k4c B# J J  EXIT TITL * * SPECIAL THINGS TO DO FOR TRDLIN WHEN CRT ABSENT * RNIO JF SS,$+2 DO 'BREAK' IF SW RESET JMP *TRDLIN ELSE, SIMULATE 'NO RESPONSE' IMS TRDLIN TAKE 'REPONSE FOUND' EXIT COPY =:0D,A GET CR COPY A,BRK SIMULATE CR BREAK FROM CRT COPY =0,A GET ZERO COPY A,RDSTAT IN CASE ANYONE CHECKS COPY =1,A GET ONE COPY A,RDSIZE FOR CHAR COUNT OUT A,:0 SET SS AGAIN JMP *TRDLIN RETURN LPOOL * * END OF BLOCK INTERRUPT PROCESSING * RDINT PUSH :40 SAVE CONTEXT IN TV+1,A GET STATUS FROM PICO COPY A,RDSTAT STORE FOR IN-LINE CODE TBIT 5,A GET FRAME ERR BIT JF OV,$+2 'BREAK' OCCUR? JST BRKWT GO WAIT TO LET BREAK CLEAR COPY =0,A GET ZERO COPY A,IBSY RESET BUSY FLAG POP RESTORE CONTEXT RSK RETURN IBUFL EQU 40 INPUT BUFFER LENGTH IBUFA WORD IBUF*2-1 INITIAL BYTE ADDR IBUF RES IBUFL INPUT BUFFER WORD :5F0D BACK ARROW-CR IJMP JSK *$+1 EOB JUMP INSTR IBSY RES 1 INPUT BUSY FLAG RDSTAT RES 1 HOLD READ STATUS RDSIZE RES 1 HOLD SIZE OF READ STRING AIB AIB TV AUTO INPUT INSTR IDLAY RES 1 DELAY LOOP COUNTER LPOOL TITL !!!!! ALLOCATION BOUNDARY!!!!! * * ALLOCATION BOUNDARY * ENDPART1 EQU $ MARK THE END ABS PART2 START NEXT SECTION HERE  IFT $-ENDPART1<0 ALLOCATION ERROR? NOTE E,'ALLOCATION ERROR' ENDC BUFFSV RES TBUFL BUFFER SAVE AREA TITL AUTO I/O INTERRUPT LOCATIONS BIAS EQU $ INITIAL ADDR OF VECTOR BLOCK * * AUTO I/O INTERRUPT LOCATIONS * VP AOT,0 VP AOT,1 VP AOT,2 VP AOT,3 VP AOT,4 VP AOT,5 VP AOT,6 VP AOT,7 VP AIN,8 VP AIN,9 VP AIN,10 VP AIN,11 VP AIN,12 VP AIN,13 VP AIN,14 VP AIN,15 TITL FIXED LOCATION TABLES * * STATUS TABLE * * 16 WORDS * STAT RES 16 * * INITIAL CHANNEL COMMANDS * * 8 WORDS * INSTR RES 8 RES 8,:FFFF DUMMY * * INTERRUPT CHANNEL COMMANDS * * 16 WORDS * IINSTR RES 16 * * BYTE COUNT TABLE * BC RES 16 * * BYTE COUNT ON LAST EOB * OBC RES 16 * * BUFFER LOCN TABLE * BL RES 16 * * BUFFER LOCATION POINTER ON LAST EOB * OBL RES 16 * * INCREMENT TABLE SHOWS ACTIVITY * * HALF-CHANNEL ENTRY IS INCREMENTED AT END-OF-BLOCK * INC RES 16 * * BUFFERS * BUFF RES TBUFL * * CHANNEL ACTIVATE MASK * * BIT 2^N CAUSES INITIAL ACTIVATION OF CHAN N * BIT MASK NOT USED FOR COMMAND REFRESH (DURING EOB INTRPT) * CHAN RES 1 BITS FOR ACTIVE CHANS * * INITIAL PROGRAM TO EXECUTE WHEN CRT IS NOT PRESENT * INTPRG WORD :B RES 1,:FFFF DUMMY * * STORED OPTION TABLE * OPTBL EQU 8 LENGTH OF STORED OPTION TABLE OPTABR WORD :23,:DD,:3A,:37,0,0,0,0 REFRESH SOURCE OPTAB RES OPTBL TABLE FOR USE * * STORED SPECIAL CHARACTER TABLE * SPCTBR WORD :3B,:0D 2 CR'S SPCTB RES 2 SPECIAL CHARACTER TABLE * * DEVICE ADDRESS * DV WORD :7 DEFAULT TO 7 TITL HALF-CHANNEL EOB ROUTINES * * END OF BLOCK HEADER ROUTINES * EOB0 EP 0 EOB1 EP 1 EOB2 EP 2 EOB3 EP 3 EOB4 EP 4 EOB5 EP 5 EOB6 EP 6 EOB7 EP 7 EOB8 EP 8 EOB9 EP 9 EOB10 EP 10 EOB11 EP 11 EOB12 EP 12 EOB13 EP 13 EOB14 EP 14 EOB15 EP 15 TITL RE-ENTRANT INTERRUPT AND DEVICE HANDLERS * * COMMON EOB ROUTINE * * (RE-ENTRANT) * * X CONTAINS THE HALF-CHANNEL NUMBER * EOB EQU $ COPY =INC,Y TABLE ADDR IMS 0(X,Y) INCREMENT CONTENT OF ENTRY NOP DON JSK IN GET CHANNEL STATUS PUTX A,STAT STORE STATUS IN TABLE JSK RF REFRESH AIO BLOCK COPY =IINSTR,Y TABLE HEADER JSK OUT INITIATE OUTPUT POP RESTORE CONTEXT RSK AND EXIT TO PREVIOUS CONTEXT * * REFRESH AIO BLOCK * * (RE-ENTRANT) * * X CONTAINS THE HALF-CK HANNEL PARAMETER * RF EQU $ COPY X,Q COPY PARAMETER SHIFT Q,LO,3 TIMES 8 ADD =BIAS,Q ABSOLUTIZE TO AIO BLOCK GETX BC,A GET PROPER BYTE COUNT NEG A,A FORM NEG COPY Q,Y MOVE TO INDEX EXCH A,1(Y) REFRESH BYTE COUNT PUTX A,OBC STORE OLD VALUE IN TABLE  GETX BL,A GET PROPER BUF LOCN SUB =1,A LESS ONE COPY Q,Y MOVE TO INDEX EXCH A,2(Y) REFRESH BUFFER LOCN PUTX A,OBL SAVE OLD VALUE IN TABLE RSK RETURN * * INITIATE FUNCTION ROUTINE * * (RE-ENTRANT) * * Y CONTAINS INSTRUCTION TABLE ADDRESS * X CONTAINS HALF-CHANNEL PARAMETER * OUT COPY 0(X,Y),A LOAD FUNCTION COPY X,Y COPY CHAN INDEX AND =:7,Y ISOLATE TRUE CHANNEL SHIFT Y,LO,1 DOUBLE ADD DVX4,Y INSERT DEVICE ADDR XNX Y INDEX NEXT INSTR OUT A,1 SEND OUTPUT FUNCTION RSK RETURN * * STATUS READ ROUTINE * * (RE-ENTRANT) * * X CONTAINS HALF-CHANNEL PARAMETER * A CONTAINS STATUS ON RETURN * IN COPY X,Y COPY HALF-CHAN NUMBER AND =:7,Y SHIFT Y,LO,1 TIMES 2 ADD DVX4,Y INSERT DEVICE ADDR XNX Y INDEX NEXT INSTR IN 1,A LOAD STATUS RSK RETURN LPOOL TITL UTILITIES * * TURN CURSOR ON AND OFF * CURN COPY =:13,A GET CTRL-S (TURNS ON CA CRT CURSOR) JMP $+2 SKIP CURF COPY =:14,A GET CTRL-T (TURNS OFF CA CRT CURSOR) ROTATE A,L,8 LEFT JUSTIFY COPY A,CURMSG STORE IN MEMORY COPY =0,A GET ZERO EXCH A,LPF SAVE AND RESET LIN PRT FLAG COPY A,LPFSAV ETC. COPY =CURMSG,Y ADDR OF MSG COPY =1,X ONE CHAR JSK PRINT PUT IT OUT COPY LPFSAV,A GET SAVED LPF COPY A,LPF RESTORE RSK RETURN LPFSAV RES 1 SAVE LPF HERE CURMSG RES 1 HOLD CURSOR CONTROL CHARACTER LPOOL * * ROUTINE TO DELAY ABOUT 2/3 SECOND * * THIS ROUTINE MUST BE CALLED WITH THE STACK POINTER POSITIONED * TO RETURN (VIA POP AND RSK) FROM THE CURRENT LOGICAL INTERRUPT. * BRKWT ENT ENTER ON JST (NON-REENTRANT) COPY =-80,Q GET 2/3 SECOND COPY Q,RTC SET UP CLOCK COUNT COPY =BRKRTN,Q GET INTRPT ADDR COPY Q,RTC+2 SET UP JUMP ADDR COPY BJMP,Q GET ARMING JUMP INSTR COPY Q,RTC+1 ARM THE CLOCK POP RESTORE CALLERS CONTEXT RSK AND RETURN TO POINT OF INTRPT * BRKRTN PUSH :40 SAVE CONTEXT SIN 1 HOLD INTS FOR CRITICAL SEQ COPY =0,Q GET ZERO COPY Q,RTC+1 DISABLE JUMPS (NOP AT VECTOR) JMP *BRKWT RE-CALL USER CODE BJMP JSK *$+1 FOR CLOCK JUMP LPOOL * * GIVE IDENTIFIED HEX DUMP OF A TABLE * * AQ = 4 CHARS ID Y = TABLE ADDR X = -WORD COUNT * * ON RETURN, LINTOT CONTAINS THE NUMBER OF LINES PRINTED * LINE COPY X,LINECT SAVE WORD COUNT COPY A,OBUF+2 STORE 1ST WORD OF ID COPY Q,OBUF+3 STORE 2ND WORD OF ID COPY Y,LINADD SET UP LINADD COPY =:0A0D,A GET LF-CR COPY A,OBUF PUT IN OUTPUT BUFFER COPY =:3E20,A GET LINE INDICATOR COPY A,OBUF+1 PUT IN PLACE COPY =:2020,A WORD OF BLANKS COPY A,OBUF+4 BLANK CERTAIN PARTS OF LINE COPY =:3D20,A EQUALS-BLANK COPY A,OBUF+7 ETC. COPY =0,A GET ZERO COPY A,LINTOT INITIALIZE LINE COUNT LINELP COPY =OBUF+8,Y INDEX TO START BLANKING COPY =-20,Q WORD COUNT JSK BLANK BLANK OUT REST OF LINE COPY =10,X SET UP BYTE INDEX COPY =OBUF,Y SET UP INDEX TO BUFFER COPY LINADD,A GET ADDRESS TO EDIT JSK CTH CONVERT TO HEX ADD =2,X SKIP TWO COLS COPY =-8,Q MAX LOOP COUNT CSK Q,LINECT COMPARE TO WHAT'S LEFT COPY LINECT,Q USE LESS, HERE NOP NO CHANGE JSK CBTH CONVERT A BLOCK COPY =56,X LINE LENGTH (MAX) JSK PRINT PRINT THE LINE IMS LINTOT INCR LINE COUNT JSK ERSLP ERASE THE LINE POINTER COPY =2,A WAIT SOME HUNDRL EDTHS OF SEC JST TRDLIN OPERATOR HAVE ANYTHING? NOP DON'T CARE HERE COPY LINECT,Q GET REMAINING COUNT ADD =8,Q LESS MAX DO-ABLE COPY Q,LINECT RESTORE, IN CASE JGE Q,LXIT EXIT IF NO MORE TO EDIT COPY BRK,A GET BREAK FLAG JEQ A,LINELP LOOP IF NOT SET COPY LINECT,Q GET COUNT REMAINING CSK Q,=-25*8 MORE THAN SCREEN FULL? COPY =-25*8,Q YES. LIMIT MAGNITUDE OF Q NOP COPY Q,LINECT UPDATE CELL JMP LINELP LOOP LXIT RSK RETURN * ERSLP COPY LINCTL,A GET CTRL FOR UPAROW SHIFT A,RO,8 RIGHT JUSTIFY CLSN A,=:1A PROBABLE 'ADS' CRT? RSK YES, DON'T MAKE FLICKER COPY =ERSLPS,Y STRING ADDR COPY =4,X 4 CHARS JSK PRINT PUT THEM OUT RSK RETURN ERSLPS WORD :0A0D LF-CR LINCTL RES 1,UAC%8+:20 CONTAINS UP-ARROW+BLANK LINECT RES 1 WORD COUNT LINTOT RES 1 LINE COUNTER OBUFL EQU 40 LENGTH OF BUFFER OBUF RES OBUFL OUTPUT BUFFER LPOOL TITL START MUX (S) * * START UP MUX * BEGIN COPY CHAN,A GET CURRENT CHAN MASK JEQ A,BEGPRT ALWAYS PRINT IF ZERO CSK A,CHANSV ELSE, IS SAME AS LAST TIME? NOP JMP $+2 NO. JMP BEGIN1 YES. GO ON BEGPRT COPY A,CHANSV UPDATE SAVE REGISTER COPY CHANID,X GET 1ST WORD OF ID COPY CHANID+1,Y GET 2ND WORD JSK PRMASK LIST CHANNEL MASK BEGIN1 COPY =0,X INITIALIZE INDEX COPY =-16,A LOOP COUNT COPY A,LC SET UP COUNTER LOOP JSK RF REFRESH AIO BLOCK COPY =:FFFF,A GET ALL BITS PUTX A,STAT STORE INTO PROPER SLOT PUTX A,OBC PREP OLD BYTE COUNT PUTX A,OBL PREP OLD BUFFER LOCN ADD =1,X INCR INDEX IMS LC LOOP TEST JMP LOOP GO AROUND * COPY =0,X INITIALIZE CHAN INDEX COPY =-8,A GET A COUNT COPY A,LC SET UP LOOP COUNT COPY CHAN,Q GET CHANNEL MASK COPY Q,TEMP SAVE IT LOOP0 COPY TEMP,Q GET CURRENT MASK SHIFT Q,RO,1 GET NEXT CHAN BIT COPY Q,TEMP RESTORE MASK JF OV,LOOP1 SKIP IF OFF COPY =INSTR,Y TABLE HEADER JSK OUT INITIATE OUTPUT LOOP1 ADD =1,X INCREMENT INDEX IMS LC CHECK LOOP COUNT JMP LOOP0 GO AROUND IF MORE JMP COMND GO TO COMMAND LOOP CHANSV WORD :FFFF CHAN MASK SAVE CELL CHANID BYTE 'CHAN' LPOOL * * PRINT MASK * * ID'S IN X,Y. VALUE IN A * PRMASK COPY X,CHMSG+1 STUFF IN MSG COPY Y,CHMSG+2 2ND WORD COPY =CHMSG,Y MESSAGE ADDR COPY =CHMSK,X GET OFFSET IN X TO EDIT JSK CTH CONVERT TO HEX COPY =CHMSGL,X MESG LENGTH JSK PRINT OUTPUT RSK CHMSG WORD :0A0D LF-CR BYTE 'XXXX MASK = ' CHMSK EQU $-CHMSG*2 BYTE OFFSET BYTE 'XXXX' CHMSGL EQU $-CHMSG*2 LENGTH TITL DISPLAY EOB STATUS SNAPSHOT * * DISPLAY LOOP * * A 'SNAPSHOT' OF EOB STATUS IS DISPLAYED * (THE TABLE IS COPIED WITH INTRPTS PREVENTED) * DISP0 EQU $ DISP EQU $ COPY =STAT,X SOURCE COPY =STATC,Y DESTINATION COPY =-16,Q STORAGE COPY Y,FS UPDATE STORAGE POINTER SUB PIP,Y LESS INITIAL ADDR OF TEXT COPY Y,A COPY RESULT TO A COPY =PTAB1,Y TABLE ADDR COPY PNO,X PROGRAM NUMBER COPY A,0(X,Y) INSERT PROG LENGTH (WORDS) COPY =PTAB,Y TABLE ADDR COPY PIP,A GET INITIAL POSITION COPY A,0(X,Y) SET UP LINK JMP COMND DO NEXT COMMAND PCP RES 1 CURRENT POSITION PIP RES 1 INITIAL POSITION * * ROUTINE TO ISSUE SPECIAL PROMPT FOR PROGRAM ENTRY * PPROMT COPY =PPRMT,Y ADDR OF MSG COPY =4,X LENGTH JSK PRINT OUTPUT RSK RETURN PPRMT W