IMD 1.16: 2/09/2008 9:35:57 84-93920-06 c300 f92006 nm4 datacase/5 diskette dio sys test  ž ªªž @0‚|†ø)®wÂwЀЀÎtQº®q¦l) ˆ " ž}‚gÿA ¢`œžúž½žä×_l M@’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’IOS4 €MÁÚF283112811372100831128113721 831128113721 AF92006 VOLLSI-4 DISTIBUTED I/O SYSTEM TEST PART 1 DATA CASE 5   ’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’Ižúž½žä×_l M@†i¾øG€ÿìÆy†y ¾õG€ÿæG‚ÿñ‚ÿðGÿÜ`HÂZ@ †b G€ÿÚ`ú^žƒ¾ÿž©ÒY¾ü žáe‡ †IÂQ¾¤¾æ ¾ïÀˆÆBÆBp@€„†;€…†:€††9€ƒ †:Â7P@ G€ÿµÆ:à‰æÙ¾‹N¾Ò ¾ìžùž8‚!¢0ŸÐÆ.ž¶ *•¦ÿ C¦'¾¿Ÿx¢«„C# b# ž}€BŸÒ!9 @0DAJ÷LÆ ¢w+™ЀЀΖQA1¹" ¦ † †¦†¤¾¥i€„Žœ žŸ} šŸ}ˆªªžö @¬E°E¨F¤F)¤D¾‘ÄE‚Û„Fž8 æÑŸ} ¦ÔŸ} ÆÌŸ} ž* `jUBˆB¾Œ I,Ÿv ¾‡°¾…€B¾ƒ I,žº ž# @ G€ÿ9Æáæ¬HÿÆàÆà@pÆÜ¾³ŸrâèCHùC €ˆC ˜GãTºà€q` †Lg€ÿ"žgÿò‘æEX¾C P¢Žâ‰+ì„s=è„胾Pž¿ÞžÂ+âc fžQ¾žN ‚¦p ž‹¾$R†¡ŸxÆn†j‚Ê ž¢žû Þž‚ÞÞ”žniæâZ悌¾ ތ⊞ì ¦Ÿ} ¦Ÿ}ÿÿŠHŠG¾Âž†§¾¬žÄ¾ë ¦¡ÂŸ@AúœLèSÃ)"$ C ž‰žkžëª2žâŠ0žjŠ.žžh†( ’ªÂ+¢$`îƒæ%ꂜ€\ÿö1 !¦Mž' ²y‚ žˆò%€À'+ò²oŸsæ…¾âƒ)žsžY ‡eÞdŸ|Ÿ{ @ž8 ož½ Ož¶ mž´ Jž² Kž° iž¿ gž½†N ž)V% tž¹ž%ì„sLè„n`" E¾  F.¹¾  F„ Dž>)žÿ ¾=`¾;nrgŸy ¾w"¾GÞ,ž{žK¾q1 ¾AÞ&ž}žE¾*`¾(t¾ž@¾% ²;¾c ¾ Þ7Þ6Þ5žy¦3ž4¾ž2¾ü¾(ž.OS:: SYSž¦ž"ªªiüþŒþ‹Âwþ‹þŠÂvc Bc A@6<# þIc B# ÞgIþjHÀc r‡Ÿ TITL dataCASE 5 DISTRIBUTED I/O SYSTEM TEST 93920-16C300 REV EQU 'C3' NAM DIOTTY NAM DIOLP  NAM DIOHSR NAM DIOHSP NAM DIOCRD NAM DIOCRT NAM MODEM,MODEMB NAM CRDIN,WORDBF EXTR DEBUG4 ****** * * DISTRIBUTED I/O TEST FOR data CASE 5 (93920-16C300) * ****** ABS :80  JMP *$+1 WORD MAIN ****** * THE FOLLOWING WORD STATEMENT IDENTIFIES * DISTRIBUTED I/O SYSTEM TEST REVISION * LEVEL. ****** WORD REV * * MACRO TO ROUND ADDRESSES TO NEAREST * ADDRESS MODULO TO 128 *  MACRO ROUND ORG $+:80&:7F80 ENDM TITL ****** * * DISTRIBUTED I/O SYSTEM PERFORMANCE TESTS * * COPYRIGHT 1983, COMPUTER AUTOMATION, INC. * * THE DISTRIBUTED I/O SYSTEM PERFORMANCE * TEST CONSISTS OF A SET OF SELF CONTAINED * PROGRAMS WHICH EXERCISE STANDARD * COMPUTER AUTOMATION PERIPHERALS. EACH * PROGRAM IS INDIVIDUALLY SELECTABLE. THE * SELECTED TEST WILL RUN UNTIL, PHYSICALLY * HALTED BY PRESSING THE STOP SWITCH. * ****** * DIO0 EQU :C0 CHANNEL 0 DIO1 EQU :C8 CHANNEL 1 DIO2 EQU :D0 CHANNEL 2 DIO3 EQU :D8 CHANNEL 3 DIO4 EQU  :E0 CHANNEL 4 DIO5 EQU :E8 CHANNEL 5 DIO6 EQU :F0 CHANNEL 6 DIO7 EQU :F8 CHANNEL 7 * *  DISTRIBUTED I/O STATUS BITS * ****** * * BIT # DEFINITION * * 0 UNIT BUSY * 1 UNIT READY (IF NOT AVAIL +5 OK) * 2 ERROR * 3 WORD READY/ACKNOWLEDGE/INDEX * 4  PAPER LOW/TAPE LOW/HOPPER EMPTY * 5 FRAMING ERROR * ****** * * * INTERRUPT LOCATION BLOCK EQUATES * AIOCMD EQU 0 AIOCNT EQU 1 AIOADR EQU 2 AIOCHN EQU 3 EOBJST EQU 4 EOBADR EQU 5 * * SET UP DIO PORT VECTOR LOCATIONS * * LOC0=AUTO I/O COMMAND (AIOCMD) * LOC1=BYTE COUNT (2'S COMPLEMENT) (AIOCNT) * LOC2=BUFFER ADDRESS (AIOADR) * LOC3=WORD CHAINING WORD(AIOCHN) * LSB=0 WORD CHAINING, =1 NO WORD CHAINING * HIGH SPEED DISTRIBUTOR ONLY. * * LOC4=JST TO EOB ROUTINE (EOBJST) * LOC5=POINTER TO EOB ROUTINE (EOBADR) * * LOC6=NOT USED * LOC7=NOT USED * * INTERRUPT VECTOR OVERLAYS *  REL $ JMP JMP *$+1 ABS :C0 DIOVEC EQU $ WORD 0,0,0,0 * * DIO CHAN #0 * JST *$+1 WORD ILLHLT WORD 0,0,0,0,0,0 * * DIO CHAN #1 * JST *$+1 WORD ILLHLT WORD 0,0,0,0,0,0 * * DIO CHAN #2 * JST *$+1 WORD ILLHLT WORD 0,0,0,0,0,0 * * DIO CHAN #3 *  JST *$+1 WORD ILLHLT WORD 0,0,0,0,0,0 * * DIO CHAN #4 * JST *$+1 WORD ILLHLT  WORD 0,0,0,0,0,0 * * DIO CHAN #5 * JST *$+1 WORD ILLHLT WORD 0,0,0,0,0,0 * * DIO CHAN #6 * JST *$+1 WORD ILLHLT WORD 0,0,0,0,0,0 * * DIO CHAN #7 * JST *$+1 WORD ILLHLT ABS :100 INTHLT WORD 0 HLT INTERRUPT VECTOR HALT HLT HLT * ILLHLT WORD 0  HLT ILLEGAL DIO INTERRUPT (EOB) HLT HLT * * ABS :1C0 WORD 0,0,0,0 * * DIO CHAN #0 * JST *$+1 WORD ILLHLT WORD 0,0,0,0,0,0 * * DIO CHAN #1 * JST *$+1  WORD ILLHLT WORD 0,0,0,0,0,0 * * DIO CHAN #2 * JST *$+1 WORD ILLHLT WORD 0,0,0,0,0,0 * * DIO CHAN #3 * JST *$+1 WORD ILLHLT WORD 0,0,0,0,0,0 * * DIO CHAN #4 * JST *$+1 WORD ILLHLT WORD 0,0,0,0,0,0 * * DIO CHAN #5 * JST *$+1 WORD ILLHLT WORD  0,0,0,0,0,0 * * DIO CHAN #6 * JST *$+1 WORD ILLHLT WORD 0,0,0,0,0,0 * * DIO CHAN #7 *  JST *$+1 WORD ILLHLT WORD 0,0 SPACE 5 MAIN EQU $ COPY =:00,A COPY A,S COPY =0,A UIS JMP *$+1 WORD DEBUG4 TITL TELETYPE TEST (DIOTTY) DIOTTY EQU $ OPTIONS +:10 REL :300 * * TESTS: * * TEST 1 - PUNCH TEST * TEST 2 - READER TEST * TEST 3 - PRINTER TEST * TEST 4 - KEYBOARD TEST * * TEST SELECTION: * A REG DESCRIPTION * * :0 RUN TESTS 1,2,3 * :1 RUN TEST 1 * :2 RUN TEST 2 * :3 RUN TEST 3 * :4 RUN TEST 4 * * * * *   SENSE SWITCH * * ON HALT AT END OF TEST(S) * OFF RUN CONTINUOUSLY * * UPON ERROR THE CONSOLE WORD REGISTER WILL DISPLAY THE P REGISTER. * JMP TTYST2 JMP TTYST1 * * DIO TELETYPE MODE BITS * ECHO EQU 8 WORD BIT 3 (ECHO MODE) READER EQU 4 WORD BIT 2 (TTY READER) OUTXFR EQU 2 WORD BIT 1 (PRINT/PUNCH) MOTOFF EQU 1 WORD BIT 0 (MOTOR OFF) * * DIO CONTROL WORD VALUES * TTYBRD EQU :210 READ BRANCH ADDRESS TTYBR EQU :210 BRANCH ADDRESS TTYRST EQU :100 TTY RESET TTYMOD EQU :400 TTY MODE TTYASC EQU :1000 TTY ASCII MODE TTYCHD EQU :800 TTY ASCII MODE CHAR DETECT * * * INECHO WORD ECHO+TTYBRD+TTYMOD ASECHO WORD ECHO+TTYBRD+TTYMOD+TTYASC AECHOC WORD ECHO+TTYBRD+TTYMOD+TTYASC+TTYCHD TTYRD WORD READER+TTYBRD+TTYMOD ARDR WORD READER+TTYBRD+TTYMOD+TTYASC READCH WORD READER+TTYBRD+TTYMOD+TTYCHD ARDRCH WORD READER+TTYBRD+TTYMOD+TTYASC+TTYCHD OUT WORD OUTXFR+TTYBR+TTYMOD AOUT WORD OUTXFR+TTYBR+TTYMOD+TTYASC AOUTCH WORD OUTXFR+TTYBR+TTYMOD+TTYASC+TTYCHD MOTOR WORD MOTOFF+TTYMOD RESET WORD TTYRST * TTYDA1 WORD :F8 TTYIL WORD DIO4 TELETYPE INT. VECTOR ADDRESS OPTNS WORD 0 JST JST *$+1 AOB AOB 0*8+0 AIB AIB 0*8+0 OTX OUT X,0*8+0 INA IN 0*8+0,A WORD WORD 0 SAVE WORD 0 BFLMT WORD 0 BFWORK WORD 0 CUECT WORD 0 LOOPCT WORD 0 TEMPSV WORD 0 WLEN WORD 8 WMASK WORD :FFFF * * * DEMAND ENTRY JUMPS HERE * TTYST1 EQU $ * * FORM DEVICE ADDRESS * COPY A,ASAVE IN 4,A READ WORD REGISTER  COPY A,WORD SAVE WORD REGISTER VALUE AND =:C00,A ISOLATE DEVICE ADDR BITS XOR =:C00,A SHIFT  A,RO,6 OR =:C0,A FORM DEVICE ADDRESS COPY A,SAVE SAVE RESULT COPY =7,A FETCH MASK  AND WORD,A ISOLATE PORT # BITS SHIFT A,LO,1 OR SAVE,A FORM DEVICE ADDRESS COPY A,TTYDA1 STORE TTY DEV ADDR * * FORM INTERRUPT VECTOR ADDRESS * COPY WORD,A FETCH WORD REGISTER BITS AND =:200,A ISOLATE J2 PIN 6 BIT XOR =:200,A SHIFT A,RO,3 COPY A,SAVE COPY WORD,A AND =:100,A ISOLATE J2 PIN 5 BIT XOR =:100,A SHIFT A,RO,1 OR SAVE,A COPY A,SAVE COPY =:10,A FETCH MASK AND WORD,A TEST FOR J2 PIN 1 BIT SHIFT A,LO,4 OR SAVE,A COPY A,SAVE COPY =7,A AND WORD,A ISOLATE PORT # BITS SHIFT A,LO,3 OR SAVE,A FORM INT. VECTOR ADDRESS COPY A,TTYIL STORE INT. VECTOR ADDRESS JMP TTYS2A * * DEFAULT ENTRY JUMPS HERE * TTYST2 EQU $ COPY A,ASAVE COPY =0,A COPY A,WORD CLEAR DEMAND WORD CELL TTYS2A EQU $ COPY TTYIL,X  FETCH INT. ADDRESS COPY JST,A COPY A,EOBJST(X) STORE JST AT INT+4 (EOB) COPY AOB,A OR TTYDA1,A FORM DEV ADDR COPY A,AIOCMD(X) STORE AUTO I/O CMD AT INT+0 COPY OTX,A OR TTYDA1,A FORM DEV ADDR OR =1,A SET CONTROL BIT COPY A,TTY1A1 STORE OTX COPY A,TTY1B COPY A,TTY1D   COPY A,TTY20A STORE OTX COPY A,TTY2A COPY A,TTY2C COPY A,TTY2D COPY A,TTY30A STORE OTX COPY A,TTY3B COPY A,TTY3F COPY A,TTY401 STORE OTX COPY A,TTY4A1 STORE OTX COPY A,TTY4B STORE OTX COPY A,TTY4B0 STORE OTX COPY A,TTY4D STORE OTX COPY A,TTY4H STORE OTX COPY INA,A OR TTYDA1,A FORM DEV ADDR OR =1,A COPY A,TTY1G COPY A,TTY2G COPY A,TTY3G1 STORE STATUS INA COPY A,TTY4F STORE INA JMP TTYST3 LPOOL TTYST3 EQU $ COPY ASAVE,A COPY A,OPTNS SAVE OPTIONS VALUE AND =8,A TEST FOR SENSE REGISTER BIT 4 ON JEQ A,TTYS3B  JUMP IF BIT 4 OFF TTY3S3 EQU $ COPY =:FF,A STOP FOR WORD LENGTH TO SELP A,4 HLT *  BE SET INTO WORD REGISTER IN 4,A INPUT WORD REGISTER JLT A,TTY3S3 BAD NUMBER TRY AGAIN CSK A,=8 TEST FOR MAX ENTRY JMP $+2 JMP TTY3S3 BAD NUMBER TRY AGAIN COPY A,WLEN SAVE WORD LENGTH SUB =8,A SUBTRACT 8 COPY =:FF,X IF 8 BIT MASK = FF JEQ A,TTYS3A IF 7 BIT MASK = 7F ADD =1,A IF 6 BIT MASK = 3F SHIFT X,RO,1 IF 5 BIT MASK = 1F JNE A,$-2 TTYS3A COPY X,WMASK STORE WORD MASK SHIFT X,LO,8 COPY X,A OR WMASK,A FORM MASK FOR UPPER AND COPY A,WMASK LOWER BYTE TTYS3B COPY OPTNS,A FETCH OPTIONS VALUE AND =7,A ISOLATE VALUE ONLY COPY A,OPTNS SAVE TEST OPTIONS BITS COPY TTBLAD,X CSK A,=4 TEST FOR LEGAL LIMIT JMP $+2 JMP TTYST4+1 JUMP IF > LIMIT JEQ A,TTYST6 JUMP IF SENSE REG = 0 TTYST5 SUB =1,A DECREMENT A ADD =1,X BUMP TABLE ADDR JNE A,TTYST5 TTYST6 COPY 0(X),X FETCH TEST ADDRESS JMP 0(X) JUMP TO SELECTED TEST TTYST4 EQU $ JF SS,TTYST3 JUMP IF SENSE SWITCH OFF HLT JMP TTYST3 TTBLAD WORD TTBL LPOOL TITL DIOTTY PUNCH TEST (TEST 1) * * TEST 1 - PUNCH TEST * THIS TEST PUNCHES THE WORST CASE WORD PATTERN * OF: 00,FF,01,FE,02,FD,ETC. TO VERIFY THAT * THE PUNCH TEST PERFORMS AS EXPECTED IT IS * SUGGESTED THAT THE READER TEST BE USED TO * READ AND COMPARE THE PUNCHED TAPE - OR VISUALLY * COMPARE IT WITH A KNOWN GOOD TAPE BY PLACING * ONE OVER THE OTHER AND CHECKING FOR THE HOLES * TO LINE UP. TWO BLOCKS OF IDENTICAL WORD * WILL BE PUNCHED, ONE IN THE ASCII MODE THE * OTHER IN NON-ASCII MODE. AFTER TWO BLOCKS * OF WORD HAVE BEEN PUNCHED TEST 1 WILL HALT * WITH A HALT CODE OF :XX10. THIS INDICATES * THE TEST IS FINISHED. THE USER MAY SET THE * SENSE REGISTER TO SELECT ANOTHER TEST AND PRESS * RUN, IN WHICH CASE, THE TEST SELECTED BY THE * SENSE REGISTER WILL BE RUN. * * * LOAD OUTPUT BUFFER WITH :00,:FF,:01,:FF -- * FOR ASCII MODE PUNCH * TTY1 EQU $ COPY RESET,X FETCH RESET CODE TTY1A1 OUT X,0*8+0 RESET PICO PROCESSOR * * CLEAR OUTPUT BUFFER TO ZEROS *  COPY =-1,A COPY A,LOOPCT INITIALIZE LOOPCT TTY1AA EQU $ COPY =OUTBUF,X OUTPUT BUFFER ADDRESS   COPY =-450,A BUFFER LENGTH COPY A,BFLMT COPY =0,A TTY100 COPY A,0(X) CLEAR OUTPUT BUFFER ADD =1,X BUMP BUFFER ADDRESS IMS BFLMT BUMP BUFFER SIZE JMP TTY100 JUMP IF BUFFER NOT ALL ZEROS COPY =OUTBUF,A FETCH BUFFER ADDRESS COPY A,BFWORK COPY =0,A COPY BFWORK,Y COPY A,0(Y) SET SOME IMS BFWORK LEADER IN COPY BFWORK,Y COPY A,0(Y) OUTPUT IMS BFWORK BUFFER  COPY =-1,A AND WMASK,A FORM PROPER WORD SIZE COPY BFWORK,Y COPY A,0(Y) SET CUE CHARACTER  IMS BFWORK IN COPY BFWORK,Y COPY A,0(Y) OUTPUT IMS BFWORK BUFFER COPY =-:80,A  COPY A,BFLMT COPY =0,A TTY1A COPY A,X SHIFT A,LO,8 COPY A,TEMPSV SAVE A COPY X,A  XOR =:FF,A AND =:FF,A OR TEMPSV,A COPY A,TEMPSV AND WMASK,A FORM PROPER WORD SIZE COPY BFWORK,Y COPY A,0(Y) STORE WORD IN BUFFER IMS BFWORK BUMP ADDRESS NOP IMS  BFLMT BUMP BUFFER LIMIT JMP TTY1E JUMP IF NOT FINISHED COPY TTYIL,X FETCH INT. ADDRESS COPY =-256,A FETCH BUFFER LENGTH IN BYTES COPY A,AIOCNT(X) STORE IN INT. BLOCK COPY BFWORK,A FETCH CURRENT BUFFER ADDR. COPY A,BFWRK1 SAVE IT COPY =OUTBUF,A FETCH BUFFER ADDRESS COPY A,BFWORK SHIFT A,LO,1 FORM BYTE ADDRESS SUB =1,A -1 COPY A,AIOADR(X) COPY =1,A COPY A,AIOCHN(X) SET FOR NO WORD CHAINING COPY =TTY1F,A FETCH EOB RETURN ADDRESS COPY A,EOBADR(X) COPY AOB,A FETCH AOB COMMAND OR TTYDA1,A FORM DEV ADDR COPY A,AIOCMD(X) STORE IN INT. VECTOR IMS LOOPCT JMP  TTY1C COPY AIOCNT(X),A MODIFY AUTO I/O COUNT SUB =8,A BY 8 COPY A,AIOCNT(X) FOR FIRST BLOCK CUE WORD SBIT 8,S ENABLE INTERRUPTS COPY AOUT,X FETCH COMMAND WORD (OUTASCII) TTY1B OUT X,0*8+0  OUTPUT COMMAND WORD JMP $ WAIT FOR INTERRUPT COPY =OUTBUF,A COPY A,BFWORK JMP TTY1H TTY1C EQU $ COPY =-1,A COPY A,*BFWRK1 SET CUE IN BUFFER IMS BFWRK1 BUMP ADDRESS COPY A,*BFWRK1 COPY TTYIL,X COPY AIOCNT(X),A FETCH AUTO I/O COUNT SUB =152,A COPY A,AIOCNT(X) STORE ADJUSTED COUNT COPY OUT,X FETCH COMMAND WORD TTY1D OUT X,0*8+0 JMP $ COPY OPTNS,A FETCH OPTIONS BITS JEQ A,TTY2 JMP TTYST4 RETURN TO EXEC TTY1E COPY TEMPSV,A AND =:FF,A  XOR =:FF,A ADD =1,A JMP TTY1A TTY1F EQU $ ENT TTY1G IN 0*8+0,A FETCH STATUS AND =:10,A TEST FOR PICO PROC REGISTER JNE A,$+2 EMPTY STATUS TTY1G1 HLT SBIT 8,S ENABLE INTERRUPTS COPY TTYIL,X INTERRUPT LOCATION COPY AIOCNT(X),A GET THE BYTE COUNT SHIFT A,LO,1 TEST IF IT IS :8000 JNE A,TTY1G1 NO, HALT THE PROGRAM IMS TTY1F BUMP RETURN ADDRESS JMP *TTY1 F RETURN TO POINT OF INTERRUPT TTY1H EQU $ COPY A,X PUT BUFFER ADDR IN X COPY =-320,A COPY A,BFLMT COPY =0,A CLEAR TTY1HA COPY A,0(X) OUTPUT BUFFER ADD =1,X WITH IMS BFLMT ZEROS JMP TTY1HA COPY =-:80,A FETCH BUFFER LENGTH IN WORDS COPY A,BFLMT SAVE IN BUFFER LIMIT JMP TTY1E BFWRK1 WORD 0 LPOOL TITL DIOTTY READER TEST (TEST 2) * * TEST 2 - READER TEST * THIS TEST READS THE WORST CASE PATTERN PUNCHED * BY TEST 1. A TAPE MAY BE SPLICED * TOGETHER WITH THE OUTPUT OF TEST 1 SO THAT * THIS TEST CAN LOOP CONTINUOUSLY. THE WORD * READ IS COMPARED WITH THE KNOWN VALUES AND * WILL HALT IN A CODED HALT :XX20 IF ANY * MISCOMPARE IS NOTED. AT THE CODED HALT * X WILL CONTAIN THE EXPECTED WORD AND A WILL * CONTAIN THE WORD READ. * IF AN ERRONEOUS STATUS IS FOUND WHEN PROCESSING * AN END OF BLOCK INTERRUPT A CODED HALT :XX21 * WILL RESULT. * TTY2 EQU $ COPY RESET,X FETCH RESET CODE TTY20A OUT X,0*8+0 RESET PICO PROCESSOR COPY TTYIL,X FETCH INT. ADDRESS COPY AIB,A OR TTYDA1,A FORM DEV ADDR COPY A,AIOCMD(X) STORE IN AUTO I/O BLOCK COPY =-1,A COPY A,AIOCNT(X) SET AUTO I/O COUNT =-1 COPY =INBUF,A SHIFT A,LO,1 SUB =1,A COPY A,AIOADR(X) SET BUFFER ADDRESS COPY =1,A COPY A,AIOCHN(X) COPY =TTY2F,A FETCH EOB ROUTINE ADDRESS COPY  A,EOBADR(X) COPY =-4,A COPY A,CUECT COPY =INBUF,X COPY =-256,A COPY A,BFLMT  COPY =0,A TTY200 COPY A,0(X) CLEAR INPUT BUFFER ADD =1,X IMS BFLMT JMP TTY200 SBIT 8,S ENABLE INTERRUPTS TTY2A0 EQU $ COPY TTYRD,X COMMAND WORD TTY2A OUT X,0*8+0 JMP $  COPY TTYIL,X COPY =-1,A COPY A,AIOCNT(X) COPY AIOADR(X),A SUB =1,A COPY A,AIOADR(X) RESTORE REGISTER ADD =1,A SHIFT A,RO,1 COPY A,X COPY 0(X),A FETCH INPUT CHAR  SHIFT A,RO,8 RIGHT JUSTIFY COPY A,TTY2A1 SAVE INPUT COPY =:FF,A AND WMASK,A FORM PROPER WORD SIZE CSK A,TTY2A1 TEST FOR CUE CHARACTER NOP JMP $+2 JMP TTY2B JUMP IF EQUAL  COPY =-4,A COPY A,CUECT JMP TTY2A0 TTY2A1 WORD 0 LPOOL TTY2B IMS CUECT JMP TTY2A0  COPY =-512,A SET FOR 512 CHAR COPY A,CHCNTR COPY =0,A COPY A,TTY2A1 SET EXPECTED TTLOOP COPY  TTYIL,X COPY =-1,A SET FOR ONE CHAR. COPY A,AIOCNT(X) COPY =INBUF,A SET BYTE ADDR.-1 SHIFT A,LO,1 SUB =1,A COPY A,AIOADR(X) SBIT 8,S ENABLE INTERRUPTS COPY TTYRD,X COMMAND WORD TTY2C OUT X,0*8+0 JMP $ * * VERIFY EACH BYTE READ * COPY =INBUF,A FETCH BUFFER ADDR COPY  A,BFWORK COPY BFWORK,Y COPY 0(Y),A FETCH CHAR WORD SHIFT A,RO,8 CSK A,TTY2A1 CHK EXPECTED  NOP JMP TTY2E NOT EQUAL * * FORM NEW EXPECTED * IMS CHCNTR DONE? JMP TTFRM NO  JMP TTYEX TTFRM COPY CHCNTR,A COUNTER ODD? ROTATE A,RO,1 JT OV,TTODD YES COPY TTY2A1,A NO-NOW COMP. FORM NEG A,A BACK TO CNTR FORM JMP TTYOV TTODD COPY TTY2A1,A YES-NOT COMP. YET NEG  A,A SUB =1,A TTYOV AND =:FF,A COPY A,TTY2A1 NEW EXPECTED JMP TTLOOP * * ERROR ROUTINE * TTY2E EQU $ COPY TTY2A1,X EXPECTED COPY BFWORK,Y COPY 0(Y),A SHIFT A,RO,8 ACTUAL HLT * * READ FOUR MORE CHARACTERS * TTYEX EQU $ COPY TTYIL,X COPY =-4,A SET FOR 4 CHAR. COPY A,AIOCNT(X) SBIT 8,S COPY TTYRD,X COMMAND WORD TTY2D OUT X,0*8+0 JMP $ * JMP TTYST4  REAL END TTY2F ENT TTY2G IN 0*8+0,A READ STATUS AND =:10,A TEST FOR GOOD STATUS BIT JNE A,$+2  JUMP IF OK TTY2G2 HLT SBIT 8,S ENABLE INTERRUPTS COPY TTYIL,X INTERRUPT LOCATION COPY AIOCNT(X),A GET THE BYTE COUNT SHIFT A,LO,1 TEST IF IT GO TO :8000 JNE A,TTY2G2 NO, HALT THE PROGRAM IMS TTY2F BUMP RETURN ADDRESS JMP *TTY2F RETURN * LPOOL * TITL DIOTTY PRINTER TEST (TEST 3) * * TEST 3 - PRINTER TEST * THIS TEST OUTPUTS 6 FULL LINES OF PRINT TO BE * USER VERIFIED BY VISUAL EXAMINATION.  THE * FIRST THREE LINES CONSISTS OF 65 CHARACTERS, * THE ALPHABET, A SPACE, NUMBERS 0-9, A BELL, * FOLLOWED BY SPECIAL CHARACTERS. REFER TO * THE PROGRAM DOCUMENTATION FOR A COMPLETE * ILLUSTRATION. THE LAST 3 LINES IS THE * WORST-CASE PRINT WHEEL PATTERN. THIS PATTERN * CONSISTS OF 63 CHARACTERS OF 'W/@W/@,ETC' * SETTING THE SENSE SWITCH WHILE THIS TEST IS * RUNNING WILL CAUSE THIS TEST TO LOOP * CONTINUOUSLY UNTIL THE SENSE SWITCH IS TURNED * OFF. * TTY3 EQU $ COPY RESET,X FETCH RESET CODE TTY30A OUT X,0*8+0 RESET PICO PROCESSOR COPY =-3,A COPY A,LOOP TTY3A COPY TTYIL,X FETCH INT. VECTOR ADDRESS COPY =T3BUF0,A BUFFER ADDRESS SHIFT A,LO,1 SUB =1,A COPY A,AIOADR(X) COPY  AOB,A OR TTYDA1,A FORM DEV ADDR COPY A,AIOCMD(X) COPY =-T3BF1E,A COPY A,AIOCNT(X)  COPY =1,A COPY A,AIOCHN(X) COPY =TTY3G,A EOB ADDRESS COPY A,EOBADR(X) COPY WLEN,A FETCH WORD LENGTH SUB =8,A SUBTRACT 8 BIT LENGTH JEQ A,TTY3A1 JUMP IF 8 BIT COPY =T3BUF0,A FETCH BUFFER ADDRESS COPY =T3BF1E,X FETCH LENGTH OF BUFFER SHIFT X,RO,1 CONVERT TO WORD LENGTH NEG X,X NEGATE LENGTH COPY X,BFLMT SAVE LIMIT COPY =OUTBUF,X ADDRESS OF RECEIVING BUFFER COPY A,BFWORK TTY300 COPY BFWORK,Y COPY 0(Y),A FETCH PRINTER OUTPUT AND WMASK,A FORM PROPER BIT SIZE COPY A,0(X) MOVE TO OUTPUT BUFFER ADD =1,X IMS BFWORK NOP IMS BFLMT JMP TTY300  COPY =OUTBUF,A OUTPUT BUFFER ADDRESS SHIFT A,LO,1 IN BYTES SUB =1,A -1 COPY TTYIL,X TO  COPY A,0(X) INT. VECTOR BLOCK TTY3A1 EQU $ SBIT 8,S ENABLE INTERRUPTS COPY OUT,X FE TCH COMMAND WORD TTY3B OUT X,0*8+0 JMP $ IMS LOOP JMP TTY3A COPY =-3,A COPY A,LOOP COPY =OUTBUF,X COPY X,BFWORK COPY =-31,X COPY X,CHCNTR COPY =:8D8A,A AND WMASK,A FORM PROPER WORD SIZE COPY BFWORK,Y COPY A,0(Y) IMS BFWORK COPY =0,A COPY BFWORK,Y COPY A,0(Y) IMS BFWORK BUMP ADDRESS COPY =T3BUF2,X TTY3C COPY 0(X),A FETCH 'W' SHIFT A,LO,8 LEFT JUSTIFY OR 1(X),A FORM 'W/' AND WMASK,A FORM PROPER WORD SIZE  COPY BFWORK,Y COPY A,0(Y) STORE IN BUFFER IMS BFWORK BUMP ADDR. NOP IMS CHCNTR BUMP CHARACTER COUNT JMP TTY3D TTY3C2 COPY ='@',A FILL BUFFER SHIFT A,LO,8 WITH ADD =:A0,A LAST AND WMASK,A FORM PROPER WORD SIZE COPY BFWORK,Y COPY A,0(Y) CHARACTER '@' JMP TTY3E TTY3D COPY 2(X),A FETCH '@' SHIFT A,LO,8 OR 0(X),A FORM '@W' AND WMASK,A FORM PROPER WORD SIZE COPY BFWORK,Y COPY A,0(Y) PUT IN BUFFER IMS BFWORK BUMP BUFFER ADDRESS NOP IMS CHCNTR BUMP CHARACTER COUNT JMP $+2 JMP TTY3C2 COPY 1(X),A FETCH '/' SHIFT A,LO,8 OR 2(X),A FORM '/@' AND WMASK,A FORM PROPER WORD SIZE COPY BFWORK,Y COPY A,0(Y) PUT IN BUFFER IMS BFWORK BUMP BUFFER NOP IMS CHCNTR BUMP CHARACTER COUNT JMP TTY3C  JMP TTY3C2 TTY3E EQU $ COPY TTYIL,X COPY =OUTBUF,A SHIFT A,LO,1 SUB =1,A COPY A,AIOADR(X) COPY =TTY3G,A COPY A,EOBADR(X) COPY =-67,A COPY A,AIOCNT(X) SBIT 8,S ENABLE INTERRUPTS COPY OUT,X FETCH COMMAND WORD TTY3F OUT X,0*8+0 JMP $ WAIT FOR INTERRUPT IMS LOOP BUMP LOOP COUNT JMP TTY3E JMP TTYST4 LPOOL TTY3G ENT TTY3G1 IN 0*8+0,A AND =:10,A JNE A,$+2 TTY3G2 HLT SBIT 8,S COPY TTYIL,X INTERRUPT LOCATION  COPY AIOCNT(X),A GET THE BYTE COUNT SHIFT A,LO,1 TEST IF IT IS :8000 JNE A,TTY3G2 NO, HALT THE PROGRAM IMS TTY3G BUMP RETURN ADDRESS JMP *TTY3G RETURN * LPOOL LOOP WORD 0 CHCNTR WORD 0 TITL DIOTTY KEYBOARD TEST (TEST 4) * * TEST 4 - KEYBOARD TEST * THIS TEST ALLOWS THE USER TO INPUT UP TO 72 * CHARACTERS. TERMINATED WITH A CARRIAGE * RETURN. THE CHARACTERS THAT WERE INPUT WILL * BE PRINTED OUT DIRECTLY BELOW THE INPUT STRING. * THE USER SHOULD VERIFY THAT THE TWO LINES ARE * IDENTICAL. THE USER MAY SELECT WHETHER HE * USES ASCII MODE OR NON ASCII MODE FOR INPUT. * IF THE FIRST CHARACTER ENTERED IS A '@' THE * KEYBOARD ENTRY WILL BE IN NON ASCII MODE, * OTHERWISE ALL KEYBOARD ENTRIES FOR THE CURRENT * STRING OF CHARACTERS WILL BE IN THE ASCII MODE. * ALL OUTPUT WILL BE IN NON ASCII MODE. * TTY4 EQU $ COPY RESET,X FETCH RESET CODE TTY4A1 OUT X,0*8+0 RESET PICO PROCESSOR COPY =-260,A CL EAR COPY A,BFLMT INPUT COPY =INBUF,X BUFFER COPY =0,A WITH TTY400 COPY A,0(X) ALL  ADD =1,X ZEROS IMS BFLMT * JMP TTY400 * COPY A,CHCNTR CLEAR CHAR COUNTER COPY TTYIL,X FETCH INT. VECTOR ADDRESS COPY =TTY4E,A COPY A,EOBADR(X) COPY =INBUF-2,A SHIFT A,LO,1 SUB =1,A COPY A,AIOADR(X) COPY =-4,A COPY A,AIOCNT(X) COPY AOB,A OR TTYDA1,A FORM DEV ADDR COPY A,AIOCMD(X) SBIT 8,S ENABLE INTERRUPTS COPY AOUT,X SET UP TO OUTPUT TTY401 OUT X,0*8+0 CARRIAGE RETURN LINE FEED JMP $ COPY TTYIL,X FETCH INT. VECTOR ADDRESS  COPY =INBUF,A FETCH BUFFER ADDRESS SHIFT A,LO,1 CONVERT TO BYTE ADDRESS SUB =1,A -1 COPY A,AIOADR(X) STORE BUFFER ADDRESS IN VECT. COPY AIB,A FETCH AUTO I/O COMMAND OR TTYDA1,A FORM DEV ADDR COPY A,AIOCMD(X) COPY =-1,A COPY A,AIOCNT(X) TTY4A EQU $ SBIT 8,S COPY AECHOC,X FETCH COMMAND WORD TTY4B OUT X,0*8+0 JMP $ COPY TTYIL,X COPY AIOADR(X),A FETCH BUFFER ADDRESS SHIFT A,RO,1 CONVERT TO WORD ADDRESS COPY A,BFWORK COPY BFWORK,Y COPY 0(Y),A FETCH INPUT CHARACTER SHIFT A,RO,8 RIGHT JUSTIFY CHARACTER SUB ='@',A TEST FOR NON ASCII CODE JEQ A,TTY4G JUMP IF NON ASCII CODE COPY =-71,A COPY A,AIOCNT(X) SET COUNT FOR MAX LIMIT COPY AECHOC,X FETCH COMMAND WORD TTY4B0 OUT X,0*8+0 JMP $ COPY TTYIL,X FETCH INT. VECTOR ADDRESS COPY AIOCNT(X),A COMPUTE ECHO BACK SHIFT A,LO,1 WATCH OUT FOR 8000 JEQ A,TTY4B2 COPY AIOCNT(X),A TTY4B2 NEG A,A  SUB =76,A ECHO BACK COPY A,AIOCNT(X) TTY4B1 EQU $ COPY =INBUF-2,A SHIFT A,LO,1 SUB =1,A COPY A,AIOADR(X) COPY AOB,A OR TTYDA1,A FORM DEV ADDR COPY A,AIOCMD(X) SET FOR AOB COMMAND SBIT 8,S TTY4C COPY OUT,X TTY4D OUT X,0*8+0 JMP $ JMP TTYST4 TTY4E ENT TTY4F IN 0*8+0,A INPUT STATUS AND =:10,A TEST FOR REG. EMPTY STATUS JNE A,$+2 JUMP IF BIT ON HLT SBIT 8,S ENABLE INTERRUPTS IMS TTY4E JMP *TTY4E * TTY4G EQU $ COPY TTYIL,X FETCH INT. VECTOR ADDRESS COPY =-1,A COPY A,AIOCNT(X) SET AUTO I/O COUNT -1 COPY *CMDWRD,X FETCH COMMAND WORD (NON ASCII) TTY4H OUT X,0*8+0 JMP $ COPY TTYIL,X FETCH INT. VECTOR ADDRESS COPY AIOADR(X),A FETCH INPUT BUFFER ADDRESS SHIFT A,RO,1 CONVERT TO WORD ADDRESS COPY A,BFWORK COPY BFWORK,Y  COPY 0(Y),A FETCH INPUT CHARACTER COPY A,X TO A AND X TTY4H1 SHIFT A,RO,8 RIGHT JUSTIFY LEFT BYTE SHIFT X,LO,8 LEFT JUSTIFY RIGHT BYTE SUB =:8D,A TEST FOR CARRIAGE RETURN JEQ A,TTY4I JUMP IF C/R  COPY X,A JNE X,TTY4H1 JUMP IF ANOTHER CHARACTER IMS CHCNTR BUMP CHARACTER COUNTER JMP T  TY4G TTY4I COPY CHCNTR,A FETCH CHARACTER COUNT ADD =6,A ADJUST COUNT NEG A,A COPY TTYIL,X  COPY A,AIOCNT(X) SET COUNT FOR OUTPUT JMP TTY4B1 CMDWRD WORD INECHO LPOOL TTBL WORD TTY1 WORD TTY1 WORD TTY2 WORD TTY3 WORD TTY4 TITL OUTPUT WORD AND BUFFERS * *TEST 3 (PRINTER TEST) OUTPUT WORD * T3BUF0 WORD :8D8A,0 T3BUF1 BYTE 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' BYTE ' 012345678' WORD :B987 BYTE '?!#$%&+-=@*"'':;.,<>()/' WORD :DCDB,:DDDE,:DF00 T3BF1E EQU $-T3BUF0+$-T3BUF0 T3BUF2 WORD 'W'  WORD '/' WORD '@' WORD 0 LPOOL * *MAIN WORD BUFFERS * WORD :8D8A,0 INBUF RES 260  INPUT BUFFER OUTBUF RES 450 OUTPUT BUFFER * * * * TITL LINE PRINTER TEST (DIOLP) ROUND * * LINE PRINTER DIAGNOSTIC (LPD) FOR * DISTRIBUTED I/O. * * LINE PRINTER DIAGNOSTIC FOR CENTRONICS * AND WORD PRODUCTS LINE PRINTER. * TEST MODES * * TEST 1 * THIS TEST WILL EJECT A PAGE, AND * PRINT ONE PAGE OF ROTATING PATTERN IN * AUTO OUT BYTE (AOB) MODE. * * TEST 2 * * THIS TEST WILL EJECT A PAGE, AND * PRINT ONE PAGE OF STRAIGHT PATTERN * IN THE AUTO-OUT-BYTE (AOB) MODE. * * TEST 3 * * THIS TEST CAN NOT BE RUN ON A * WORD PRODUCTS PRINTER. * ALL CHARACTERS ARE PRINTED IN THE * EXPANDED CHARACTER MODE. * * TEST 4 * * THIS TEST WILL BE RUN ONLY WHEN VFU * OPTION APPLIES. THE PAGE IS EJECTED * AND THE FIRST, SECOND, FORTH AND * EIGHT LINE SKIP MESSAGES ARE PRINTED * * TEST SELECTION: * * A REG DESCRIPTION * * :0 RUN TESTS 1 AND 2 AND/OR 3 * :1 RUN TEST 1 * :2 RUN TEST 2 *  :3 RUN TEST 3 * :4 RUN TEST 4 * * * SENSE SWITCH * * ON HALT AT END OF TEST(S) * OFF RUN CONTINEOUSLY * * * OPERATING PROCEDURE * * 1 START LPD AT RELATIVE LOCATION 0 (LPDGO1) * WILL CAUSE LPD TO BE RUN USING THE * STANDARD (DEFAULT) DEVICE ADDRESS AND * INTERRUPT LOCATION. *  STARTING LPD AT RELATIVE LOCATION 1 * (LPDGO2) FOR OTHER THAN STANDARD VALUES * REFER TO STEPS 2 AND 3 BELOW. * * * 2 ON THE I/O DISTRIBUTOR CIRCUIT CARD * LOCATE J2. IF THERE IS A JUMPER WIRE * TO PIN 8 SET BIT 11 ON OF THE WORD * REGISTER, IF PIN 7 HAS A JUMPER SET * BIT 10 ON OF THE WORD REGISTER, IF PIN * 6 HAS A JUMPER SET BIT 9 ON OF THE WORD * REGISTER, IF PIN 5 HAS A JUMPER SET BIT * 8 ON OF THE WORD REGISTER, IF PIN 1 HAS *  A JUMPER SET BIT 4 ON OF THE WORD REGISTER * ENTER THE PORT # 0-7 IN BITS 0-3 OF THE * WORD REGISTER. BEFORE THESE BITS ARE * SET HAVE P SET TO THE LOCATION LABELED * LPDGO2. WITH THE WORD REGISTER BITS * SET PRESS RUN. THE PROGRAN WILL COMPUTE * THE DEVICE ADDRESS AND INTERRUPT LOCATION * USING THE BITS SET IN THE WORD REGISTER * AND RUN THE THREE TESTS. * * 3 IF A WORD PRODUCTS PRINTER IS THE * PRINTING DEVICE BEING USED BIT 15 O  F THE * WORD REGISTER MUST BE SET AND ENTERED * WITH THE VALUE SET UP IN STEP 2 ABOVE. * FOR ANY OTHER TYPE PRINTER BIT 15 MUST * NOT BE SET. * * * * * * * * * LINE PRINTER TEST EQUATES * LPDA1 EQU :FE LP EQU 7  LINE PRINTER PORT # TOF EQU :0C TOP OF FORM CODE CRET EQU :0D CARRIAGE RETURN LF EQU :0A  LINE FEED CODE EXP EQU :8E EXPAND CODE SPACE EQU :20 ASCII SPACE CODE * * MICRO CODE START ADDRESS (BRANCH LOCATION) * LPSTRT EQU 1 MICRO CODE START ADDRESS TITL DIOLP INITIALIZATION * DIOLP EQU $ JMP LPDGO1 DEFAULT ENTRY JMP LPDGO2 DEMAND ENTRY LPDGO1 EQU $ COPY A,OPTNS SAVE A SELECTION  COPY =0,A COPY A,PRINTR CLEAR PRINTER CODE FOR CENTRONICS JMP START LPDGO2 EQU $ COPY A,OPTNS SAVE A SELECTION COPY Q,CONLP SAVE Q SELECTION * * WORD REGISTER BIT DEFINITION * * BIT #  DEFINITION * * 15 0=CENTRONICS, 1=WORD PRODUCTS * 14 SET IF VFU OPTION * 13 * NOT USED * 12 * * 11 SET IF JUMPER TO J2 PIN 8 * 10 SET IF JUMPER TO J2 PIN 7 *  9 SET IF JUMPER TO J2 PIN 6 * 8 SET IF JUMPER TO J2 PIN 5 * 7 SET TO ZERO *  6 SET TO ZERO * 5 SET TO ZERO * 4 SET IF JUMPER TO J2 PIN 1 * 3  ** * 2 * INDICATES PORT # (0-7) * 1 * * 0 ** * * * * FORM DEVICE ADDRESS * JST *0 BKPT. USER INPUTS DEV. ADDR. COPY A,WORD AND =:C00,A ISOLATE DEVICE ADDRESS BITS XOR =:C00,A SHIFT A,RO,6 OR =:C0,A FORM DEVICE ADDRESS COPY A,SAVE SAVE RESULT COPY =7,A FETCH MASK AND WORD,A ISOLATE PORT # BITS SHIFT A,LO,1 OR SAVE,A FORM DEVICE ADDRESS COPY A,SDA STORE DEVICE ADDRESS * * FORM INTERRUPT ADDRESS * COPY WORD,A FETCH WORD REGISTER ENTRY AND =:200,A ISOLATE J2 PIN 6 BIT XOR =:200,A SHIFT A,RO,3 COPY A,SAVE  COPY WORD,A AND =:100,A ISOLATE J2 PIN 5 BIT XOR =:100,A SHIFT A,RO,1 POSITION BIT  OR SAVE,A MERGE WITH PIN 6 BIT COPY A,SAVE SAVE RESULT COPY =:10,A FETCH MASK AND WORD,A ISOLATE J2 PIN 1 SHIFT A,LO,4 POSITION RESULT OR SAVE,A MERGE WITH OTHER BITS COPY A,SAVE SAVE RESULT COPY =7,A FETCH MASK AND WORD,A ISOLATE PORT # BITS SHIFT A,LO,3 POSITION OR SAVE,A MERGE TO FORM INTERRUPT VECTOR COPY A,SIL STORE INTERRUPT ADDRESS * * SET PRINTER CODE * COPY WORD,A AND =:C000,A COPY A,PRINTR STORE PRINTER CODE * :8000 = WORD PRODUCTS * :0000 = CENTRONICS START EQU $ COPY SIL,X FETCH INTERRUPT VECTOR ADDRESS COPY JST,A FETCH PORT JST COPY A,EOBJST(X) PUT AT INT. LOCATION+4 COPY AOB,A MAKE AOB INSTRUCTION   OR SDA,A COPY A,AIOCMD(X) PUT AT INT. LOC +0 COPY SDA,A FETCH DEVICE ADDRESS OR OTX,A  FORM OTX CONTROL COMMAND OR =1,A SET CONTROL BIT COPY A,TEST1E COPY A,TEST2C COPY A,TEST4A COPY A,TEST4B COPY A,TEST4C COPY A,TEST4D COPY A,TEST4E COPY A,TEST4F  COPY A,TEST3G STORE OTX COMMAND COPY INA,A FETCH INA COMMAND OR SDA,A FORM DEVICE ADDRESS  OR =1,A SET FOR READ STATUS INDICATOR COPY A,TEST1G STORE FOR EXECUTION COPY OPTNS,A AND  =7,A GET THE SELECTED TEST COPY A,OPTNS COPY LPTBLD,X CSK A,=4 TEST FOR LEGAL LIMIT  JMP $+2 JST *0 NO SUCH TEST JEQ A,LPTST2 NO TEST SELECTED LPTST1 SUB =1,A DECREMENT A ADD =1,X BUMP TABLE ADDRESS JNE A,LPTST1 LPTST2 COPY 0(X),X FETCH TEST ADDRESS JMP  0(X) JUMP TO SELECTED TEST LPTST3 COPY CONLP,Q JEQ Q,START RUN CONTINUOUSLY? JST *0 END OF TEST JMP START LPTBLD WORD LPTBL LPTBL WORD TEST1 WORD TEST1 WORD TEST2 WORD TEST3  WORD TEST4 CONLP WORD 0000 * LPOOL TITL DIOLP TEST 1 ****************************************** *  TEST 1 * AUTO OUT ROTATING TEST ****************************************** TEST1 EQU $ COPY =-39,A (CHAR/LINE DIVIDED BY 2) -1 COPY A,CPL COPY =-59,A LINES PER PAGE COPY PRINTR,X CENTRONIC? JGE X,$+2 YES, CENTRONIC COPY =-36,A LINES PER PAGE COPY A,LINES COPY =SPACE,A COPY A,FIRST SAVE COPY A,CHARSV COPY =LPOUT,X FETCH BUFFER ADDRESS COPY =TOF,A TOP OF FORM CODE  SHIFT A,LO,8 LEFT JUSTIFY ADD =LF,A ADD LINE FEED COPY A,0(X) STORE IN BUFFER TEST1A ADD =1,X BUMP ADDRESS COPY CHARSV,A FETCH CHARACTER CLSN =:5E,A LINE PRINTER LIMITS? JMP TEST1I  JUMP IF YES SHIFT A,LO,8 LEFT JUSTIFY CHARACTER IMS CHARSV OR CHARSV,A COPY A,0(X)  STORE IN BUFFER COPY CHARSV,A FETCH LAST CHARACTER CLSN =:5E,A LINE PRINTER LIMIT?? JMP TEST1B JUMP IF YES ADD =1,A BUMP CHARACTER JMP $+2 TEST1B COPY =SPACE,A COPY A,CHARSV IMS CPL BUMP CHARACTER/LINE COUNT JMP TEST1A JUMP IF NOT FULL LINE ADD =1,X BUMP ADDRESS  COPY =CRET,A CARRIAGE RETURN SHIFT A,LO,8 ADD =LF,A LINE FEED FOR A NEW LINE COPY A,0(X)  STORE IN BUFFER COPY =-39,A CHAR/LINE DIVIDER BY 2 -1 COPY A,CPL COPY PRINTR,A FETCH PRINTER TYPE JLT A,TEST1D JUMP IF WORD PRODUCTS ADD =1,X BUMP ADDRESS COPY =SPACE,A SHIFT A,LO,8 ADD =SPACE,A COPY A,0(X) TEST1D EQU $ COPY FIRST,A FETCH FIRST CHARACTER ADD =1,A BUMP BY ONE COPY A,FIRST COPY A,CHARSV * * FORM DIO PORT WORD AND START OUTPUT * COPY X,  A SAVE X IN A SUB =LPOUT,A SUBTRACT START ADDR. TO * FIND LENGTH... ADD =1,A  SHIFT A,LO,1 FORM BYTE COUNT COPY PRINTR,X FETCH PRINTER TYPE CODE JNE X,$+2 JUMP IF WORD PRODUCTS SUB =1,A REDUCE BYTE COUNT BY 1 NEG A,A TWOS COMPLEMENT COPY SIL,X FETCH INTERRUPT ADDRESS COPY A,AIOCNT(X) COPY =LPOUT,A FETCH BUFFER ADDR SHIFT A,LO,1 FORM BYTE ADDRESS SUB =1,A MINUS 1 COPY A,AIOADR(X) STORE ADDRESS FOR EOB COPY =1,A COPY A,AIOCHN(X) SET FOR NO WORD CHAINING COPY RETADR,A FETCH INT. RETURN ADDRESS COPY A,EOBADR(X) STORE EOB TRANSFER ADDRESS SBIT  8,S ENABLE INTERRUPTS COPY =:210,X BRANCH CODE TEST1E OUT X,0 START AOB JMP $ WAIT FOR EOB INTERRUPT JMP TEST11 * RETADR EQU $ WORD TEST1F TEST1F EQU $ END OF BLOCK ENT-0 -O&NT  ENT TEST1G IN 0*8+0,A READ STATUS AND =:10,A ISOLATE STATUS BITS JEQ A,$+2 JUMP IF WORD READY BIT ON TEST1H JST *0 SBIT 8,S ENABLE INTERRUPTS COPY SIL,X INTERRUPT LOCATION COPY AIOCNT(X),A GET THE BYTE COUNT SHIFT A,LO,1 TEST IF IT GOES TO :8000 JNE A,TEST1H NO, HALT THE PROGRAM IMS TEST1F BUMP RETURN ADDRESS JMP *TEST1F RETURN TEST11 EQU $ IMS LINES BUMP LINE COUNT JMP $+2 JMP TEST1J COPY =LPOUT,X FETCH BUFFER ADDRESS JMP TEST1A+1 TEST1I EQU $ SHIFT A,LO,8 LEFT JUSTIFY OR =SPACE,A COPY A,0(X) STORE IN BUFFER COPY =SPACE,A * ADD =1,A JMP TEST1B+1 TEST1J EQU $ COPY OPTNS,A JEQ A,TEST2 JMP LPTST3 * * WORD AREA * SIL WORD DIO7 STANDARD INT. LOCATION SDA WORD LPDA1 CPL WORD 0 LINES WORD 0 CSET WORD 0 CHAR WORD 0 FIRST WORD 0 COUNT WORD 0 CHARSV WORD 0 PRINTR WORD 0 STATUS WORD 0 * LPOOL *  TITL DIOLP TEST 2 ****************************************** * TEST 2 * ALIGNMENT TEST ****************************************** TEST2 EQU $ COPY PRINTR,A VFU? SHIFT A,LO,2 JT OV,TEST4 YES COPY PRINTR,X FETCH PRINTER TYPE CODE COPY =-36,A COPY A,LINES COPY =-82,A JLT X,TEST21 JUMP IF WORD PRODUCTS COPY =-59,A COPY A,LINES LINE/PAGE COPY =-83,A TEST21 EQU $ COPY SIL,X SETUP COPY A,AIOCNT(X) BUFFER COUNT COPY BUFPTR,A COPY A,AIOADR(X) BUFFER POINTER JMP TST2B2 TEST2B EQU $ COPY PRINTR,A FETCH PRINTER TYPE CODE JGE A,TST2B1 JUMP IF NOT WORD PRODUCTS  COPY =-80,A CHARACTERS PER LINE JMP $+2 TST2B1 EQU $ COPY =-81,A CHAR PER LINE-1 COPY  A,AIOCNT(X) BUFFER COUNT TST2B2 EQU $ COPY TEST1F-1,A FETCH RETURN ADDRESS COPY A,EOBADR(X) STORE FOR EOB INT. JST COPY =:210,X BRANCH CODE TEST2C OUT X,0 SBIT 8,S ENABLE INTERRUPTS JMP $   WAIT FOR INTERRUPT TEST2D EQU $ EOB ENTRY IMS LINES BUMP LINE COUNT JMP $+2 JMP  TEST2F COPY BFPTR,A BUFFER ADDRESS COPY SIL,X INTERRUPT ADDRESS COPY A,AIOADR(X) STORE BUFFER ADDRESS JMP TEST2B * TEST2F EQU $ COPY PRINTR,A JGE A,$+2 JUMP IF CENTRONIC JMP LPTST3 COPY OPTNS,A JNE A,$-2 JMP TEST3 * LPOOL TITL DIOLP TEST 4 WORD PRODUCTS VFU * * TEST 4 * VFU WORD PRODUCTS TEST * TEST4 EQU $ COPY SIL,X SETUP COPY VFUPTR,A COPY A,AIOADR(X) BUFFER POINTER COPY =-22,A CHAR IN MESSAGE COPY A,AIOCNT(X) COPY RETADR,A FETCH RETURN ADDR. COPY A,EOBADR(X) COPY =:210,X BRANCH CODE TEST4A OUT X,0 SBIT 8,S ENABLE INTERRUPTS  JMP $ COPY =LINEN,X COPY =:31,A 1 CODE SHIFT A,LO,8 LEFT JUSTIFY ADD =SPACE,A COPY A,0(X) STORE IN MESSAGE COPY =:91,A FIX UP VFU COMMAND SHIFT A,LO,8 FOR 1 LINE SKIP ADD  =CRET,A COPY A,6(X) COPY SIL,X SET UP AUTO I/O COPY LINPTR,A COPY A,AIOADR(X) BUFFER POINTER COPY =-14,A 14 CHAR. IN MESSAGE COPY A,AIOCNT(X) COPY =:210,X BRANCH CODE TEST4B OUT X,0 SBIT 8,S JMP $ COPY =LINEN,X COPY =:32,A I CODE SHIFT A,LO,8 LEFT JUSTIFY  ADD =SPACE,A COPY A,0(X) FIX UP VFU COMMAND COPY =:92,A FOR 2 LINE SKIP SHIFT A,LO,8  ADD =CRET,A COPY A,6(X) COPY SIL,X SET UP AUTO I/O COPY LINPTR,A COPY A,AIOADR(X) BUFFER POINTER COPY =-14,A 14 CHAR. IN MESSAGE COPY A,AIOCNT(X) COPY =:210,X BRANCH CODE TEST4D OUT X,0 JMP $ * COPY =LINEN,X COPY =:34,A 4 CODE ASCII SHIFT A,LO,8 LEFT JUSTIFY ADD =SPACE,A COPY A,0(X) FIX UP VFU COMMAND COPY =:94,A FOR 4 LINE SKIP SHIFT A,LO,8 ADD =CRET,A COPY A,6(X) COPY SIL,X SET UP AUTO I/O COPY LINPTR,A COPY A,AIOADR(X) BUFFER POINTER COPY =-14,A COPY A,AIOCNT(X) CHAR COUNT COPY =:210,X TEST4C OUT X,0 JMP $ * COPY =LINEN,X COPY =:38,A 8 CODE ASCII SHIFT A,LO,8 LEFT JUSTIFY ADD =SPACE,A  COPY A,0(X) FIX UP VFU MESSAGE COPY =:98,A FOR 8 LINE SKIP SHIFT A,LO,8 ADD =CRET,A  COPY A,6(X) COPY SIL,X SET UP AUTO I/O COPY LINPTR,A COPY A,AIOADR(X) BUFFER POINTER  COPY =-14,A COPY A,AIOCNT(X) COPY =:210,X TEST4E OUT X,0 JMP $ * COPY SIL,X COPY VFPTR,A SET UP COPY A,AIOADR(X) BUFFER POINTER COPY =-20,A CHAR. IN MESSAGE COPY A,AIOCNT(X)  COPY =:210,X BRANCH CODE TEST4F OUT A,0 SBIT 8,S JMP $ JMP LPTST3 * LPOOL TITL DIOLP TEST 3 * ****************************************** * TEST 3 * EXPANDED PATTERN TEST ******************** ********************** TEST3 EQU $ COPY =-60,A LINES PER PAGE COPY A,LINES COPY =LPOUT,X FETCH BUFFER ADDRESS COPY =TOF,A TOP OF FORM SHIFT A,LO,8 ADD =LF,A COPY A,0(X) ADD  =1,X BUMP ADDRESS TEST32 EQU $ COPY =-19,A SIZE OF EXPANDED LINE COPY A,CPL COPY =EXP,A  EXPAND CODE SHIFT A,LO,8 OR =SPACE,A COPY A,0(X) STORE IN BUFFER ADD =1,X COPY =SPACE,A COPY A,CHARSV TEST3A EQU $ COPY CHARSV,A FETCH CHARACTER CLSN =:5E,A TEST FOR LAST CHAR. JMP TEST33 SHIFT A,LO,8 LEFT JUSTIFY IMS CHARSV BUMP CHARACTER OR CHARSV,A COPY A,0(X) COPY CHARSV,A CLSN =:5E,A TEST FOR LAST CHAR. JMP TEST3C ADD =1,A BUMP CHARACTER COPY A,CHARSV ADD =1,X BUMP ADDRESS IMS CPL BUMP CHARACTER COUNT  JMP TEST3A COPY =CRET,A CARRIAGE RETURN SHIFT A,LO,8 ADD =SPACE,A COPY A,0(X)  STORE IN BUFFER JMP TEST3F PROCESS BUFFER FOR OUTPUT TEST33 EQU $ SHIFT A,LO,8 LEFT JUSTIFY CHARACTER ADD =SPACE,A COPY A,0(X) STORE IN BUFFER TEST3C EQU $ ADD =1,X COPY =CRET,A  SHIFT A,LO,8 ADD =LF,A FORM CARRIAGE RETURN/LINE FEED COPY A,0(X) COPY PRINTR,A FETCH PRINTER TYPE JLT A,TEST3F JUMP IF WORD PRODUCTS COPY =SPACE,A SHIFT A,LO,8 ADD =SPACE,A  ADD =1,X COPY A,0(X) TEST3F EQU $ ADD =1,X BUMP ADDRESS COPY X,A SUB =LPOUT,A SHIFT A,LO,1 BYTE COUNT SUB =1,A REDUCT BYTE COUNT BY 1 NEG A,A COPY SIL,X FETCH INTERRUPT ADDRESS COPY A,AIOCNT(X) STORE BYTE COUNT COPY =LPOUT,A FETCH BUFFER ADDR. SHIFT A,LO,1 FORM BYTE ADDRESS SUB =1,A -1 COPY A,AIOADR(X) STORE AT INT. VECTOR COPY =1,A COPY  A,AIOCHN(X) SET FOR NO WORD CHAINING COPY RETADR,A FETCH INT. RETURN ADDRESS COPY A,EOBADR(X) STORE EOB ADDRESS COPY =:210,X BRANCH CODE TEST3G OUT X,0 START AOB SBIT 8,S ENABLE INTERRUPTS JMP  $ WAIT FOR INTERRUPT COPY CHARSV,A FETCH LAST CHARACTER CLSN =:5E,A TEST FOR LAST JMP  TEST3I JUMP IF LAST CHARACTER COPY =LPOUT,X IMS LINES BUMP LINE COUNT JMP TEST3J TEST3I EQU $ COPY =LPOUT,X IMS LINES BUMP LINE COUNT JMP TEST32 JMP LPTST3 TEST3J COPY =EXP,A EXPAND CODE SHIFT A,LO,8 LEFT JUSTIFY ADD =LF,A COPY A,0(X) STORE IN BUFFER ADD =1,X BUMP ADDRESS COPY =SPACE,A SHIFT A,LO,8 ADD =SPACE,A COPY A,0(X) ADD  =1,X BUMP ADDRESS JMP TEST3A NOP NOP NOP NOP NOP NOP * LPOOL * VFPTR WORD 2*VFUMSG+1 VFUPTR WORD 2*VFUMSG-1 VFUMSG WORD :0C0A,:5646,:5520,:4C49 WORD :4E45,:2053,:4C45,:5720 W ORD :5445,:5354,:0D0A LINPTR WORD 2*LINEN-1 * X LINE SKIP LINEN WORD :3120,:4C49,:4E45,:2053 WORD :4B49,:5020,:910D BFPTR WORD 2*BUFF-1 BUFPTR WORD 2*BUFF-3 WORD :8C8A BUFF BYTE ' !"#$%&''()*+,-./0123' BYTE '456789:;<=>?@ABCDEFG' BYTE 'HIJKLMNOPQRSTUVWXYZ' WORD :DBDC,:DDDE BYTE ' !"#$%&''()*+,-' BUFEND WORD :8D8A  WORD :A0A0 ****** * LPOUT RES 86 * ****** TITL HIGH SPEED READER/PUNCH TEST (DIOHSR/DIOHSP) ROUND * * TESTS: * * TEST 1 - PUNCH TEST * TEST 2 - READER TEST * * TEST SELECTION: * A REG DESCRIPTION * *  :0 RUN TEST 1,2 * :1 RUN TEST 1 * :2 RUN TEST 2 * * * * * SENSE SWITCH * *  ON HALT AT END OF TEST(S) * OFF RUN CONTINUOSLY * * UPON ERROR CDR WILL DISPLAY THE VALUE *  OF P-REGISTER AND WILL HALT * * * * * DIO CONTROL WORD VALUES * * * HSRRST EQU :100 RESET CODE HSRBR EQU :210  BRANCH CODE HSRBRV EQU :2A0 * DIOHSP EQU $ DIOHSR EQU $ JMP HSRST2 DEFAULT ENTRY JMP HSPST1 PUNCH DEMAND ENTRY JMP HSRST1 READER DEMAND ENTRY * BRAREV WORD HSRBRV HSPDA1 WORD :FC PUNCH DEV ADDR HSRDA1 WORD :FA READER DEV ADDR HSRIL WORD DIO5 HSPIL WORD DIO6 HIGH SPEED PUNCH INT. VECT. ADDR. STAERR WORD 0 LOOPER WORD 0 CMWD1 WORD 0 CMWD2 WORD 0 * * READER DEMAND ENTRY * HSRST1 EQU $ * * FORM DEVICE ADDRESS * COPY A,ASAVE IN 4,A READ WORD REGISTER COPY A,WORD SAVE WORD REGISTER VALUE AND =:C00,A ISOLATE DEVICE ADDR BITS XOR =:C00,A SHIFT A,RO,6 OR =:C0,A FORM DEVICE ADDRESS  COPY A,SAVE SAVE RESULT COPY =7,A FETCH MASK AND WORD,A ISOLATE PORT # BITS SHIFT A,LO,1 OR SAVE,A FORM DEVICE ADDRESS COPY A,HSRDA1 * * FORM INTERRUPT VECTOR ADDRESS * COPY WORD,A FETCH WORD REGISTER BITS AND =:200,A ISOLATE J2 PIN 6 BIT XOR =:200,A SHIFT A,RO,3  COPY A,SAVE COPY WORD,A AND =:100,A ISOLATE J2 PIN 5 BIT XOR =:100,A SHIFT A,RO,1  OR SAVE,A COPY A,SAVE COPY =:10,A FETCH MASK AND WORD,A TEST FOR J2 PIN 1 BIT SHIFT A,LO,4 OR SAVE,A COPY A,SAVE COPY =7,A AND WORD,A ISOLATE PORT # BITS SHIFT A,LO,3 OR SAVE,A FORM INT. VECTOR ADDRESS COPY A,HSRIL STORE INT. VECTOR ADDRESS COPY =:FF,A SELP A,4 HLT * SET 'P' TO PUNCH DEMAND * ENTRY ADDRESS OR PRESS *  RUN TO GO JMP HSRS2A * * PUNCH DEMAND ENTRY * HSPST1 EQU $ COPY A,ASAVE IN 4,A READ WORD REGISTER COPY A,WORD SAVE AND =:C00,A ISOLATE DEV ADDR BITS XOR =:C00,A  SHIFT A,RO,6 OR =:C0,A FORM DEVICE ADDRESS COPY A,SAVE COPY =7,A FETCH CHAN NUMBER MASK AND WORD,A FORM CHAN. NUMBER SHIFT A,LO,1 OR SAVE,A FORM DEV. ADDR COPY A,HSPDA1 * OVicEdDano&U'Ÿ€ ¤ëžÁžøà¿€eE"ÿÿ‡Æ†t–ÄšÃYÀ†p –m¶l†b‚i–ºš¹)†f‚d–¶šµ ¶a†` –]1¶\†[ –X!¶W†Nžƒ‡£ †Q¢I‚J„„‚I¶D„€‚H¶A†Ü‡š‡š‡š‡š‡š‡š‡š‡š‡š‡š‡š‡š‡š‡š‡š‚6¶.‡—‡—‡—‡—ž™¿ !•!£!Õ!ð""@"T""Å#"ê###1#@!®"D"Û#5ƒf†T ÿ » žžx† ø)ÿC . ½¦ .q ¶†ƒ‡Ž¢Œ žž‡C ÿ+½ €œ€š žX#a ´£ö"ÿ‡ô¢ô‚ô‡ô „€+ßðž|‚ì‡î ãì„@ßêãé„@ßçÿ—æãä„@ßâãá„@ß߀‡Ü q‡Û ÿÿ·×‡Ö—ÔãÒ„@ßÐßÍž«£Ï„ƒÉ†Â‚㯠ÿ„‚ „ƒ‚Ä„…ƒÃ·Ã„€ß·žŠ€ ø„…£¼"ž‚¯‡±žŸÿ‡¨Þ§‡¦£®€ h„£¯"žƒ&mž ƒ£ÿÿ žA Á …£™€ºÞuŸt ‚˜‡ „€+߉ž|€‡†žd ± ¿$“þ> ¼ ½  À ³!­ ¶ ² ® ­þÀ£p"£vƒ°·w„€ÿ„‚¬ ÿ„‚ „ƒ‚§„…ü‡¥¢¢‡` „€+ß\ž|…£œ"ž£Zÿ„€‚ ÿ„‚  €€y†‰ ÿ—Kº†žžŠü‡…žh ·#"C ¾ ©ß|ž_‚¾‡¾ †s£8ÿ„‚q ÿ„‚…£o"ž‚i‡)ã(€@yºbžß¨žž‘ƒ¥ 6C‚Yžƒ‚V ÿÿ†Rž^¢Pã€@y £ü„…£L"žŸŽ Á …£ˆ€ºÞuŸtþ"è!H ³£ö"ý‡ô£z‚ó ÿ„‚ƒð·ð„€º„ „ƒ‚ë„…ƒê øU‚ã)F. !§æ¢ã‡æãå€@—à„€+ßàßÜžw‚Ø ÿ£V„€…£Ø"žÞåžTý†â¢Ë§Î(á¦ß‚Ê—ÇãÉ„@ßÇ ãÅ„@ßâÀ€q´—»ã½„@ß»ÞÌž‡ @q  —±ã³„@ž–€‚q´€—ªã¬„@ߪ޻žžn€q´‚—Ÿã¡„@ߟްžZžc£‚• ÿ„‚‚„…½„…£’"žÞŸžqŸ ±"ç#f ¶ ²"Ú Á$“  ¼Š ½#‰ ­ Á …£…€ºÞuŸt ³£`"‚ì‡f¢ë „€+ßaž|†t£q‚ä„…‚ã ÿ„‚ü„ƒO·O„€…£Ú"ž£a‚Ó ÿ„‚ƒÓ·C„€ÿ„…£Î"ž£S€‚ ‡?ã>€@y Àa¹„£À"ž£E€A€ ´„‚² ÿ„‚ƒ · „€…£&"žŸ« Á …ÞyŸx£)ÿ„£—"ž£#€‚ ‡ã€@ y.q sD 1ºÞžk‚ £„žQ ¦þü##4# ® · ¨!H!N!N!Ô"S"éŠABCDEFGHIJKLMNOPQRSTUVWXYZ 012345678¹‡?!#$%&+-=@*"':;.,<>()/ÜÛÝÞßW/@Š&U€Ÿ€C3À>¿€¿€¿€¿€¿€¿€¿€¿€      ÀF¿€¿€¿€¿€¿€¿€¿€¿€ 0  Ÿ€Ð žž„‡× ‡Öž¦‡ÓÆÑ½‡Ò–ÒšÑYÀ‡Ï —˷ˇ˃ǖʚÉ)‡ÅƒÂ–ƚŠ·À‡¿ —»1·»‡º —¶!·¶‡¹ƒ²–¸‡¯£µƒ¶„„ƒµ·®„€ƒ¬·²‡±‡±‡±‡±‡±‡±‡±‡±‡±ƒ±·Ÿ†ûƒ—‡•¢ ž½C ÿ+½ €œ€Â‰Q½žY T r r ä r  ´ ß º » × ÖÀ µ ¶ ¸ ¸ ý  + N = _ g · ¹Ù†äÅ¢é3AÜ†à †á†â¢ä q „€+‚Û ^žÈqÞ×¶Ö„€‚Ô ^ž‚ ž †ÎÞÇžo+ q „€Ù†¿‚ÅÅ+ q „€‚» †¹†º Ž» ¢¶1Á ÿ¢©„‚² ÿ„‚ „ƒ‚†„……¢ª"žž ¼ A½…¢“€ºÞuŸtÞžžˆ¢•ž5q „€ ž<ƒOŸøþ  O‚z6j¢w܆o®3Ãņk­¢f„ƒ›„‚ž†‚jB°ž¯„‚@„…¢e"…žÞXžž„ƒŠ¢Q„‚žm‚WAŸYƒ„½žå ñ ð ´¢DƒØ„‚ê„‚$„…¢I"…ž¢Ï 1q „€ ‘q „†¢0ƒÆ„‚ò„¢7"…ž¢½ 2q „€ ’q „†¢ƒ´„‚ò„¢%"ž¢¬ 4q „€ ”q „†¢ ƒ£„‚ò„¢"ž¢› 8q „€ ˜q „†£”ƒ’„‚ò„¢"ž£Œ‚ø„‚ì„¢‰…žŸ† Ü é è Ö Oćá¢á q „€+í‡Û Žq „€+ ‡ÕƒÔ ^ž‘qßзτ€ƒÍ ^ž ‡É+߯žq q „€žq „€+ q „€ƒ¹Å q +„€+ Ž­ ÿ£A„‚§ ÿ„‚ „ƒƒ¥„…¢9"…žƒ ^žƒ¢˜ß–ž„¢•ß“ž7Ÿ- Žq „€+ q „€+ž4 Ù  Ø Þ ß »»¹ VFU LINE SLEW TEST Ñ1 LINE SKIP ‘ å㌊ !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ ÛÜÝÞ !"#$%&'()*+,-Š   €Ȟמ°ž‰ üúèð‡ò‡ñ–ñšðYÀ‡î —ê·ê†lƒæ–èšç)‡äƒá–äšã ·ß‡Þ —Ú1·Ú‡Ù —Õ!·Õ†X ÿ ž©‡Ì‡Ë–ËšÊYÀ‡È —ķĆEƒÀ–šÁ)‡¾ƒ»–¾š½ ·¹‡¸ —´1·´‡³ —¯!·¯†3 ÿ žƒ‡¦ ‡¥¢+ƒ¨„„ƒ§¶$„€¢$ƒ¤¶!„€ƒŸ„„ƒ ¶‡ž‡ž‡ž‡žƒž¶‡œƒ•¶†²†ï†þƒ”¶ ‡“ÿ† ž•¿ º » µ ¶ · ¸ ° È ù  ¹ . †ƒj‡Ž¢Œ žž‡C ÿ+½ €œ€² žp E ´¢\"ÿ‡ò¢ò‚ò‡ò „€+ßîž|‚ê‡ì ãê„@ßèãç„@ßåÿãã„@ßáãà„@ßÞ€‡Û  q‡Ù ÿÿ·Õ‡ÔãÒ„@ßÐßÍž¬£Î„‚Æ ÿ„‚ „ƒ‚Æ„…ß½žŠ€ ø„…¢¿"ž‚µ‡·ž§ÿã´„@߲㱄@£±€ h„¢¯"žƒAž&ߪž«ÿ‡žž+ƒ¡ÿÿ žA A …£–€ºÞtŸs ‚‹‡‹ „€+߇ž|€‡„žc ¿Lþ> ¼ ½ À ‡ … ‰ ‡µ‡{‚y‡³ƒ³‡³¢³"£²ÿ„‚° ÿ„‚ „ƒ‚«„…ü‡©¢¦‚¨‡_ „€+ß[ž|…£˜"ž£™ÿ„€‚ ÿ„‚  €€y†ˆ ÿº†žžü‡Šži ˆ Š ƒ ‹ † H ( ¾þüß|ž[‚Ô‡Ô †n£sÿ„‚q ÿ„‚…£g"ž‚i‡$ã#€@yº]žß¾žž‘ƒ» 6C‚Tžƒ‚Q ÿÿ†Mž^¢Kã €@y £Lú„…£D"žƒ¤ ‡¢ Ÿ¡ƒ<£=‡<§9ž  ƒ5Ð  ÿ¾B ß,£0€G‚p ý œ€ ‡"žY…ÞhŸgþ"è ‰ ! ' ' ¨€­ž¦ž‚ðÀ‡´–´š³YÀ‡± —­·­†rƒ©–«–ªš©)‡¦ƒ£–¦š¥ ·¡‡  —œ1·œ‡› ——!·—†]ž‚ ‡‘¢Yƒ”„„ƒ“¶T„€ƒ‘¶Q†°†²ƒ¶L†£†ÀžŽ º  » µ · ¸ ¹¢Ö°‡Õ „€+ßÑž|¢2`„‚Ë ÿ„‚ „ƒ‚Ç„…‡Å<ƒÂ¹¢["…¢½"ž‚¶‡º°‡´¢¸ã¶€@–¶¸€ž•+߯ߪžvžP ‡§A ¢€»ƒŸBÞrŸqž@†¡ Žš¦Ÿ ) ž…+ öAžy†– Š”¢‘ ¢‚Ž € ž)- ¼ø à  ½‡ÿ‡P€@ ‚B" €@ ‚B" €@ ‚B"  €@ ‚B" €@ ‚B" öž»ž“ž„Þ †ž“ÞŒ †‰žµÐô‡ÒÇÒ †z†z½‡Î–ΚÍYÀ‡Ë —ǷdžlƒÃ–ÅšÄ)‡Áƒ¾–ÁšÀ ·¼‡» —·1··‡¶ —²!·²†Vž†‡« †T†T ‡¨¢Nƒ«„„ƒª¶K„€ƒ¨¶H‡¦†Ö‡¥‡¥‡¥‡¥‡¥‡¥‡¥‡¥‡¥‡¥‡¥‡¥‡¥‡¥‡¥‡¥ƒ¥¶3‡£‡£‡£‡£‡£‚-dŸ¡¿ º » µ ¶ ¸é0Kcq€“® $1Udo€ ¹î¦M&q ƒ\‡¢ žž‡C ÿ+½ €œ€‚„1½žoÅ ´ ßï¢K"Ù‡ìè‡ë ‡ê‡ê¢ê Œq„€ž…¢å q „€+ƒÞ ^žÌqßÚ·Ù„€ƒ× ^ž‚ ž ‡ÑßÍžo+ q„€Ù‡Æ q „€ƒÃ ‡Á‡Á ŽÀ  þ£¼„‚¹ ÿ„‚ „ƒ‚‰„…ƒ ·²„€…¢°"žž•í † ƒ©C‚žƒ‚š6A½…£›€ºÞmŸlß‘žž‡ž+q „€ ž8‚²σMž> Ø Ù Ü ÞZ¿¢£"è‡sƒ ‡ £tƒŸ„‚ƒž·q„€°ž°„‚?„……¢i"žß`žž‚ƒžj‚†ÁŸŒ †‚㊜@eËÍÌ ¶õ˜  Þt¢u"œ‡Î¢Î „€+ßÉž|‡É£A‚È„…‚ ÿ„‚ü„ƒe·8„€…¢½"ž£1‚¶ ÿ„‚ƒ¶·,„€ÿ„…¢±"ž£#€‚ ‡¬ã«€@y tÁžM¹„¢¢"ž£€A€ ´„‚ ÿ„‚‚0·„€…¢‘"ž‚(ÁŸ. †$Ÿ-õ ¼ö"è¥ · ½ …Þ|Ÿ{£žÿ„¢œ"ž£˜€‚ ‡oãn€@ y.q óD 1ºß`žkƒ^ £†„žE¢¢JŒ'™ŒŠ !"#$%&'()*+,-./0123456789:;.=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ ÛÜÝÞ !"#$%&'()*+,-Š¿ž„ß¶ßµŸµß²ß±Ÿ²¢²"⣰„‚¯ ÿ„‚‚¬„…ƒ«·«„€¢ª…"ž⣠„‚¤ ÿ„‚…¢ž"ž=‚𣒄… ¿—¿–…¢•"ž¿“ ¾žœ@Ší ¶¨IÁHH ¾A …ÞvŸu¢g"â£e„‚­ ÿ„‚‚a„…ƒ`·`„€…¢^"ž‚\ ÿ£S„‚â„…¢S"ž=£H‚N„…£Eþ„‚C ÿ„‚…¢ˆ"ž ¾¿ƒž™C ŒŠ WORD SET READY (INPUT MODE)ŒŠ WORD SET READY(OUTPUT MODE)ŠTURN OFF CRT - THEN BACK ON  ††‚} ÿ ‚Ÿx †|…Þzž}Ÿyо¾ñ Þ~¾Öž±8ÄOé]€‚±&µEa«Ó3¸x_|lå*æš×¿Å|þÿ ä}躇~·ˆÑÐgÒ¡í# A `ÅïQÁ¾Í T…ò¾Ý (½Ó :½Ó‚<Š’½Ô -½Ó :½Ó‚" ÿЉ½Ô )½Ó ½Ó Š‚…ìÆÿþÍ ¿†ßæá¦ßÆÝp†ÞP†Ý0†Ü @0†ÙB ž †Õ¢` Ÿh † ‚}’ ¾cÅíž= ¢Ââ‚łĂ¾p‚½P‚¼0/‚³Ÿo ÁðXð)C $ `Áð)C ")PC ")ºC " `Ÿm ½Ñ D½Ó E½Ó B½Ó U½Ó G½Ó 4½Ó ½Ó E½Ó 8½Ó 0½Ó 0½Ó ½ÓŸe ¾ Ÿ} ½Ñ ½Ó‚z½Ó¾¶¾µ P¾«ì½Ú A¾§‚C½Û Q¾£‚@½Û X¾Ÿ‚=½Û Y¾›‚:½Ô½Ñ¾Ÿ¾ž¾ K¾“‚3½Û L¾‚0½Û S¾‹‚-½Û D¾‡‚*½Û C¾ƒ‚'½ÔŸK ½Ó =½ÓŸ{ ¾Ÿ} ½ÓŸ| Áð@)C ")PC ")ŽC " `Ÿr‚Æ"„ †Á½Ñ *½Ù½Ò†¼ Yž  Qžž žç Až¹ Gžž„½Ò½Ø†­ž Ržž†½Ò ž¡½×Ƥž† Dà Và Wá½Öƚ›LBžæLCÐLFÎLLÍLSÏLJžÄLIÊLGÉLRÈLZßÅ …ë½Çž< ¾!Ÿ}½Ò†{½Ò†u½Ò žÅ‚t Pž— LžÅ‚j TžŽ Pžƒ BžÅïÁ¾ô…ñ P…ò ½Ó‚Y…òž …ó‚T Hž„ TžÅ…óž ½Ò   Äž|ÁãQE‚F…ìç ,ž‘ç ,ž‡½Ñ `솂½ÕŸ€ _½Ùž¨ž0 ¾6Ÿ}ª¸¦¸ `î JžŒ Bž†Áì YK QJÿžˆ‚¨fÁäž½Ö‚¤ žcÞ¡ @‚²€ÞŸ‡žÞ§œ `ç@E ;ž‚ž†žß½ÖRA@EN@AÞÇŽ QÁÞŠ‡‰ç ,ž^ž:žFÅB½ž& o¾*‚| ÿ…ì†x‚`Ä D `…ëžž†oì¢Y*ü¸‚ž›€ƒQ€„†d À ‚Ѐª_Ѐ Ä„‚ÂZ@AĄ܃žT B `…ë½Çë DÝìž„*üÞLž_žU‚3 `Ä¢1*ü¦/€ ‚„€‚) ÿ†'žr½Ë ºÁê"B†œãƽу˜½Û½Ö½ËãC凑Ŀ Ä /ž† XžÅƒ‡ž‚ƒ„ ½ѽ۞i Äž]½Ñ䆫@½Úƒ¨½Û½ÖãB…éÇ¢ç ,žœÂžæ[ +ž‰ -žˆ *žŠ Xž‹ /žŒÅKJÿÆŽÅäž^ƒ‹…äž[ƒˆž{ƒ… žxÞ‚žZÄ ,ÅŸ|¾Û ž†½Ö½ËL žÅÆÎò Pžž„ô…ñ ½Þ½Ñä†à½Úø†Á†¾ƒÛ½Û½ÝÞºž{‚¹ ¾ƒ‚ӽўq ‚±†´Ž±k†¬ŠÉ†È‚­Gû†©½ÌÞ§ž}Þ¦žyý†¢½ÌÞ ž}ƒ¹y ‚E ~ à ž .½Óƒ®ÿ ‚E ~ à ž .½ÓÞ£ÞƒžfŸN ,žÅ½Ö†s@ÁäFž…C ’kŸqÁîLLžÅ¾ (žwž{žu Â^Þ|JÿQBÆZŸyî Lžˆ Sžžò TžŠ½ÑžˆÞN‚M ¾ †Ižsľ‰…éä¾Ë†_‚”‡]¾]Š’ž| IÆŽ¾> ,žÅ½ÖƇ ,žžƒ†·½ÖÆ‚ŸpIư¾k ,ž“ ’« ,žƒHÿÆtž’‚r žŽHÿÆmæ -žÅ†›ž†½Öæ -žņ”ä†(ƒ'š\–\ÂFžƒ‚Š -ž‚¾žt½Ñ‚½Úƒ½Ôžx Â’@"Fž‚Ÿzž‡@ ÎŒ‰è ÿFž„ …éÅè Ÿlʾ#…é䆠† ‚.¾b†žÁèÆƒ™‡šÞ™Þ–JÿQº‚”†€JDBG4:CNTDBG4:LP DEBUG4 O0SEGMENTBLANK DEBUG: o ÔMG:Z G:Y G:X MG:W G:V G:U MG:T G:S G:R MG:Q G:P G:O MG:N G:M G:L MG:K G:J G:I MG:H G:G G:F MG:E  G:D G:C MG:B G:A G:9 MG:8 G:7 G:6 MG:5 G:4 G:3 MG:2 G:1 G:0 im MACRO (F100) ig ¾¾ñ Þ~¾Öž±8ÄOé]€ ‚±&µEa«Ó3¸x _|lå*æš×¿ Å|þÿ ä}躇 ~·ˆÑÐgÒ¡í# A `Åï QÁ¾Í T…ò¾Ý (½Ó :½Ó‚<Š’½Ô -½Ó :½Ó‚" ÿЉ½Ô )½Ó ½Ó Š‚…ìÆÿþÍm*** DEBUGS.OBJ - REV E8m00 ***  ¿†ßæá¦ßÆÝp†ÞP†Ý0†Ü @0†ÙB ž †Õ¢` Ÿh  † ‚}’ ¾cÅíž= ¢Ââ‚Å ‚Ä‚¾p‚½P‚¼0/‚³Ÿo  ÁðXð)C $ `Áð)C ")P C ")ºC " `Ÿm ½Ñ D½Ó E ½Ó B½Ó U½Ó G½Ó 4½Ó ½Ó E ½Ó 8½Ó 0½Ó 0½Ó ½ÓŸe ¾  Ÿ}u#u"u!u uuuuuuuuuuuuuuuuuuu u u u u uuuuuuuuu  ½Ñ ½Ó‚z½Ó¾¶¾µ P¾«ì ½Ú A¾§‚C½Û Q¾£‚@½Û X¾Ÿ‚= ½Û Y¾›‚:½Ô½Ñ¾Ÿ¾ž¾ K¾“‚3 ½Û L¾‚0½Û S¾‹‚-½Û D¾‡‚* ½Û C¾ƒ‚'½ÔŸK ½Ó =½ÓŸ{  ¾Ÿ} ½ÓŸ| Áð@)C " )PC ")ŽC " `Ÿr‚Æ"„  †Á½Ñ *½Ù½Ò†¼ Yž  Qžž žç Až¹ Gžž„½Ò½Ø†­ž Ržž† ½Ò ž¡½×Ƥž† Dà Và Wá ½Öƚ›LBžæLCÐLFÎLLÍLS ÏLJžÄLIÊLGÉLRÈLZßÅ …ë½Çž< ¾!Ÿ}½Ò †{½Ò†u½Ò žÅ‚t Pž— Lž Å‚j TžŽ Pžƒ BžÅïÁ¾ ô…ñ P…ò ½Ó‚Y…òž …ó‚T Hž„ TžÅ…óž ½Ò Äž|Áã QE‚F…ìç ,ž‘ç ,ž‡½Ñ `ì †‚½ÕŸ€ _½Ùž¨ž0 ¾6Ÿ}ª¸ ¦¸ `î JžŒ Bž†Áì YK QJÿ žˆ‚¨fÁäž½Ö‚¤ žcÞ¡ @‚² €ÞŸ‡žÞ§œ `ç@E ;ž‚ž†žß ½ÖRA@EN@AÞÇŽ QÁÞŠ‡‰ ç ,ž^ž:žFÅ ½ž& o¾*‚| ÿ…ì†x ‚`Ä D `…ëžž†oì¢Y*ü¸‚ ž›€ƒQ€„†d À ‚Ѐª_Ѐ Ä„‚ÂZ@AĄ܃žT B `…ë ½Çë DÝìž„*üÞLž_žU‚3 ` Ä¢1*ü¦/€ ‚„€‚) ÿ†'žr½Ë ºÁê"B†œãƽу˜½Û½Ö½Ë ãC凑Ŀ Ä /ž† Xž чž‚ƒ„ ½Ñ½Ûži Äž] ½Ñ䆫@½Úƒ¨½Û½ÖãB…éÇ¢ ç ,žœÂžæ[ +ž‰ -žˆ *žŠ Xž‹ /žŒÅKJÿÆŽÅäž^ƒ‹…ä ž[ƒˆž{ƒ… žxÞ‚žZÄ  ,ÅŸ|¾Û ž†½Ö½ËL žÅÆÎ ò Pžž„ô…ñ ½Þ½Ñä†à½Ú ø†Á†¾ƒÛ½Û½ÝÞºž{‚¹ ¾ƒ‚Ó ½Ñžq ‚±†´Ž±k†¬ŠÉ†È‚­ Gû†©½ÌÞ§ž}Þ¦žyý†¢½ÌÞ  ž}ƒ¹y ‚E ~ à ž .½Ó ƒ®ÿ ‚E ~ à ž .½ÓÞ£ ÞƒžfŸN  ,žÅ½Ö†s@ÁäFž…C  ’kŸqÁîLLžÅ¾ (žwž{žu  Â^Þ|JÿQBÆZŸyî Lžˆ Sž žò TžŠ½ÑžˆÞN‚M ¾  †Ižsľ‰…éä¾Ë†_ ‚”‡]¾]Š’ ž| IÆŽ¾> ,žÅ½ÖƇ ,ž žƒ†·½ÖÆ‚ŸpIư¾k ,ž“ ’« ,žƒHÿÆtž’‚r žŽHÿ Æmæ -žÅ†›ž†½Öæ -žÅ †”ä†(ƒ'š\–\ÂFžƒ‚Š - ž‚¾žt½Ñ‚½Úƒ½Ôžx Â’ @"Fž‚Ÿzž‡@ ÎŒ‰è ÿFž„ …éÅè Ÿlʾ#…éä † † ‚.¾b†žÁèÆƒ™‡šÞ™Þ–Jÿ Qº‚”†’‚!†’Â’ƒŽ»ž…ÞŠÞ‹ JÿQ¸Ä½Ñ %½Ó‚‚½Ôžu  †U ½Ó ½Ó ’‰B *ž ½Ó ½Ó‚GŸo †h½Ô †f ÿ†e Ä"†cIƒaM K ÿ¢Y &žž†¢V&žƒ†RÆR `ÞQK L$žžk‚K N =½Ó‚DŽD½Ô G ½Ó‚A öÁ  :½Óž€ ½ÓŸL  ¾ƒ ½ÓŸ{ †’¹¾‡y¾…9¾ƒ ¾‚Ÿu  öÁ  :½Ó‚Ÿw  @0Ƶ‡ÁïQ¾˜žÂˢ̂¬ C C 96¼C C " z až‚ ࢜0 `Ÿa ´C  /6» C C 6¼ C  C 6¼C ¾¡Ÿh† Áï Q¾¬Ÿ{…唢’C "C ¢C  I6()/' 05D8 2324 05D9 2526 05DA 2B2D 05DB 3D40 05DC 2A22 05DD 273A 05DE 3B2E 05DF 2C3C 05E0 3E28 05E1 292F 05E2 DCDB 1048 WORD :DCDB,:DDDE,:DF00 1PAGE 0038 MACRO (F510) dataCASE 5 DISTRIBUTED I/O SYSTEM TEST 93920-16C300 1984/02/17 09:30:06.00 OUTPUT WORD AND BUFFERS 05E3 DDDE 05E4 DF00 00000046 1049  T3BF1E EQU $-T3BUF0+$-T3BUF0 05E5 0057 1050 T3BUF2 WORD 'W' 05E6 002F 1051 WORD '/' 05E7 0040 1052 WORD '@' 05E8 0000 1053 WORD 0 0000 1054 LPOOL  1055 * 1056 *MAIN WORD BUFFERS 1057 * 05E9 8D8A 1058 WORD  :8D8A,0 05EA 0000 05EB 1059 INBUF RES 260 INPUT BUFFER 06EF 1060 OUTBUF RES  450 OUTPUT BUFFER 1061 * 1062 * 1063 * 1064 * 1PAGE 0039 MACRO (F510) dataCASE 5 DISTRIBUTED I/O SYSTEM TEST 93920-16C300 1984/02/17 09:30:06.50 LINE PRINTER TEST (DIOLP) 0900 0000 1066 ROUND 1067 * 1068 * LINE PRINTER DIAGNOSTIC (LPD) FOR 1069 * DISTRIBUTED I/O. 1070 * 1071 * LINE PRINTER DIAGNOSTIC FOR CENTRONICS 1072 * AND WORD PRODUCTS LINE PRINTER. 1073 * TEST MODES  1074 * 1075 * TEST 1 1076 * THIS TEST WILL EJECT A PAGE, AND  1077 * PRINT ONE PAGE OF ROTATING PATTERN IN 1078 * AUTO OUT BYTE (AOB) MODE. 1079 * 1080 * TEST 2 1081 * 1082 * TH IS TEST WILL EJECT A PAGE, AND 1083 * PRINT ONE PAGE OF STRAIGHT PATTERN 1084 *  IN THE AUTO-OUT-BYTE (AOB) MODE. 1085 * 1086 * TEST 3 1087 *  1088 * THIS TEST CAN NOT BE RUN ON A 1089 * WORD PRODUCTS PRINTER.  1090 * ALL CHARACTERS ARE PRINTED IN THE 1091 * EXPANDED CHARACTER MODE.  1092 * 1093 * TEST 4 1094 * 1095 * THIS TEST WILL BE RUN ONLY WHEN VFU 1096 * OPTION APPLIES. THE PAGE IS EJECTED 1097 *  AND THE FIRST, SECOND, FORTH AND 1098 * EIGHT LINE SKIP MESSAGES ARE PRINTED 1099 * 1100 * TEST SELECTION: 1101 * 1PAGE 0040 MACRO (F510) dataCASE 5 DISTRIBUTED I/O SYSTEM TEST 93920-16C300 1984/02/17 09:30:07.75 LINE PRINTER TEST (DIOLP) 1102 * A REG DESCRIPTION 1103 * 1104 * :0 RUN TESTS 1 AND 2 AND/OR 3 1105 * :1 RUN TEST 1 1106 * :2 RUN TEST 2 1107 * :3  RUN TEST 3 1108 * :4 RUN TEST 4 1109 * 1110 *  1111 * SENSE SWITCH 1112 * 1113 * ON HALT AT END OF TEST(S) 1114 * OFF RUN CONTINEOUSLY 1115 * 1116 *  1117 * OPERATING PROCEDURE 1118 * 1119 * 1 START LPD AT RELATIVE LOCATION 0 (LPDGO1) 1120 * WILL CAUSE LPD TO BE RUN USING THE 1121 * STANDARD (DEFAULT) DEVICE ADDRESS AND 1122 * INTERRUPT LOCATION. 1123 * STARTING LPD AT RELATIVE LOCATION 1 1124 * (LPDGO2) FOR OTHER THAN STANDARD VALUES 1125 * REFER TO STEPS 2 AND 3 BELOW. 1126 * 1127 * 1128 * 2 ON THE I/O DISTRIBUTOR CIRCUIT CARD 1129 * LOCATE J2. IF THERE IS A JUMPER WIRE 1130 * TO PIN 8 SET BIT 11 ON OF THE WORD 1131 * REGISTER, IF PIN 7 HAS A JUMPER SET 1132 * BIT 10 ON OF THE WORD REGISTER, IF PIN 1133 * 6 HAS A JUMPER SET BIT 9 ON OF THE WORD 1134 *  REGISTER, IF PIN 5 HAS A JUMPER SET BIT 1135 * 8 ON OF THE WORD REGISTER, IF PIN 1 HAS  1136 * A JUMPER SET BIT 4 ON OF THE WORD REGISTER 1137 * ENTER THE PORT # 0-7 IN BITS 0-3 OF THE 1PAGE 0041 MACRO (F510) dataCASE 5 DISTRIBUTED I/O SYSTEM TEST 93920-16C300 1984/02/17 09:30:08.75 LINE PRINTER TEST (DIOLP) 1138 * WORD REGISTER. BEFORE THESE BITS ARE 1139 * SET HAVE P SET  TO THE LOCATION LABELED 1140 * LPDGO2. WITH THE WORD REGISTER BITS 1141 * SET PRESS RUN. THE PROGRAN WILL COMPUTE 1142 * THE DEVICE ADDRESS AND INTERRUPT LOCATION  1143 * USING THE BITS SET IN THE WORD REGISTER 1144 * AND RUN THE THREE TESTS.  1145 * 1146 * 3 IF A WORD PRODUCTS PRINTER IS THE 1147 * PRINTING DEVICE BEING USED BIT 15 OF THE 1148 * WORD REGISTER MUST BE SET AND ENTERED 1149 * WITH THE VALUE SET UP IN STEP 2 ABOVE. 1150 * FOR ANY OTHER TYPE PRINTER BIT 15 MUST 1151  * NOT BE SET. 1152 * 1153 * 1154 * 1155 *  1156 * 1157 * 1158 * 1159 * 1160 * LINE PRINTER TEST EQUATES 1161 * 000000FE 1162 LPDA1 EQU :FE 00000007 1163 LP EQU  7 LINE PRINTER PORT # 0000000C 1164 TOF EQU :0C TOP OF FORM CODE 0000000D 1165 CRET EQU :0D CARRIAGE RETURN 0000000A 1166 LF EQU :0A LINE FEED CODE  0000008E 1167 EXP EQU :8E EXPAND CODE 00000020 1168 SPACE EQU :20 ASCII SPACE CODE 1169 * 1170 * MICRO CODE START ADDRESS (BRANCH LOCATION) 1171 * 00000001 1172 LPSTRT EQU 1 MICRO CODE START ADDRESS 1PAGE 0042 MACRO (F510) dataCASE 5 DISTRIBUTED I/O SYSTEM TEST 93920-16C300 1984/02/17 09:30:10.00 DIOLP INITIALIZATION 1174 * 00000900 1175 DIOLP EQU $ 0900 9E81 0902 1176 JMP LPDGO1 DEFAULT ENTRY 0901 9E84 0906 1177 JMP  LPDGO2 DEMAND ENTRY 00000902 1178 LPDGO1 EQU $ 0902 87D7 095A 1179 COPY A,OPTNS  SAVE A SELECTION 0903 0900 1180 COPY =0,A 0904 87D6 095B 1181 COPY A,PRINTR CLEAR PRINTER CODE FOR CENTRONICS 0905 9EA6 092C 1182 JMP START 00000906 1183 LPDGO2 EQU $ 0906 87D3 095A 1184 COPY A,OPTNS SAVE A SELECTION 0907 C6D1 0959 1185 COPY Q,CONLP SAVE Q SELECTION 1186 * 1187 * WORD REGISTER BIT DEFINITION 1188 *  1189 * BIT # DEFINITION 1190 * 1191 * 15 0=CENTRONICS, 1=WORD PRODUCTS 1192 * 14 SET IF VFU OPTION 1193 * 13 * NOT USED  1194 * 12 * 1195 * 11 SET IF JUMPER TO J2 PIN 8 1196 * 10 SET IF JUMPER TO J2 PIN 7 1197 * 9 SET IF JUMPER TO J2 PIN 6  1198 * 8 SET IF JUMPER TO J2 PIN 5 1199 * 7 SET TO ZERO   1200 * 6 SET TO ZERO 1201 * 5 SET TO ZERO 1202 * 4 SET IF JUMPER TO J2 PIN 1 1203 * 3 ** 1204 * 2  * INDICATES PORT # (0-7) 1205 * 1 * 1206 * 0 ** 1207 * 1208 * 1209 * 1PAGE 0043 MACRO (F510) dataCASE 5 DISTRIBUTED I/O SYSTEM TEST 93920-16C300 1984/02/17 09:30:11.25 DIOLP INITIALIZATION 1210 * FORM DEVICE ADDRESS 1211 * 0908 BD00 0000 1212 JST *0 BKPT. USER INPUTS DEV. ADDR. 0909 87D2 095C 1213 COPY A,WORD 090A 96D2 095D 1214 AND =:C00,A ISOLATE DEVICE ADDRESS BITS 090B 9AD1 095D 1215 XOR =:C00,A 090C 0E59 1216 SHIFT A,RO,6 090D 19C0 1217 OR =:C0,A FORM DEVICE ADDRESS 090E 87CF 095E 1218 COPY A,SAVE SAVE RESULT 090F 0907 1219  COPY =7,A FETCH MASK 0910 97CB 095C 1220 AND WORD,A ISOLATE PORT # BITS 0911 0E01 1221 SHIFT A,LO,1 0912 B7CB 095E 1222 OR SAVE,A FORM DEVICE ADDRESS 0913 87CB 095F 1223  COPY A,SDA STORE DEVICE ADDRESS 1224 * 1225 * FORM INTERRUPT ADDRESS 1226 * 0914 83C7 095C 1227 COPY WORD,A FETCH WORD REGISTER ENTRY 0915 96CA 0960 1228 AND =:200,A ISOLATE J2 PIN 6 BIT 0916 9AC9 0960 1229 XOR =:200,A 0917 0E29 1230  SHIFT A,RO,3 0918 87C5 095E 1231 COPY A,SAVE 0919 83C2 095C 1232 COPY WORD,A 091A 96C6 0961 1233 AND =:100,A ISOLATE J2 PIN 5 BIT 091B 9AC5 0961 1234 XOR =:100,A 091C 0E09 1235 SHIFT A,RO,1 POSITION BIT 091D B7C0 095E 1236 OR SAVE,A MERGE WITH PIN 6 BIT 091E 87BF 095E 1237 COPY A,SAVE SAVE RESULT 091F 0910 1238 COPY =:10,A  FETCH MASK 0920 97BB 095C 1239 AND WORD,A ISOLATE J2 PIN 1 0921 0E31 1240 SHIFT A,LO,4 POSITION RESULT 0922 B7BB 095E 1241 OR SAVE,A MERGE WITH OTHER BITS 0923 87BA 095E 1242  COPY A,SAVE SAVE RESULT 0924 0907 1243 COPY =7,A FETCH MASK 0925 97B6 095C 1244 AND WORD,A ISOLATE PORT # BITS 0926 0E21 1245 SHIFT A,LO,3 POSITION 1PAGE 0044 MACRO (F510) dataCASE 5 DISTRIBUTED I/O SYSTEM TEST 93920-16C300 1984/02/17 09:30:12.75 DIOLP INITIALIZATION 0927 B7B6 095E 1246 OR SAVE,A MERGE TO FORM INTERRUPT VECTOR 0928 87B9 0962 1247 COPY A,SIL  STORE INTERRUPT ADDRESS 1248 * 1249 * SET PRINTER CODE 1250 * 0929 83B2 095C 1251 COPY WORD,A 092A 96B8 0963 1252 AND =:C000,A 092B 87AF 095B 1253   COPY A,PRINTR STORE PRINTER CODE 1254 * :8000 = WORD PRODUCTS 1255 * :0000 = CENTRONICS 0000092C 1256 START EQU $ 092C A3B5 0962 1257 COPY SIL,X FETCH INTERRUPT VECTOR ADDRESS 092D 83B6 0964 1258 COPY JST,A FETCH PORT JST 092E 8484 0004 1259 COPY A,EOBJST(X) PUT AT INT. LOCATION+4 092F 83B5 0965 1260 COPY AOB,A MAKE AOB INSTRUCTION 0930 B7AE 095F 1261 OR SDA,A 0931 8480 0000 1262 COPY A,AIOCMD(X) PUT AT INT. LOC +0 0932 83AC 095F 1263 COPY SDA,A FETCH DEVICE ADDRESS 0933 B7B2 0966 1264 OR OTX,A FORM OTX CONTROL COMMAND 0934 1901 1265 OR =1,A SET CONTROL BIT 0935 87B1 0967 1266  COPY A,TEST1E 0936 87B1 0968 1267 COPY A,TEST2C 0937 87B1 0969 1268 COPY A,TEST4A 0938 87B1 096A 1269 COPY A,TEST4B 0939 87B1 096B 1270 COPY A,TEST4C 093A 87B1 096C 1271  COPY A,TEST4D 093B 87B1 096D 1272 COPY A,TEST4E 093C 87B1 096E 1273 COPY A,TEST4F 093D 87B1 096F 1274 COPY A,TEST3G STORE OTX COMMAND 093E 83B1 0970 1275 COPY INA,A FETCH INA COMMAND 093F B79F 095F 1276 OR SDA,A FORM DEVICE ADDRESS 0940 1901 1277 OR =1,A SET FOR READ STATUS INDICATOR 0941 86FB 09BD 1278 COPY A,TEST1G STORE FOR EXECUTION 0942 8397 095A 1279 COPY OPTNS,A 0943 1807 1280 AND =7,A GET THE SELECTED TEST 0944 8795 095A 1281 COPY A,OPTNS 1PAGE 0045 MACRO (F510) dataCASE 5 DISTRIBUTED I/O SYSTEM TEST 93920-16C300 1984/02/17 09:30:14.50 DIOLP INITIALIZATION 0945 A28D 0953 1282 COPY LPTBLD,X 0946 0D04 1283 CSK  A,=4 TEST FOR LEGAL LIMIT 0947 9E81 0949 1284 JMP $+2 0948 BD00 0000 1285 JST *0  NO SUCH TEST 0949 1143 094D 1286 JEQ A,LPTST2 NO TEST SELECTED 094A 0AFF 1287 LPTST1 SUB =1,A DECREMENT A 094B 2B01 1288 ADD =1,X BUMP TABLE ADDRESS 094C 11BD 094A 1289  JNE A,LPTST1 094D A080 0000 1290 LPTST2 COPY 0(X),X FETCH TEST ADDRESS 094E 9C80 0000 1291  JMP 0(X) JUMP TO SELECTED TEST 094F C289 0959 1292 LPTST3 COPY CONLP,Q 0950 511B 092C 1293  JEQ Q,START RUN CONTINUOUSLY? 0951 BD00 0000 1294 JST *0 END OF TEST 0952 9E59 092C  1295 JMP START 0953 0954 1296 LPTBLD WORD LPTBL 0954 0972 1297 LPTBL WORD TEST1 0955 0972 1298 WORD TEST1 0956 09E4 1299 WORD TEST2 0957 0A72 1300 WORD  TEST3 0958 0A11 1301 WORD TEST4 0959 0000 1302 CONLP WORD 0000 1303 *  0018 1304 LPOOL 095A 0310 OPTNS 095B 09DF PRINTR 095C 0316 WORD 095D 0C00 095E 0317 SAVE 095F 09D7 S DA 0960 0200 0961 0100 0962 09D6 SIL 0963 C000 0964 0311 JST 0965 0312 AOB 0966 0314 OTX 1PAGE 0046 MACRO (F510) dataCASE 5 DISTRIBUTED I/O SYSTEM TEST 93920-16C300 1984/02/17 09:30:15.50 DIOLP INITIALIZATION 0967 09B8 TEST1E 0968 09FD TEST2C 0969 0A19 TEST4A 096A 0A2B TEST4B 096B 0A4E TEST4C 096C 0A3D TEST4D 096D 0A5F TEST4E 096E 0A67 TEST4F 096F 0AB7 TEST3G 0970 0315 INA 0971 1PAGE 0047 MACRO (F510) dataCASE 5 DISTRIBUTED I/O SYSTEM TEST 93920-16C300 1984/02/17 09:30:15.75 DIOLP TEST 1 1306 ****************************************** 1307 * TEST 1  1308 * AUTO OUT ROTATING TEST 1309 ****************************************** 00000972 1310 TEST1 EQU $ 0972 08D9 1311 COPY =-39,A (CHAR/LINE DIVIDED BY 2) -1 0973 86E4 09D8 1312 COPY A,CPL 0974 08C5 1313 COPY =-59,A LINES PER PAGE 0975 A2E9 09DF 1314  COPY PRINTR,X CENTRONIC? 0976 3341 0978 1315 JGE X,$+2 YES, CENTRONIC 0977 08DC 1316  COPY =-36,A LINES PER PAGE 0978 86E0 09D9 1317 COPY A,LINES 0979 0920 1318  COPY =SPACE,A 097A 86E1 09DC 1319 COPY A,FIRST SAVE 097B 86E2 09DE 1320 COPY A,CHARSV 097C A2E4 09E1 1321 COPY =LPOUT,X FETCH BUFFER ADDRESS 097D 090C 1322 COPY =TOF,A  TOP OF FORM CODE 097E 0E71 1323 SHIFT A,LO,8 LEFT JUSTIFY 097F 0B0A 1324 ADD  =LF,A ADD LINE FEED 0980 8480 0000 1325 COPY A,0(X) STORE IN BUFFER 0981 2B01 1326 TEST1A ADD =1,X BUMP ADDRESS 0982 82DB 09DE 1327 COPY CHARSV,A FETCH CHARACTER 0983 0C5E  1328 CLSN =:5E,A LINE PRINTER LIMITS? 0984 9EC8 09CD 1329 JMP TEST1I JUMP IF YES 0985 0E71 1330 SHIFT A,LO,8 LEFT JUSTIFY CHARACTER 0986 DED7 09DE 1331 IMS CHARSV 0987 B6D6 09DE 1332 OR CHARSV,A 0988 8480 0000 1333 COPY A,0(X) STORE IN BUFFER 0989 82D4 09DE 1334 COPY CHARSV,A FETCH LAST CHARACTER 098A 0C5E 1335 CLSN =:5E,A LINE PRINTER LIMIT?? 098B 9E82 098E 1336 JMP TEST1B JUMP IF YES 098C 0B01 1337 ADD =1,A  BUMP CHARACTER 098D 9E81 098F 1338 JMP $+2 098E 0920 1339 TEST1B COPY =SPACE,A 098F 86CE 09DE 1340 COPY A,CHARSV 0990 DEC7 09D8 1341 IMS CPL BUMP CHARACTER/LINE COUNT 1PAGE 0048 MACRO (F510) dataCASE 5 DISTRIBUTED I/O SYSTEM TEST 93920-16C300 1984/02/17 09:30:17.50 DIOLP TEST 1 0991 9E6F 0981 1342 JMP TEST1A JUMP IF NOT FULL LINE 0992 2B01 1343 ADD =1,X BUMP ADDRESS 0993 090D 1344 COPY =CRET,A CARRIAGE RETURN 0994 0E71 1345 SHIFT A,LO,8 0995 0B0A 1346 ADD =LF,A LINE FEED FOR A NEW LINE 0996 8480 0000 1347 COPY A,0(X)   STORE IN BUFFER 0997 08D9 1348 COPY =-39,A CHAR/LINE DIVIDER BY 2 -1 0998 86BF 09D8 1349  COPY A,CPL 0999 82C5 09DF 1350 COPY PRINTR,A FETCH PRINTER TYPE 099A 13C5 09A0 1351 JLT  A,TEST1D JUMP IF WORD PRODUCTS 099B 2B01 1352 ADD =1,X BUMP ADDRESS 099C 0920 1353 COPY =SPACE,A 099D 0E71 1354 SHIFT A,LO,8 099E 0B20 1355 ADD =SPACE,A  099F 8480 0000 1356 COPY A,0(X) 000009A0 1357 TEST1D EQU $ 09A0 82BB 09DC 1358 COPY  FIRST,A FETCH FIRST CHARACTER 09A1 0B01 1359 ADD =1,A BUMP BY ONE 09A2 86B9 09DC 1360 COPY A,FIRST 09A3 86BA 09DE 1361 COPY A,CHARSV 1362 * 1363 *  FORM DIO PORT WORD AND START OUTPUT 1364 * 09A4 0020 1365 COPY X,A SAVE X IN A 09A5 8EBB 09E1 1366 SUB =LPOUT,A SUBTRACT START ADDR. TO 1367 * FIND LENGTH... 09A6 0B01 1368 ADD =1,A 09A7 0E01 1369 SHIFT A,LO,1 FORM BYTE COUNT 09A8 A2B6 09DF 1370 COPY PRINTR,X FETCH PRINTER TYPE CODE 09A9 31C1 09AB 1371 JNE X,$+2 JUMP IF WORD PRODUCTS 09AA 0AFF 1372 SUB =1,A REDUCE BYTE COUNT BY 1 09AB 0001 1373 NEG A,A TWOS COMPLEMENT 09AC A2A9 09D6 1374 COPY SIL,X FETCH INTERRUPT ADDRESS 09AD 8481 0001 1375 COPY A,AIOCNT(X) 09AE 82B2 09E1 1376 COPY =LPOUT,A FETCH BUFFER ADDR 09AF 0E01 1377 SHIFT A,LO,1 FORM BYTE ADDRESS 1PAGE 0049 MACRO (F510) dataCASE 5 DISTRIBUTED I/O SYSTEM TEST 93920-16C300 1984/02/17 09:30:19.00 DIOLP TEST 1 09B0 0AFF 1378 SUB =1,A MINUS 1 09B1 8482 0002 1379 COPY A,AIOADR(X) STORE ADDRESS FOR EOB 09B2 0901 1380 COPY =1,A 09B3 8483 0003 1381 COPY A,AIOCHN(X) SET FOR NO WORD CHAINING 09B4 8286 09BB 1382 COPY RETADR,A  FETCH INT. RETURN ADDRESS 09B5 8485 0005 1383 COPY A,EOBADR(X) STORE EOB TRANSFER ADDRESS 09B6 0E85  1384 SBIT 8,S ENABLE INTERRUPTS 09B7 A2AA 09E2 1385 COPY =:210,X BRANCH CODE 09B8 2200 1386 TEST1E OUT X,0 START AOB 09B9 9E7F 09B9 1387 JMP $ WAIT FOR EOB INTERRUPT 09BA 9E8D 09C8 1388 JMP TEST11 1389 * 000009BB 1390 RETADR EQU $  09BB 09BC 1391 WORD TEST1F 000009BC 1392 TEST1F EQU $ END OF BLOCK ENT-0 -O&NT  09BC 0E0D 1393 ENT 09BD 0100 1394 TEST1G IN 0*8+0,A READ STATUS 09BE 1810 1395  AND =:10,A ISOLATE STATUS BITS 09BF 1141 09C1 1396 JEQ A,$+2 JUMP IF WORD READY BIT ON 09C0 BD00 0000 1397 TEST1H JST *0 09C1 0E85 1398 SBIT 8,S ENABLE INTERRUPTS 09C2 A2 93 09D6 1399 COPY SIL,X INTERRUPT LOCATION 09C3 8081 0001 1400 COPY AIOCNT(X),A GET THE BYTE COUNT 09C4 0E01 1401 SHIFT A,LO,1 TEST IF IT GOES TO :8000 09C5 11BA 09C0 1402 JNE  A,TEST1H NO, HALT THE PROGRAM 09C6 DE75 09BC 1403 IMS TEST1F BUMP RETURN ADDRESS 09C7 9F74 09BC 1404 JMP *TEST1F RETURN 000009C8 1405 TEST11 EQU $ 09C8 DE90 09D9 1406 IMS  LINES BUMP LINE COUNT 09C9 9E81 09CB 1407 JMP $+2 09CA 9E88 09D3 1408 JMP TEST1J  09CB A295 09E1 1409 COPY =LPOUT,X FETCH BUFFER ADDRESS 09CC 9E35 0982 1410 JMP TEST1A+1  000009CD 1411 TEST1I EQU $ 09CD 0E71 1412 SHIFT A,LO,8 LEFT JUSTIFY 09CE 1920 1413 OR =SPACE,A 1PAGE 0050 MACRO (F510) dataCASE 5 DISTRIBUTED I/O SYSTEM TEST 93920-16C300 1984/02/17 09:30:20.50 DIOLP TEST 1 09CF 8480 0000 1414 COPY A,0(X) STORE IN BUFFER 09D0 0920 1415 COPY =SPACE,A 1416 * 09D1 0B01 1417 ADD =1,A 09D2 9E3C 098F 1418 JMP  TEST1B+1 000009D3 1419 TEST1J EQU $ 09D3 8306 095A 1420 COPY OPTNS,A 09D4 114F 09E4 1421  JEQ A,TEST2 09D5 9F8D 09E3 1422 JMP LPTST3 1423 * 1424 * WORD AREA 1425 * 09D6 00F8 1426 SIL WORD DIO7 STANDARD INT. LOCATION 09D7 00FE 1427 SDA WORD LPDA1 09D8 0000 1428 CPL WORD 0 09D9 0000 1429 LINES WORD 0 09DA 0000  1430 CSET WORD 0 09DB 0000 1431 CHAR WORD 0 09DC 0000 1432 FIRST WORD 0 09DD 0000  1433 COUNT WORD 0 09DE 0000 1434 CHARSV WORD 0 09DF 0000 1435 PRINTR WORD 0 09E0 0000 1436 STATUS WORD 0 1437 * 0003 1438 LPOOL 09E1 0B1C LPOUT 09E2 0210 09E3 094F LPTST3 1439 * 1PAGE 0051 MACRO (F510) dataCASE 5 DISTRIBUTED I/O SYSTEM TEST 93920-16C300 1984/02/17 09:30:21.50 DIOLP TEST 2 1441 ****************************************** 1442 * TEST 2 1443 * ALIGNMENT TEST 1444 ****************************************** 000009E4 1445 TEST2 EQU $ 09E4 827A 09DF 1446 COPY PRINTR,A VFU? 09E5 0E11 1447 SHIFT A,LO,2 09E6 366A 0A11 1448 JT OV,TEST4 YES 09E7 A277 09DF 1449 COPY PRINTR,X FETCH PRINTER TYPE CODE 09E8 08DC 1450 COPY =-36,A 09E9 866F 09D9 1451 COPY A,LINES 09EA 08AE 1452 COPY =-82,A 09EB 33C3 09EF 1453 JLT X,TEST21 JUMP IF WORD PRODUCTS 09EC 08C5  1454 COPY =-59,A 09ED 866B 09D9 1455 COPY A,LINES LINE/PAGE 09EE 08AD 1456  COPY =-83,A 000009EF 1457 TEST21 EQU $ 09EF A266 09D6 1458 COPY SIL,X SETUP 0  9F0 8481 0001 1459 COPY A,AIOCNT(X) BUFFER COUNT 09F1 839B 0A0D 1460 COPY BUFPTR,A 09F2 8482 0002 1461 COPY A,AIOADR(X) BUFFER POINTER 09F3 9E86 09FA 1462 JMP TST2B2 000009F4 1463  TEST2B EQU $ 09F4 826A 09DF 1464 COPY PRINTR,A FETCH PRINTER TYPE CODE 09F5 1342 09F8 1465  JGE A,TST2B1 JUMP IF NOT WORD PRODUCTS 09F6 08B0 1466 COPY =-80,A CHARACTERS PER LINE  09F7 9E81 09F9 1467 JMP $+2 000009F8 1468 TST2B1 EQU $ 09F8 08AF 1469 COPY  =-81,A CHAR PER LINE-1 09F9 8481 0001 1470 COPY A,AIOCNT(X) BUFFER COUNT 000009FA 1471 TST2B2 EQU $ 09FA 8240 09BB 1472 COPY TEST1F-1,A FETCH RETURN ADDRESS 09FB 8485 0005 1473 COPY  A,EOBADR(X) STORE FOR EOB INT. JST 09FC A265 09E2 1474 COPY =:210,X BRANCH CODE 09FD 2200 1475 TEST2C OUT X,0 09FE 0E85 1476 SBIT 8,S ENABLE INTERRUPTS 1PAGE 0052 MACRO (F510) dataCASE 5 DISTRIBUTED I/O SYSTEM TEST 93920-16C300 1984/02/17 09:30:23.00 DIOLP TEST 2 09FF 9E7F 09FF 1477 JMP  $ WAIT FOR INTERRUPT 00000A00 1478 TEST2D EQU $ EOB ENTRY 0A00 DE58 09D9 1479  IMS LINES BUMP LINE COUNT 0A01 9E81 0A03 1480 JMP $+2 0A02 9E84 0A07 1481 JMP  TEST2F 0A03 838A 0A0E 1482 COPY BFPTR,A BUFFER ADDRESS 0A04 A251 09D6 1483 COPY SIL,X  INTERRUPT ADDRESS 0A05 8482 0002 1484 COPY A,AIOADR(X) STORE BUFFER ADDRESS 0A06 9E6D 09F4 1485  JMP TEST2B 1486 * 00000A07 1487 TEST2F EQU $ 0A07 8257 09DF 1488 COPY  PRINTR,A 0A08 1341 0A0A 1489 JGE A,$+2 JUMP IF CENTRONIC 0A09 9F59 09E3 1490 JMP LPTST3 0A0A 8384 0A0F 1491 COPY OPTNS,A 0A0B 11BD 0A09 1492 JNE A,$-2 0A0C 9EE5 0A72 1493  JMP TEST3 1494 * 0004 1495 LPOOL 0A0D 0AF1 BUFPTR 0A0E 0AF0 BFPTR 0A0F 0310 OPTNS 0A10 1PAGE 0053 MACRO (F510) dataCASE 5 DISTRIBUTED I/O SYSTEM TEST 93920-16C300 1984/02/17 09:30:23.75 DIOLP TEST 4 WORD PRODUCTS VFU 1497 * 1498 * TEST 4 1499 * VFU WORD PRODUCTS TEST  1500 * 00000A11 1501 TEST4 EQU $ 0A11 A244 09D6 1502 COPY SIL,X SETUP 0A12 83D8 0A6B 1503 COPY VFUPTR,A 0A13 8482 0002 1504 COPY A,AIOADR(X) BUFFER POINTER 0A14 08EA 1505 COPY =-22,A CHAR IN MESSAGE 0A15 8481 0001 1506 COPY A,AIOCNT(X) 0A16 8224 09BB 1507 COPY RETADR,A FETCH RETURN ADDR. 0A17 8485 0005 1508 COPY A,EOBADR(X) 0A18 A249 09E2 1509 COPY =:210,X BRANCH CODE 0A19 2200 1510 TEST4A OUT X,0 0A1A 0E85 1511  SBIT 8,S ENABLE INTERRUPTS 0A1B 9E7F 0A1B 1512 JMP $ 0A1C A2CF 0A6C 1513 COPY !  =LINEN,X 0A1D 0931 1514 COPY =:31,A 1 CODE 0A1E 0E71 1515 SHIFT A,LO,8 LEFT JUSTIFY 0A1F 0B20 1516 ADD =SPACE,A 0A20 8480 0000 1517 COPY A,0(X) STORE IN MESSAGE 0A21 0991 1518 COPY =:91,A FIX UP VFU COMMAND 0A22 0E71 1519 SHIFT A,LO,8  FOR 1 LINE SKIP 0A23 0B0D 1520 ADD =CRET,A 0A24 8486 0006 1521 COPY A,6(X) 0A25 A230 09D6 1522 COPY SIL,X SET UP AUTO I/O 0A26 83C6 0A6D 1523 COPY LINPTR,A 0A27 8482 0002 1524 COPY A,AIOADR(X) BUFFER POINTER 0A28 08F2 1525 COPY =-14,A 14 CHAR. IN MESSAGE 0A29 8481 0001 1526 COPY A,AIOCNT(X) 0A2A A237 09E2 1527 COPY =:210,X BRANCH CODE 0A2B 2200 1528 TEST4B OUT X,0 0A2C 0E85 1529 SBIT 8,S 0A2D 9E7F 0A2D 1530 JMP $ 0A2E A2BD 0A6C 1531 COPY =LINEN,X 0A2F 0932 1532 COPY =:32,A I CODE 1PAGE 0054 MACRO (F510) dataCASE 5 DISTRIBUTED I/O SYSTEM TEST 93920-16C300 1984/02/17 09:30:25.25 DIOLP TEST 4 WORD PRODUCTS VFU 0A30 0E71 1533 SHIFT A,LO,8 LEFT JUSTIFY 0A31 0B20 1534 ADD =SPACE,A 0A32 8480 0000  1535 COPY A,0(X) FIX UP VFU COMMAND 0A33 0992 1536 COPY =:92,A FOR 2 LINE SKIP 0A34 0E71 1537 SHIFT A,LO,8 0A35 0B0D 1538 ADD =CRET,A 0A36 8486 0006 1539  COPY A,6(X) 0A37 A21E 09D6 1540 COPY SIL,X SET UP AUTO I/O 0A38 83B4 0A6D 1541 COPY 'ÿÿÿÿÿÿe831128113721831128113721840501093330eÚ@€831128113721831128113721840501093329" e831128113721831128113721831128113721e831128113721831128113721831128113721831128113721831128113721831128113721edƒ“Mbè8402170903260084021709035350840217092847e 8402170906265084021709083050840217093011e,-8402170910330084021709114300840217093053  eh.# &<8402170910467584021709114125840217093149 ej Ž&<8402170932052584021709330350840217092632 ew *831128152215 831128152219 840217093709 e„³8402170939422584021709394625840217093946$ % & ' ( ) * + ÿÿÿÿÿÿÿÿÿÿÀÿÿÿÿÿÿÿÿÿÿÿàÿÿð. DIODC5P1 ASMDIODC5P1 OBJDIODC5P1 MAP DIODC5P1 BINDIODC5P1 BIN DEBUGS OBJ DIODC5P1 JCL, JWORDBF CRDIN MODEMB JMODEM DIOCRT DIOCRD JDIOHSP DIOHSR DIOLP JDIOTTY O0SEGMENTBLANK o±KDEBUG4 im MACRO (F510) @i€Ÿ€C3iƒŸ€iÀ ¿€ ¿€¿€ ¿€ ¿€¿€ ¿€¿€      À ¿€ ¿€¿€ ¿€ ¿€¿€ ¿€ ¿€ 0  Ÿ€tg i žÁž øà¿€eE" ÿÿ‡Æ†t–Ěà YÀ†p –m¶l†b‚i–ºš¹) †f‚d–¶šµ ¶a†` –]1¶\†[ –X!¶W†Nžƒ‡£ †Q¢I‚J„„ ‚I¶D„€‚H¶A†Ü‡š‡š‡š‡š‡š ‡š‡š‡š‡š‡š‡š‡š‡š‡š‡š‚6¶. ‡—‡—‡—‡—ž™¿  ñÿ1Lyœ°Û!^Flzœ  7‘ ƒf†T ÿ »  žžx† ø)ÿC . ½¦ .q  ¶†ƒ‡Ž¢Œ žž‡C ÿ+½ €œ€š žX½ £ö"ÿ‡ô¢ô‚ô‡ô „€+ßð ž|‚ì‡î ãì„@ßêãé„@ßçÿ—æ ãä„@ßâãá„@ß߀‡Ü q‡Û ÿÿ·×‡Ö—ÔãÒ„@ßÐßÍž« £Ï„ƒÉ†Â‚㯠ÿ„‚ „ƒ ‚Ä„…ƒÃ·Ã„€ß·žŠ€ ø„…£¼ "ž‚¯‡±žŸÿ‡¨Þ§‡¦£®€ h „£¯"žƒ&mž ƒ£ÿÿ žA  Á …£™€ºÞuŸt ‚˜‡ „€+߉ž|€‡†žd ïþ>     þÀ£p"£vƒ°·w„€ÿ„‚¬ ÿ „‚ „ƒ‚§„…ü‡¥¢¢‡` „€ +ß\ž|…£œ"ž£Zÿ„€‚ ÿ „‚  €€y†‰ ÿ—Kº†žžŠü‡…žhëŸ ß|ž_‚¾‡¾ †s£8ÿ„‚q ÿ„‚…£o"ž‚i‡)ã(€@yºb žß¨žž‘ƒ¥ 6C‚Yžƒ‚V  ÿÿ†Rž^¢Pã€@y £ü „…£L"žŸŽ Á …£ˆ€ºÞuŸtþD¤ £ö"ý‡ô£z‚ó ÿ„‚ƒð·ð„€ º„ „ƒ‚ë„…ƒê øU‚ã)F.  !§æ¢ã‡æãå€@—à„€+ßàßÜ žw‚Ø ÿ£V„€…£Ø"žÞåžT ý†â¢Ë§Î(á¦ß‚Ê—ÇãÉ„@ßÇ  ãÅ„@ßâÀ€q´—»ã½„@ß» ÞÌž‡ @q  —±ã³„@ž–€‚q´€ —ªã¬„@ߪ޻žžn€q´‚—Ÿ ã¡„@ߟްžZžc£‚• ÿ„‚ ‚„…½„…£’"žÞŸžqŸ  CÂ6ïŠå   Á …£…€ºÞuŸt £`"‚ì‡f¢ë „€+ßaž| †t£q‚ä„…‚ã ÿ„‚ü„ƒO·O „€…£Ú"ž£a‚Ó ÿ„‚ƒÓ·C „€ÿ„…£Î"ž£S€‚ ‡?ã> €@y Àa¹„£À"ž£E€ A€ ´„‚² ÿ„‚ƒ · „€ …£&"žŸ« Á …Þy Ÿx£)ÿ„£—"ž£#€‚ ‡ã €@ y.q sD 1ºÞžk‚ £„žQþüëé ¤ªª0¯E ŠABCDEFGHIJKLMNOPQRST UVWXYZ 012345678¹‡?!#$%& +-=@*"':;.,<>()/ÜÛÝÞßW/@Šï±i g žž„‡× ‡Öž¦‡ÓÆÑ½‡Ò–ÒšÑ YÀ‡Ï —˷ˇ˃ǖʚÉ) ‡ÅƒÂ–ƚŠ·À‡¿ —»1·»‡º —¶!·¶‡¹ƒ²–¸‡¯£µƒ¶„„ƒµ ·®„€ƒ¬·²‡±‡±‡±‡±‡±‡±‡± ‡±‡±ƒ±·Ÿ†ûƒ—‡•¢ ž ½C ÿ+½ €œ€Â‰Q½žY T r r ä r dÿÿ ßdÿÿ dÿÿ × ÖÀdÿÿdÿÿdÿÿ ¸ ý  + N = _ g ·dÿÿ Ù†äÅ¢é3A܆à †á†â¢ä q „€+‚Û ^žÈqÞ×¶Ö„€ ‚Ô ^ž‚ ž †ÎÞÇžo+ q „€Ù†¿‚ÅÅ+ q „€‚» †¹†º Ž» ¢¶1Á ÿ¢© „‚² ÿ„‚ „ƒ‚†„……¢ª" žž ¼ A½…¢“€ ºÞuŸtÞžžˆ¢•ž5q „€  ž<ƒOŸøþ  O‚z6j¢wÜ †o®3Ãņk­¢f„ƒ›„‚ž†‚j B°ž¯„‚@„…¢e"…žÞX žž„ƒŠ¢Q„‚žm‚WAŸYƒ„½žå ñ ðdÿÿ ¢DƒØ„‚ê„‚$„…¢I"…ž ¢Ï 1q „€ ‘q „†¢0ƒÆ„‚ ò„¢7"…ž¢½ 2q „€ ’ q „†¢ƒ´„‚ò„¢%"ž¢¬ 4q „€ ”q „†¢ ƒ£„‚ò „¢"ž¢› 8q „€ ˜q  „†£”ƒ’„‚ò„¢"ž£Œ‚ø„‚ ì„¢‰…žŸ† Ü é è Ö  Oćá¢á q „€+í‡Û Žq „€+ ‡ÕƒÔ ^ž‘qßÐ ·Ï„€ƒÍ ^ž ‡É+߯žq q „€žq „€+ q „€ƒ¹ Å q +„€+ Ž­ ÿ £A„‚§ ÿ„‚ „ƒƒ¥„…¢9" …žƒ ^žƒ¢˜ß–ž„¢•ß“ž7Ÿ- Žq „€+ q „- €+ž4 Ù  Ø Þ ß »» ¹ VFU LINE SLEW TEST  Ñ1 LINE SKIP ‘ å㌊ ! "#$%&'()*+,-./0123456789 :;<=>?@ABCDEFGHIJKLMNOPQ RSTUVWXYZ ÛÜÝÞ !"#$%&'()*+,-Š   r €gg ž×ž°ž‰ üúèð ‡ò‡ñ–ñšðYÀ‡î —ê·ê †lƒæ–èšç)‡äƒá–äšã ·ß‡Þ —Ú1·Ú‡Ù —Õ!·Õ†X ÿ  ž©‡Ì‡Ë–ËšÊYÀ‡È —Ä ·Ä†EƒÀ–šÁ)‡¾ƒ»–¾š½  ·¹‡¸ —´1·´‡³ —¯!·¯†3 ÿ žƒ‡¦ ‡¥¢+ƒ¨„„ƒ§¶$ „€¢$ƒ¤¶!„€ƒŸ„„ƒ ¶‡ž‡ž ‡ž‡žƒž¶‡œƒ•¶†²†ï†þƒ”¶ ‡“ÿ† ž•¿dÿÿ dÿÿdÿÿdÿÿdÿÿdÿÿ ° È ù dÿÿ . †ƒj‡Ž¢Œ ž ž‡C ÿ+½ €œ€² žp Edÿÿ ¢\"ÿ‡ò¢ò‚ò‡ò „€+ßî ž|‚ê‡ì ãê„@ßèãç„@ßåÿãã „@ßáãà„@ßÞ€‡Û q‡Ù  ÿÿ·Õ‡ÔãÒ„@ßÐßÍž¬£Î „‚Æ ÿ„‚ „ƒ‚Æ„…ß½žŠ€ ø„…¢¿"ž‚µ‡·ž§ÿã´„@ ߲㱄@£±€ h„¢¯"žƒA ž&ߪž«ÿ‡žž+ƒ¡ÿÿ žA  A …£–€ºÞtŸs ‚‹‡‹ „€+߇ž|€‡„žcdÿÿLþ>dÿÿdÿÿdÿÿ ‡ … ‰ ‡µ‡{‚y‡³ƒ³‡³ ¢³"£²ÿ„‚° ÿ„‚ „ƒ‚« „…ü‡©¢¦‚¨‡_ „€+ß[ž|… £˜"ž£™ÿ„€‚ ÿ„‚   €€y†ˆ ÿº†žžü‡Šži ˆ Š ƒ ‹ † H (dÿÿ þüß|ž[‚Ô‡Ô †n£sÿ„‚q  ÿ„‚…£g"ž‚i‡$ã#€@y º]žß¾žž‘ƒ» 6C‚Tžƒ ‚Q ÿÿ†Mž^¢Kã €@y £L ú„…£D"žƒ¤ ‡¢ Ÿ¡ƒ< £=‡<§9ž  ƒ5Ð  ÿ¾ B ß,£0€G‚p ý œ€ ‡"žY…ÞhŸgþdDÿÿ ‰ ! ' ' ¨L€g ž¦ž‚ðÀ‡´–´š³YÀ‡±  —­·­†rƒ©–«–ªš©)‡¦ƒ£–¦ 𥠷¡‡  —œ1·œ‡› ——! ·—†]ž‚ ‡‘¢Yƒ”„„ƒ“¶T„€ƒ‘ ¶Q†°†²ƒ¶L†£†ÀžŽdÿÿ dÿÿdÿÿdÿÿdÿÿdÿÿ ¢Ö°‡Õ „€+ßÑ ž|¢2`„‚Ë ÿ„‚ „ƒ‚Ç„… ‡Å<ƒÂ¹¢["…¢½" ž‚¶‡º°‡´¢¸ã¶€@–¶¸€ž• +߯ߪžvžP ‡§A ¢ €»ƒŸBÞrŸqž@†¡ Žš ¦Ÿ ) ž…+ öAžy†–  Š”¢‘ ¢‚Ž € ž)-dÿÿø à dÿÿ‡ÿg‡g €@ ‚B " €@  ‚B" €@  ‚B"   €@ ‚B " €@ ‚B" gž»ž“g ž„Þ †ž“ÞŒ †‰žµ Ðô‡ÒÇÒ †z†z ½‡Î–ΚÍYÀ‡Ë —Ƿdžl ƒÃ–ÅšÄ)‡Áƒ¾–ÁšÀ ·¼‡»  —·1··‡¶ —²!·²†Vž†‡«  †T†T ‡¨¢Nƒ«„„ƒª¶K„€ƒ¨¶H ‡¦†Ö‡¥‡¥‡¥‡¥‡¥‡¥‡¥‡¥‡¥ ‡¥‡¥‡¥‡¥‡¥‡¥‡¥ƒ¥¶3‡£‡£‡£‡£‡£‚-dŸ¡¿dÿÿ dÿÿdÿÿdÿÿdÿÿ é0Kcq€“® $1Udo€dÿÿ î¦M&q ƒ\‡¢  žž‡C ÿ+½ €œ€‚„1½žoÅdÿÿ  ßï¢K"Ù‡ìè‡ë ‡ê‡ê ¢ê Œq„€ž…¢å q „€+ƒÞ ^žÌqßÚ·Ù„€ƒ× ^ž‚ ž  ‡ÑßÍžo+ q„€Ù‡Æ q  „€ƒÃ ‡Á‡Á ŽÀ  þ£¼ „‚¹ ÿ„‚ „ƒ‚‰„…ƒ ·²„€ …¢°"žž•í † ƒ©C‚ žƒ‚š6A½…£›€º ÞmŸlß‘žž‡ž+q „€ ž8 ‚²σMž> Ø Ù Ü ÞZ ¿¢£"è‡sƒ ‡ £t ƒŸ„‚ƒž·q„€°ž°„‚?„…… ¢i"žß`žž‚ƒžj‚†ÁŸŒ  †‚㊜@eËÍÌdÿÿ õ˜  Þt¢u"œ‡Î¢Î „€ +ßÉž|‡É£A‚È„…‚ ÿ„‚ü „ƒe·8„€…¢½"ž£1‚¶ ÿ „‚ƒ¶·,„€ÿ„…¢±"ž£#€‚  ‡¬ã«€@y tÁžM¹„¢¢" ž£€A€ ´„‚ ÿ „‚‚0·„€…¢‘"ž‚(ÁŸ. †$Ÿ-õdÿÿödDÿÿ¥dÿÿdÿÿ  …Þ|Ÿ{£žÿ„¢œ"ž £˜€‚ ‡oãn€@ y.q óD  1ºß`žkƒ^ £†„žE¢¢ JŒ'™ŒŠ !"#$%&'()*+ ,-./0123456789:;.=>?@ABC DEFGHIJKLMNOPQRSTUVWXYZ  ÛÜÝÞ !"#$%&'()*+,-ŠZ¾g ž„ß¶ßµŸµß²ß±Ÿ²¢²"â £°„‚¯ ÿ„‚‚¬„…ƒ«·«„€¢ª …"ž⣠„‚¤ ÿ„‚…¢ž "ž=‚𣒄… ¿—¿–… ¢•"ž¿“ ¾žœ@Šídÿÿ ¨IÁHH ¾ A …ÞvŸu¢g". â£e„ ‚­ ÿ„‚‚a„…ƒ`·`„€…¢^" ž‚\ ÿ£S„‚â„…¢S"ž =£H‚N„…£Eþ„‚C ÿ „‚…¢ˆ"ž ¾¿ƒž™C  ŒŠ WORD SET READY (INP UT MODE)ŒŠ WORD SET READ Y(OUTPUT MODE)ŠTURN OFF CRT - THEN BACK ON  ††‚} ÿ ‚Ÿx †|…Þzž}ŸyÿÿQRSTUVWXYZ  ÛÜÝÞ !"#$%&'()*+,-ŠZ¾g ž„ß¶ßµŸµß²ß±Ÿ²¢²"â £°„‚¯ ÿ„‚‚¬„…ƒ«·«„€¢ª …"ž⣠„‚¤ ÿ„‚…¢ž "ž=‚𣒄… ¿—¿–… ¢•"ž¿“ ¾žœ@Šídÿÿ ¨IÁHH ¾ A …ÞvŸu¢g"1PAGE 1 MULTI-TASKING LINKER (G2,G2,G1) 1984 Feb 17 09:10:48.75 FILE USAGE SUMMARY DM1/DIODC5P1.BIN=DM1/DIODC5P1.OBJ+ DM1/DEBUGS.OBJ(ABSOLUTE=15D0) NOTE: *** DEBUGS.OBJ - REV E800 *** 1PAGE 2 MULTI-TASKING LINKER (G2,G2,G1,G2,G1,G4,--,E7,G1,--,G0,E3) 1984 Feb 17 09:11:37.25 ALL SYMBOLS THE TRANSFER ADDRESS IS 15D0(DEBUG:)  ABSOLUTE SYMBOLS 0206-DIOTTY 0B80-DIOHSP 1080-DIOCRD 1187-WORDBF 1202-MODEM 0900-DIOLP 0B80-DIOHSR  112D-CRDIN 1200-DIOCRT 1500-MODEMB MEMORY ABSOLUTE 15D0-R:LOW 2654-R:HIGH SEGMENT DEBUG: (15D0 - 1DA3) ABSOLUTE - RAM, SHAREABLE 15D0-DEBUG4 1AA4-DBG4:CNT 1AB6-DBG4:LP SEGMENT BLANK (1DA4 - 2654) ABSOLUTE - RAM MISSING: SRF:ER NO WARNINGS b 17 09:11:37.25 ALL SYMBOLS THE TRANSFER ADDRESS IS 15D0(DEBUG:)  ABSOLUTE SYMBOLS 0206-DIOTTY 0B80-DIOHSP 1080-DIOCRD 1187-WORDBF 1202-MODEM 0900-DIOLP 0B80-DIOHSR  ŽÖp@ †ü¾¶ʽтõ½Û‚ð½ÛÂóTB‚ñ½Ûľ§@L@ž|LOžÛLmžÙLož×¾š ¦á `LžpJñRbC žŽžŸžßžÝž žžž¦ž¥ž¤ž™ž–ž•ž”žž“¾ë¾êž[ ¾çŸ} ¾ÞŸ} ¾Ñÿ½†»¾Æ@ƹŸwžûžõžïr·Q†²†´†­žBLùžƒ¾ÍLøre¾ˆ‡¤Þ£žžîÞ¤žsgž3 P@™‚—b@ ž‚ž†`@ žƒ `žÚ @P `Ÿl¾¦†„¾£Þ‚ž}žËž.r†yž  ¾…q†v¾‚¶tŸy ¾½’j 6Á €šfÿ’dŸv ¾–¾sÞ`Ÿz ¾¾fÞZÞYŸy¾aŽ[ľÁ⟄½Ñ C½ÓÄ ‚I†O‚H0Ÿzr(ÿ¦E `žÿ¾ ‡<Þ;žC½Ñ T½ÓK@½ÔÄ½Ñ M½Óƒ/½ÔÄ ¾½¢·‚·ûùû6I6;û6D6Âúž†ù666´ø"û"ù¾¨Ÿd ¾¡ü¢œ"ý¢˜ý96=ý96½"ý¾™Ÿq ¾’¢"ùø¢‰ùI6=ùI6½"ù¾ŠŸq†‚p† 0¦|Ÿ| ¢y0 `Ÿ{ ¾6Ÿ} †ö†÷†õªû¦ù `½Ö ž’ÞôÇóÅä½ÜÁèÞïÇîÞçÂæLžƒ ž‰žo ,žž…½ÖÆÛÆÜ ,Åªß¦Ý `‚ÕAņæ†Ðî Vž †ÍIP¾÷Þ΃͆àÞ˃ʅè ÿÂÃQÁ¾Ú°‰èJ ‘è@žˆ ¾Ÿ} ¾ Ÿ}…èIPNÆÃ‚ÁAKèÁ¾¡K †»¾Õ‚·F ¾ý¾ºIƱ¾Í ¾÷¾´Â²¾È ¾ò¾¯Â¨N ¾Â‚¥†‘çަ¾¼ž| ¾ Ÿ} ‚… ÁKŸzW nžž# †hÆ¿ÂcQH¾UÂbQÃŽaA¾Í¶ŸsÂnQB¾žz¾žx ¾¶Ÿ} @y¾§¾dÞK@ÿ¾¢¾_ÞFŸsèÕÞ?ž“ ¾™¾V‚;Â8ÁHÿ¾gÂK¾eI ¾˜Â3QÄ ÿ¾IIZ¾’ÄÂ@¾ZI ¾èAž=ž; ’7 6Á €š3ÿ’1Ÿw ‚BÆK ¾. ÿIJÿQ¶ÆŸs ½Ñ %½Ó‚" ÿ½ÔŸxmG2G2G1G2G1G4--E7G1--G0E3----Ðõªû¦ù `½Ö ž’ÞôÇóÅä½ÜÁèÞïÇîÞçÂæLžƒ ž‰žo ,žž…½ÖÆÛÆÜ ,Åªß¦Ý `‚ÕAņæ†Ðî Vž †ÍIP¾÷Þ΃͆àÞ˃ʅè ÿÂÃQÁ¾Ú°‰èJ ‘è@žˆ ¾Ÿ} ¾ Ÿ}…èIPNÆÃ‚ÁAKèÁ¾¡K †»¾Õ‚·F ¾ý¾ºIƱ¾Í ¾÷¾´Â²¾È ¾ò¾¯Â¨N ¾Â‚¥†‘çަ¾¼ž| ¾ Ÿ} ‚… ÁKŸzW nžž# †hÆ¿ÂcQH¾UÂbQÃŽaA¾Í¶ŸsÂnQB¾žz¾žx ¾¶Ÿ} @y¾§¾dÞK@ÿ¾¢¾_ÞFŸsèÕÞ?ž“ ¾™¾V‚;Â8ÁHÿ¾gÂK¾eI ¾˜Â3QÄ ÿ¾IIZ¾’ÄÂ@¾ZI ¾èAž=ž; ’7 6Á €š3ÿ’1Ÿw ‚BÆK ¾. ÿIJÿQ¶ÆŸs ½ BUMP ADDRESS 0ACE 9E34 0A83 1702 JMP TEST3A 0ACF 0000 1703 NOP 0AD0 0000 1704  NOP 0AD1 0000 1705 NOP 1PAGE 0059 MACRO (F510) dataCASE 5 DISTRIBUTED I/O SYSTEM TEST 93920-16C30/ 0 1984/02/17 09:30:32.75 DIOLP TEST 3 0AD2 0000 1706 NOP 0AD3 0000 1707 NOP 0AD4 0000  1708 NOP 1709 * 0006 1710 LPOOL 0AD5 09D9 LINES 0AD6 0B1C LPOUT 0AD7 09JWORDBF CRDIN MODEMB JMODEM DIOCRT DIOCRD JDIOHSP DIOHSR DIOLP JDIOTTY O0SEGMENTBLANK o±KDEBUG4 im MACRO (F510) @i€Ÿ€C1iƒŸ€iÀ ¿€ ¿€¿€ ¿€ ¿€¿€ ¿€¿€      À ¿€ ¿€¿€ ¿€ ¿€¿€ ¿€ ¿€ 0  Ÿ€tg i žÁž øà¿€eE" ÿÿ‡Æ†t–Ěà YÀ†p –m¶l†b‚i–ºš¹) †f‚d–¶šµ ¶a†` –]1¶\†[ –X!¶W†Nžƒ‡£ †Q¢I‚J„„ ‚I¶D„€‚H¶A†Ü‡š‡š‡š‡š‡š ‡š‡š‡š‡š‡š‡š‡š‡š‡š‡š‚6¶. ‡—‡—‡—‡—ž™¿  ñÿ1Lyœ°Û!^Flzœ  7‘ ƒf†T ÿ »  žžx† ø)ÿC . ½¦ .q  ¶†ƒ‡Ž¢Œ žž‡C ÿ+½ €œ€š žX½ £ö"ÿ‡ô¢ô‚ô‡ô „€+ßð ž|‚ì‡î ãì„@ßêãé„@ßçÿ—æ ãä„@ßâãá„@ß߀‡Ü q‡Û ÿÿ·×‡Ö—ÔãÒ„@ßÐßÍž« £Ï„ƒÉ†Â‚㯠ÿ„‚ „ƒ ‚Ä„…ƒÃ·Ã„€ß·žŠ€ ø„…£¼ "ž‚¯‡±žŸÿ‡¨Þ§‡¦£®€ h „£¯"žƒ&mž ƒ£ÿÿ žA  Á …£™€ºÞuŸt ‚˜‡ „€+߉ž|€‡†žd ïþ>     þÀ£p"£vƒ°·w„€ÿ„‚¬ ÿ „‚ „ƒ‚§„…ü‡¥¢¢‡` „€ +ß\ž|…£œ"ž£Zÿ„€‚ ÿ „‚  €€y†‰ ÿ—Kº†žžŠü‡…žhëŸ ß|ž_‚¾‡¾ †s£8ÿ„‚q ÿ„‚…£o"ž‚i‡)ã(€@yºb žß¨žž‘ƒ¥ 6C‚Yžƒ‚V  ÿÿ†Rž^¢Pã€@y £ü „…£L"žŸŽ Á …£ˆ€ºÞuŸtþD¤ £ö"ý‡ô£z‚ó ÿ„‚ƒð·ð„€ º„ „ƒ‚ë„…ƒê øU‚ã)F.  !§æ¢ã‡æãå€@—à„€+ßàßÜ žw‚Ø ÿ£V„€…£Ø"žÞåžT ý†â¢Ë§Î(á¦ß‚Ê—ÇãÉ„@ßÇ  ãÅ„@ßâÀ€q´—»ã½„@ß» ÞÌž‡ @q  —±ã³„@ž–€‚q´€ —ªã¬„@ߪ޻žžn€q´‚—Ÿ ã¡„@ߟްžZžc£‚• ÿ„‚ ‚„…½„…£’"žÞŸžqŸ  CÂ6ïŠå   Á …£…€ºÞuŸt £`"‚ì‡f¢ë „€+ßaž| †t£q‚ä„…‚ã ÿ„‚ü„ƒO·O „€…£Ú"ž£a‚Ó ÿ„‚ƒÓ·C „€ÿ„…£Î"ž£S€‚ ‡?ã> €@y Àa¹„£À"ž£E€ A€ ´„‚² ÿ„‚ƒ · „€ …£&"žŸ« Á …Þy Ÿx£)ÿ„£—"ž£#€‚ ‡ã €@ y.q sD 1ºÞžk‚ £„žQþüëé ¤ªª0¯E ŠABCDEFGHIJKLMNOPQRST UVWXYZ 012345678¹‡?!#$%& +-=@*"':;.,<>()/ÜÛÝÞßW/@Šï±i g žž„‡× ‡Öž¦‡ÓÆÑ½‡Ò–ÒšÑ YÀ‡Ï —˷ˇ˃ǖʚÉ) ‡ÅƒÂ–ƚŠ·À‡¿ —»1·»‡º —¶!·¶‡¹ƒ²–¸‡¯£µƒ¶„„ƒµ ·®„€ƒ¬·²‡±‡±‡±‡±‡±‡±‡± ‡±‡±ƒ±·Ÿ†ûƒ—‡•¢ ž ½C ÿ+½ €œ€Â‰Q½žY T r r ä r dÿÿ ßdÿÿ dÿÿ × ÖÀdÿÿdÿÿdÿÿ ¸ ý  + N = _ g ·dÿÿ Ù†äÅ¢é3A܆à †á†â¢ä q „€+‚Û ^žÈqÞ×¶Ö„€ ‚Ô ^ž‚ ž †ÎÞÇžo+ q „€Ù†¿‚ÅÅ+ q „€‚» †¹†º Ž» ¢¶1Á ÿ¢© „‚² ÿ„‚ „ƒ‚†„……¢ª" žž ¼ A½…¢“€ ºÞuŸtÞžžˆ¢•ž5q „€  ž<ƒOŸøþ  O‚z6j¢wÜ †o®3Ãņk­¢f„ƒ›„‚ž†‚j B°ž¯„‚@„…¢e"…žÞX žž„ƒŠ¢Q„‚žm‚WAŸYƒ„½žå ñ ðdÿÿ ¢DƒØ„‚ê„‚$„…¢I"…ž ¢Ï 1q „€ ‘q „†¢0ƒÆ„‚ ò„¢7"…ž¢½ 2q „€ ’ q „†¢ƒ´„‚ò„¢%"ž¢¬ 4q „€ ”q „†¢ ƒ£„‚ò „¢"ž¢› 8q „€ ˜q  „†£”0 ƒ’„‚ò„¢"ž£Œ‚ø„‚ ì„¢‰…žŸ† Ü é è Ö  Oćá¢á q „€+í‡Û Žq „€+ ‡ÕƒÔ ^ž‘qßÐ ·Ï„€ƒÍ ^ž ‡É+߯žq q „€žq „€+ q „€ƒ¹ Å q +„€+ Ž­ ÿ £A„‚§ ÿ„‚ „ƒƒ¥„…¢9" …žƒ ^žƒ¢˜ß–ž„¢•ß“ž7Ÿ- Žq „€+ q „€+ž4 Ù  Ø Þ ß »» ¹ VFU LINE SLEW TEST  Ñ1 LINE SKIP ‘ å㌊ ! "#$%&'()*+,-./0123456789 :;<=>?@ABCDEFGHIJKLMNOPQ RSTUVWXYZ ÛÜÝÞ !"#$%&'()*+,-Š   r €gg ž×ž°ž‰ üúèð ‡ò‡ñ–ñšðYÀ‡î —ê·ê †lƒæ–èšç)‡äƒá–äšã ·ß‡Þ —Ú1·Ú‡Ù —Õ!·Õ†X ÿ  ž©‡Ì‡Ë–ËšÊYÀ‡È —Ä ·Ä†EƒÀ–šÁ)‡¾ƒ»–¾š½  ·¹‡¸ —´1·´‡³ —¯!·¯†3 ÿ žƒ‡¦ ‡¥¢+ƒ¨„„ƒ§¶$ „€¢$ƒ¤¶!„€ƒŸ„„ƒ ¶‡ž‡ž ‡ž‡žƒž¶‡œƒ•¶†²†ï†þƒ”¶ ‡“ÿ† ž•¿dÿÿ dÿÿdÿÿdÿÿdÿÿdÿÿ ° È ù dÿÿ . †ƒj‡Ž¢Œ ž ž‡C ÿ+½ €œ€² žp Edÿÿ ¢\"ÿ‡ò¢ò‚ò‡ò „€+ßî ž|‚ê‡ì ãê„@ßèãç„@ßåÿãã „@ßáãà„@ßÞ€‡Û q‡Ù  ÿÿ·Õ‡ÔãÒ„@ßÐßÍž¬£Î „‚Æ ÿ„‚ „ƒ‚Æ„…ß½žŠ€ ø„…¢¿"ž‚µ‡·ž§ÿã´„@ ߲㱄@£±€ h„¢¯"žƒA ž&ߪž«ÿ‡žž+ƒ¡ÿÿ žA  A …£–€ºÞtŸs ‚‹‡‹ „€+߇ž|€‡„žcdÿÿLþ>dÿÿdÿÿdÿÿ ‡ … ‰ ‡µ‡{‚y‡³ƒ³‡³ ¢³"£²ÿ„‚° ÿ„‚ „ƒ‚« „…ü‡©¢¦‚¨‡_ „€+ß[ž|… £˜"ž£™ÿ„€‚ ÿ„‚   €€y†ˆ ÿº†žžü‡Šži ˆ Š ƒ ‹ † H (dÿÿ þüß|ž[‚Ô‡Ô †n£sÿ„‚q  ÿ„‚…£g"ž‚i‡$ã#€@y º]žß¾žž‘ƒ» 6C‚Tžƒ ‚Q ÿÿ†Mž^¢Kã €@y £L ú„…£D"žƒ¤ ‡¢ Ÿ¡ƒ< £=‡<§9ž  ƒ5Ð  ÿ¾ B ß,£0€G‚p ý œ€ ‡"žY…ÞhŸgþdDÿÿ ‰ ! ' ' ¨L€g ž¦ž‚ðÀ‡´–´š³YÀ‡±  —­·­†rƒ©–«–ªš©)‡¦ƒ£–¦ 𥠷¡‡  —œ1·œ‡› ——! ·—†]ž‚ ‡‘¢Yƒ”„„ƒ“¶T„€ƒ‘ ¶Q†°†²ƒ¶L†£†ÀžŽdÿÿ dÿÿdÿÿdÿÿdÿÿdÿÿ ¢Ö°‡Õ „€+ßÑ ž|¢2`„‚Ë ÿ„‚ „ƒ‚Ç„… ‡Å<ƒÂ¹¢["…¢½" ž‚¶‡º°‡´¢¸ã¶€@–¶¸€ž• +߯ߪžvžP ‡§A ¢ €»ƒŸBÞrŸqž@†¡ Žš ¦Ÿ ) ž…+ öAžy†–  Š”¢‘ ¢‚Ž € ž)-dÿÿø à dÿÿ‡ÿg‡g €@ ‚B " €@  ‚B" €@  ‚B"   €@ ‚B " €@ ‚B" gž»ž“g ž„Þ †ž“ÞŒ †‰žµ Ðô‡ÒÇÒ †z†z ½‡Î–ΚÍYÀ‡Ë —Ƿdžl ƒÃ–ÅšÄ)‡Áƒ¾–ÁšÀ ·¼‡»  —·1··‡¶ —²!·²†Vž†‡«  †T†T ‡¨¢Nƒ«„„ƒª¶K„€ƒ¨¶H ‡¦†Ö‡¥‡¥‡¥‡¥‡¥‡¥‡¥‡¥‡¥ ‡¥‡¥‡¥‡¥‡¥‡¥‡¥ƒ¥¶3‡£‡£‡£‡£‡£‚-dŸ¡¿dÿÿ dÿÿdÿÿdÿÿdÿÿ é0Kcq€“® $1Udo€dÿÿ î¦M&q ƒ\‡¢  žž‡C ÿ+½ €œ€‚„1½žoÅdÿÿ  ßï¢K"Ù‡ìè‡ë ‡ê‡ê ¢ê Œq„€ž…¢å q „€+ƒÞ ^žÌqßÚ·Ù„€ƒ× ^ž‚ ž  ‡ÑßÍžo+ q„€Ù‡Æ q  „€ƒÃ ‡Á‡Á ŽÀ  þ£¼ „‚¹ ÿ„‚ „ƒ‚‰„…ƒ ·²„€ …¢°"žž•í † ƒ©C‚ žƒ‚š6A½…£›€º ÞmŸlß‘žž‡ž+q „€ ž8 ‚²σMž> Ø Ù Ü ÞZ ¿¢£"è‡sƒ ‡ £t ƒŸ„‚ƒž·q„€°ž°„‚?„…… ¢i"žß`žž‚ƒžj‚†ÁŸŒ  †‚㊜@eËÍÌdÿÿ õ˜  Þt¢u"œ‡Î¢Î „€ +ßÉž|‡É£A‚È„…‚ ÿ„‚ü „ƒe·8„€…¢½"ž£1‚¶ ÿ „‚ƒ¶·,„€ÿ„…¢±"ž£#€‚  ‡¬ã«€@y tÁžM¹„¢¢" ž£€A€ ´„‚ ÿ „‚‚0·„€…¢‘"ž‚(ÁŸ. †$Ÿ-õdÿÿödDÿÿ¥dÿÿdÿÿ  …Þ|Ÿ{£žÿ„¢œ"ž £˜€‚ ‡oãn€@ y.q óD  1ºß`žkƒ^ £†„žE¢¢ JŒ'™ŒŠ !"#$%&'()*+ ,-./0123456789:;.=>?@ABC D1 EFGHIJKLMNOPQRSTUVWXYZ  ÛÜÝÞ !"#$%&'()*+,-ŠZ¾g ž„ß¶ßµŸµß²ß±Ÿ²¢²"â £°„‚¯ ÿ„‚‚¬„…ƒ«·«„€¢ª …"ž⣠„‚¤ ÿ„‚…¢ž "ž=‚𣒄… ¿—¿–… ¢•"ž¿“ ¾žœ@Šídÿÿ ¨IÁHH ¾ A …ÞvŸu¢g"â£e„ ‚­ ÿ„‚‚a„…ƒ`·`„€…¢^" ž‚\ ÿ£S„‚â„…¢S"ž =£H‚N„…£Eþ„‚C ÿ „‚…¢ˆ"ž ¾¿ƒž™C  ŒŠ WORD SET READY (INP UT MODE)ŒŠ WORD SET READ Y(OUTPUT MODE)ŠTURN OFF CRT - THEN BACK ON  ††‚} ÿ ‚Ÿx †|…Þzž}ŸyÿÿQRSTUVWXYZ  ÛÜÝÞ !"#$%&'()*+,-ŠZ¾g ž„ß¶ßµŸµß²ß±Ÿ²¢²"â £°„‚¯ ÿ„‚‚¬„…ƒ«·«„€¢ª …"ž⣠„‚¤ ÿ„‚…¢ž "ž=‚𣒄… ¿—¿–… ¢•"ž¿“ ¾žœ@Šídÿÿ ¨IÁHH ¾ A …ÞvŸu¢g" * FORM PUNCH INT. VECTOR ADDR. * COPY WORD,A AND =:200,A XOR =:200,A SHIFT A,RO,3  COPY A,SAVE COPY WORD,A AND =:100,A XOR =:100,A SHIFT A,RO,1 OR SAVE,A  COPY A,SAVE COPY =:10,A AND WORD,A SHIFT A,LO,4 OR SAVE,A COPY A,SAVE  COPY =7,A AND WORD,A SHIFT A,LO,3 OR SAVE,A COPY A,HSPIL STORE PUNCH INT. ADDRESS  COPY =:FF,A SELP A,4 HLT * 'P' TO READER DEMAND ENTRY * ADDRESS OR PRESS RUN TO GO. JMP HSRS2A * * DEFAULT ENTRY JUMPS HERE * HSRST2 EQU $ COPY A,ASAVE COPY =0,A COPY A,WORD CLEAR DEMAND WORD CELL HSRS2A EQU $ COPY HSPIL,X PUNCH INT. ADDRESS COPY JST,A COPY A,EOBJST(X) STORE JST AT INT+4 (EOB) COPY AOB,A OR HSPDA1,A FORM PUNCH DEV ADDR COPY  A,AIOCMD(X) STORE AUTO I/O CMD AT INT+0 COPY HSRIL,X FETCH INT. ADDRESS COPY AIB,A FETCH AIB COMMAND  OR HSRDA1,A FORM READER DEV ADDR COPY A,AIOCMD(X) STORE COMMAND IN INT. BLOCK COPY JST,A COPY A,EOBJST(X) COPY OTX,A OR HSRDA1,A FORM READER DEV ADDR OR =1,A SET CONTROL BIT COPY A,HSR20A STORE OTX COPY A,HSR2A COPY A,HSR2C COPY A,HSR2D COPY INA,A OR HSRDA1,A FORM READER DEV ADDR OR =1,A COPY A,HSR2G COPY OTX,A FETCH OTX COMMAND OR HSPDA1,A FORM PUNCH DEV ADDR OR =1,A COPY A,HSR1A1 STORE OTX COPY A,HSR1B COPY A,HSR1D  COPY INA,A FETCH INA COMMAND OR HSPDA1,A FORM PUNCH DEV ADDR OR =1,A COPY A,HSR1G  COPY =-1,A COPY A,LOOPER JMP HSRST3 LPOOL * HSRST3 EQU $ COPY ASAVE,A AND =7,A ISOLATE VALUE ONLY COPY A,OPTNS SAVE TEST OPTIONS BITS COPY HSRTAD,X CSK A,=4 TEST FOR LEGAL LIMIT JMP $+2 JMP HSRST4+1 JUMP IF > LIMIT JEQ A,HSRST6 JUMP IF SENSE REG = 0 HSRST5 SUB =1,A DECREMENT A ADD =1,X BUMP TABLE ADDR JNE A,HSRST5 HSRST6 COPY 0(X),X FETCH TEST ADDRESS JMP 0(X) JUMP TO SELECTED TEST HSRST4 EQU $ JF SS,HSRST3 JUMP IF SENSE SWITCH OFF 2 HLT END OF TEST HALT JMP HSRST3 HSRTAD WORD HSRTBL LPOOL TITL DIOHSP/DIOHSR PUNCH TEST (TEST 1) * * TEST 1 - PUNCH TEST * THIS TEST PUNCHES THE WORST CASE WORD PATTERN * OF: 00,FF,01,FE,02,FD,ETC. TO VERIFY THAT * THE PUNCH TEST PERFORMS AS EXPECTED IT IS * SUGGESTED THAT THE READER TEST BE USED TO * READ AND COMPARE THE PUNCHED TAPE - OR VISUALLY * COMPARE IT WITH A KNOWN GOOD TAPE BY PLACING * ONE OVER THE OTHER AND CHECKING FOR THE HOLES * TO LINE UP. TWO BLOCKS OF IDENTICAL WORD * WILL BE PUNCHED. THIS TEST WILL RUN AS LONG * AS THE SENSE REGISTER VALUE INDICATES TEST 1 * (SENSE VALUE =:0 OR :1) AND THE SENSE SWITCH * IS OFF. THESE TWO SETTINGS MAY BE CHANGED AT * ANY TIME. IF SENSE SWITCH IS SET ON A CODED HALT * OF :XXFF WILL RESULT. IF THE SENSE REGISTER VALUE * IS CHANGED THE TEST SELECTED WILL RUN UNTIL * DESELECTED. * * * LOAD OUTPUT BUFFER WITH :00,:FF,:01,:FF -- * HSR1 EQU $ COPY =:100,X RESET CODE HSR1A1 OUT X,0*8+0 RESET PICO PROCESSOR * * CLEAR OUTPUT BUFFER TO ZEROS * COPY =-1,A COPY A,LOOPCT HSR1AA EQU $ COPY =HSPOUT,X OUTPUT BUFFER ADDRESS COPY =-450,A BUFFER LENGTH COPY A,BFLMT COPY =0,A HSR100 COPY  A,0(X) CLEAR OUTPUT BUFFER ADD =1,X BUMP BUFFER ADDRESS IMS BFLMT BUMP BUFFER SIZE JMP HSR100 JUMP IF BUFFER NOT ALL ZEROS COPY =HSPOUT,A FETCH BUFFER ADDRESS COPY A,BFWORK COPY =0,A COPY BFWORK,Y COPY A,0(Y) SET SOME IMS BFWORK LEADER IN COPY BFWORK,Y COPY A,0(Y) OUTPUT IMS BFWORK BUFFER COPY =-1,A COPY BFWORK,Y COPY A,0(Y) SET CUE CHARACTER IMS BFWORK IN COPY BFWORK,Y COPY A,0(Y) OUTPUT IMS BFWORK BUFFER COPY =-:80,A COPY A,BFLMT COPY =0,A HSR1A COPY A,X SHIFT A,LO,8 COPY A,TEMPSV SAVE A COPY X,A XOR =:FF,A AND =:FF,A OR TEMPSV,A COPY A,TEMPSV COPY BFWORK,Y COPY A,0(Y) STORE WORD IN BUFFER IMS BFWORK BUMP ADDRESS NOP IMS BFLMT BUMP BUFFER LIMIT JMP HSR1E  JUMP IF NOT FINISHED COPY HSPIL,X PUNCH INTERRUPT VECTOR ADDRESS COPY =-256,A FETCH BUFFER LENGTH IN BYTES COPY A,AIOCNT(X) STORE IN INT. BLOCK COPY =HSPOUT,A SHIFT A,LO,1 FORM BYTE ADDRESS SUB  =1,A -1 COPY A,AIOADR(X) COPY =1,A COPY A,AIOCHN(X) SET FOR NO WORD CHAINING COPY =HSR1F,A FETCH EOB RETURN ADDRESS COPY A,EOBADR(X) IMS LOOPCT JMP HSR1C COPY AIOCNT(X),A MODIFY AUTO I/O COUNT SUB =8,A BY 8 COPY A,AIOCNT(X) FOR FIRST BLOCK CUE WORD SBIT 8,S ENABLE INTERRUPTS COPY =HSRBR,X HSR1B OUT X,0*8+0 OUTPUT COMMAND WORD JMP $ WAIT FOR INTERRUPT  COPY =HSPOUT,A COPY A,BFWORK JMP HSR1H HSR1C EQU $ COPY =-1,A COPY BFWORK,Y COPY A,0(Y) IMS BFWORK COPY BFWORK,Y COPY A,0(Y) COPY HSPIL,X FETCH PUNCH INT. ADDR. C3 OPY AIOCNT(X),A FETCH AUTO I/O COUNT SUB =152,A COPY A,AIOCNT(X) STORE ADJUSTED COUNT COPY =HSRBR,X HSR1D OUT X,0*8+0 JMP $ COPY ASAVE,A JEQ A,$+2 JMP HSRST4 RETURN TO EXEC IMS LOOPER JMP HSR2 COPY =-1,A FETCH -1 COPY A,LOOPCT JMP HSR1AA HSR1E COPY TEMPSV,A AND =:FF,A XOR =:FF,A ADD =1,A JMP HSR1A HSR1F EQU $ ENT HSR1G IN 0*8+0,A FETCH STATUS AND =:15,A TEST STATUS BITS XOR =1,A EXCLUSIVE OR READY BIT JEQ A,$+2 JUMP IF STATUS OK HSR1G1 HLT SBIT 8,S ENABLE INTERRUPTS COPY HSPIL,X INTERRUPT LOCATION  COPY AIOCNT(X),A GET THE BYTE COUNT SHIFT A,LO,1 TEST IF IT GOES TO :8000 JNE A,HSR1G1 NO, HALT THE PROGRAM IMS HSR1F BUMP RETURN ADDRESS JMP *HSR1F RETURN TO POINT OF INTERRUPT HSR1H EQU  $ COPY A,X PUT BUFFER ADDR IN X COPY =-450,A BUFFER LENGTH COPY A,BFLMT COPY =0,A  CLEAR HSR1HA COPY A,0(X) OUTPUT BUFFER ADD =1,X WITH IMS BFLMT ZEROS JMP HSR1HA COPY =-:80,A FETCH BUFFER LENGTH IN WORDS COPY A,BFLMT SAVE IN BUFFER LIMIT JMP HSR1E LPOOL TITL DIOHSP/DIOHSR READER TEST (TEST 2) * * TEST 2 - READER TEST * THIS TEST READS THE WORST CASE PATTERN PUNCHED * BY TEST 1. A TAPE MAY BE SPLICED * TOGETHER WITH THE OUTPUT OF TEST 1 SO THAT * THIS TEST CAN LOOP CONTINUOUSLY. THE WORD * READ IS COMPARED WITH THE KNOWN VALUES AND * WILL HALT IN A CODED HALT :XX20 IF ANY * MISCOMPARE IS NOTED. AT THE CODED HALT * X WILL CONTAIN THE EXPECTED WORD AND A WILL * CONTAIN THE WORD READ. * IF AN ERRONEOUS STATUS IS FOUND WHEN PROCESSING * AN END OF BLOCK INTERRUPT A CODED HALT :XX21 * WILL RESULT. * HSR2 EQU $ COPY =0,A COPY A,STAERR COPY A,LOOPER COPY =HSRBR,A COPY A,CMWD1 COPY BRAREV,A COPY A,CMWD2 COPY =:100,X RESET CODE HSR20A OUT X,0*8+0 RESET PICO PROCESSOR HSR20B EQU $ COPY HSRIL,X FETCH INT. ADDRESS COPY  =-1,A COPY A,AIOCNT(X) SET AUTO I/O COUNT =-1 COPY =HSRIN,A SHIFT A,LO,1 SUB =1,A COPY A,AIOADR(X) SET BUFFER ADDRESS COPY =1,A COPY A,AIOCHN(X) COPY =HSR2F,A FETCH EOB ROUTINE ADDRESS COPY A,EOBADR(X) COPY =-4,A COPY A,CUECT COPY =HSRIN,X COPY =-260,A COPY  A,BFLMT COPY =0,A HSR200 COPY A,0(X) CLEAR INPUT BUFFER ADD =1,X IMS BFLMT JMP HSR200 SBIT 8,S ENABLE INTERRUPTS HSR2A0 EQU $ COPY CMWD1,X FETCH COMMAND WORD HSR2A OUT X,0*8+0 JMP $ COPY HSRIL,X COPY =-1,A COPY A,AIOCNT(X) COPY AIOADR(X),A SUB =1,A COPY A,AIOADR(X) RESTORE REGISTER ADD =1,A SHIFT A,RO,1 COPY A,X COPY 0(X),A  FETCH INPUT CHAR SHIFT A,RO,8 RIGHT JUSTIFY COPY A,HSR2A1 SAVE INPUT COPY =:FF,A CSK A,4 HSR2A1 TEST FOR CUE CHARACTER NOP JMP $+2 JMP HSR2B JUMP IF EQUAL COPY =-4,A COPY A,CUECT JMP HSR2A0 HSR2A1 WORD 0 LPOOL HSR2B IMS CUECT JMP HSR2A0 COPY =-512,A SET FOR 512 CHAR. COPY A,CHCNTR COPY =0,A COPY A,HSR2A1 SET EXPECTED HSLOOP COPY HSRIL,X COPY =-1,A SET FOR ONE CHAR. COPY A,AIOCNT(X) COPY =HSRIN,A SET BYTE ADDR-1 SHIFT A,LO,1 SUB =1,A COPY A,AIOADR(X) SBIT 8,S ENABLE INTERRUPTS COPY CMWD1,X FETCH COMMAND WORD HSR2C OUT X,0*8+0 JMP $ * * VERIFY EACH BYTE READ * COPY =HSRIN,A FETCH BUFFER ADDR. COPY A,BFWORK  COPY BFWORK,Y COPY 0(Y),A FETCH CHAR WORD SHIFT A,RO,8 CSK A,HSR2A1 CHK EXPECTED NOP JMP HSR2E * * FORM EXPECTED * IMS CHCNTR DONE? JMP HSFRM NO JMP HSR2D2 YES-EXIT IF ZERO HSFRM COPY CHCNTR,A COUNTER ODD? ROTATE A,RO,1 JT OV,HSODD YES COPY HSR2A1,A NO-NOW COMP FORM NEG A,A BACK TO CNTR FORM JMP HSROV HSODD COPY HSR2A1,A YES-NOT COMP YET NEG A,A  SUB =1,A HSROV AND =:FF,A COPY A,HSR2A1 NEW EXPECTED JMP HSLOOP * * ERROR ROUTINE * HSR2E EQU $  COPY HSR2A1,X EXPECTED COPY BFWORK,Y COPY 0(Y),A SHIFT A,RO,8 ACTUAL HLT * * EXCHANGE COMMAND WORDS AND TEST LOOPER * HSR2D2 EQU $ COPY HSRIL,X COPY =-6,A SET FOR L CHAR. COPY A,AIOCNT(X) SBIT 8,S ENABLE INTERRUPTS COPY CMWD1,X HSR2D OUT X,0*8+0 JMP $ COPY LOOPER,A FETCH LOOPER ADD =1,A COPY A,LOOPER CLSN =3,A TEST FOR THREE LOOPS JMP HSRST4 EXIT COPY CMWD1,A EXCHANGE COPY CMWD2,X COMMAND COPY A,CMWD2 WORD COPY X,CMWD1  JMP HSR20B HSR2F ENT COPY STAERR,A STATUS ERROR FLAG SET??? JNE A,HSR2GA JUMP IF YES COPY  =20,A DELAY SUB =1,A AT LEAST 20 JNE A,$-1 MICRO SECONDS HSR2G IN 0*8+0,A READ STATUS  AND =:2,A TEST STATUS BIT JEQ A,$+3 JUMP IF STATUS OK HLT IMS STAERR SET STATUS ERROR FLAG COPY HSRIL,X COPY AIOCNT(X),A FETCH BLOCK COUNT SHIFT A,LO,1 JEQ A,HSR2H JUMP IF COUNT IS ZERO COPY HSR2F,A FETCH INTERRUPT ADDRESS SUB =3,A DECREMENT BY 3 COPY A,X JMP 0(X) GO FINISH BLOCK HSR2GA COPY =0,A COPY A,STAERR CLEAR STATUS ERROR FLAG JMP HSR2D2 HSR2H EQU $ SBIT 8,S ENABLE INTERRUPTS IMS HSR2F BUMP RETURN ADDRESS JMP *HSR2F RETURN *  LPOOL HSRTBL WORD HSR1 WORD HSR1 WORD HSR2 HSRIN RES 260 READER INPUT BUFFER HSPOUT RES 450 PUNCH OUTPUT BUFFER * * * TITL CARD READER TEST FOR DISTRIBUTED I/O (DIOCRD) ROUND * * * CRD INPUTS AND TEST ALL 80 CARD COLS. * * THE WORD READ MUST COMPARE WITH A KNOWN * WORD PATTERN. ALL 80 COLUMNS ARE CHECKED 5 * ANOTHER CARD WILL BE READ IF THE PREVIOUS * CARD READ AND CHECKED GOOD. IF WORD IS * READ THAT IS NOT WHAT IT SHOULD BE A * CODED HALT OF :XXFF WILL RESULT. THE * ACTUAL WORD READ WILL BE SET IN THE 'A' * REGISTER, THE EXPECTED WORD WILL BE IN * THE X REGISTER. PRESSING RUN AFTER THE * CODED HALT WILL CAUSE ANOTHER CARD TO BE * READ. IF AFTER A CARD IS READ THE STATUS * OF THE PICO PROCESSOR INDICATES AN ERROR * CONDITION EXISTS IN THE CARD READER * A CODED HALT OF :XX11 WILL RESULT WITH * THE 'A' REGISTER SET WITH THE ERROR BITS * ON. PRESSING RUN COULD RESULT IN A WORD * ERROR CODED HALT (:XXFF) PRESSING RUN * AGAIN (AFTER THE CARD READER HAS BEEN * RESET) WILL CAUSE ANOTHER CARD TO BE READ * * * * * DISTRIBUTED I/O STATUS BITS * ****** * * BIT # DEFINITION * * 0  UNIT BUSY * 1 UNIT READY (IF NOT AVAIL +5 OK) * 2 ERROR * 3 WORD READY/ACKNOWLEDGE/INDEX * 4 PAPER LOW/TAPE LOW/HOPPER EMPTY * 5 UNDEFINED * ****** * * SET UP DIO PORT VECTOR LOCATIONS * * * INTERRUPT LOCATION BLOCK EQUATES * * * LOC0=AUTO I/O COMMAND (AIOCMD) * LOC1=BYTE COUNT (2'S COMPLEMENT) (AIOCNT) * LOC2=BUFFER ADDRESS (AIOADR) * LOC3=WORD CHAINING WORD(AIOCHN) * LSB=0 WORD CHAINING, =1 NO WORD CHAINING * HIGH SPEED DISTRIBUTOR ONLY. * * LOC4=JST TO EOB ROUTINE (EOBJST) * LOC5=POINTER TO EOB ROUTINE (EOBADR) * * LOC6=NOT USED * LOC7=NOT USED * DIOCRD EQU $ JMP CRDST2 DEFAULT ENTRY JMP CRDST1 DEMAND ENTRY CRDDA WORD :F0 CRDIL WORD DIO0 * * * DEMAND ENTRY JUMPS HERE * CRDST1 EQU $ * * FORM DEVICE ADDRESS * IN 4,A READ WORD REGISTER COPY A,WORD SAVE WORD REGISTER VALUE AND =:C00,A ISOLATE ADDRESS BITS XOR =:C00,A SHIFT A,RO,6 OR =:C0,A FORM DEVICE ADDRESS COPY A,SAVE SAVE RESULT COPY  =7,A FETCH MASK AND WORD,A ISOLATE PORT # BITS SHIFT A,LO,1 OR SAVE,A FORM DEVICE ADDRESS COPY A,CRDDA STORE CRD DEVICE ADDRESS * * FORM INTERRUPT VECTOR ADDRESS * COPY WORD,A FETCH WORD REGISTER BITS AND =:200,A ISOLATE J2PIN AND =:200,A ISOLATE J2 PIN 6 BIT XOR =:200,A SHIFT A,RO,3 COPY A,SAVE COPY WORD,A AND =:100,A ISOLATE J2 PIN 5 BIT XOR =:100,A SHIFT A,RO,1 OR SAVE,A COPY A,SAVE COPY =:10,A FETCH MASK AND WORD,A TEST FOR J2 PIN 1 BIT SHIFT A,LO,4 OR SAVE,A COPY A,SAVE COPY =7,A AND WORD,A ISOLATE PORT # BITS SHIFT A,LO,3 OR SAVE,A FORM INT. VECTOR ADDRESS COPY A,CRDIL STORE INT. VECTOR ADDRESS  JMP CRDS2A * * DEFAULT ENTRY JUMPS HERE * CRDST2 EQU $ COPY =0,A COPY A,WORD CLEAR DEMAND WORD CELL CRDS2A EQU $ COPY CRDIL,X FETCH INT. ADDRESS COPY JST,A COPY A,EOBJST(X) STORE JST AT INT+4 (EOB) COPY AIB,A OR CRDDA,A PUT DEV ADDR IN AOB COMMAND COPY A,AIOCMD(X) STORE AUTO I/O CMD6  AT INT+0 COPY OTX,A OR CRDDA,A FORM OTX CONTROL COMMAND OR =1,A SET CONTROL BIT COPY A,CRD1A1 COPY A,CRD1B STORE OTX COPY INA,A OR CRDDA,A OR =1,A COPY A,CRD1A STORE INA COPY A,CRD1E STORE INA JMP CRDST3 LPOOL CRDST3 EQU $ TITL DIOCRD TEST *********************** * BEGIN TEST ********************** ************************* * * READ CARD DECK (INT. AUTO I/O MODE) * CRD1 EQU $ COPY =CRDIN,X COPY =-80,A COPY A,BFLMT COPY =0,A CRD100 COPY A,0(X) ADD =1,X IMS BFLMT JMP CRD100 COPY CRDIL,X COPY =-160,A FETCH BYTE COUNT  COPY A,AIOCNT(X) STORE IN INT. BLOCK COPY =CRDIN,A SHIFT A,LO,1 SUB =1,A COPY A,AIOADR(X) COPY =1,A COPY A,AIOCHN(X) COPY =CRD1D,A END OF BLOCK ROUTINE COPY A,EOBADR(X) CRD1A IN 0*8+0,A READ STATUS COPY A,STATUS SAVE STATUS AND =2,A ISOLATE READY BIT JEQ A,CRD1A  JUMP IF NOT READY COPY STATUS,A FETCH STATUS AND =:10,A TEST FOR HOPPER EMPTY JNE A,CRD1A JUMP IF HOPPER EMPTY COPY =:100,X FETCH RESET CODE CRD1A1 OUT X,0*8+0 ISSUE RESET SBIT 8,S ENABLE INTERRUPTS COPY =:A10,X FETCH COMMAND WORD CRD1B OUT X,0*8+0 JMP $ COPY =CRDIN,A COPY A,BFWORK COPY =-80,A COPY A,BFLMT COPY =WORDBF,X CRD1C COPY BFWORK,Y COPY 0(Y),A FETCH INPUT WORD AND =:FFF,A ISOLATE LS 12 BITS CSK A,0(X) COMPARE WORD NOP JMP CRD1F JUMP IF NOT EQUAL ADD =1,X BUMP WORD BUFFER ADDRESS IMS BFWORK BUMP INPUT BUFFER ADDRESS IMS BFLMT JMP CRD1C JMP CRD1 CRD1D ENT END OF BLOCK ROUTINE CRD1E IN 0*8+0,A FETCH STATUS  COPY A,STATUS SAVE STATUS AND =:15,A ISOLATE ERROR BITS JEQ A,$+2 CRD1E2 HLT COPY CRDIL,X INTERRUPT LOCATION COPY AIOCNT(X),A GET THE BYTE COUNT SHIFT A,LO,1 TEST IF IT GOES TO :8000  JNE A,CRD1E2 NO, HALT PROGRAM COPY STATUS,A FETCH STATUS AND =2,A TEST READY BIT JEQ A,CRD1E1 JUMP IF NOT READY IMS CRD1D JMP *CRD1D CRD1E1 JMP CRD1 * CRD1F EQU $ COPY A,CRD1G SAVE ACTUAL WORD COPY X,A SUB =WORDBF,A COMPUTE CARD COLUMN COPY X,CRD1H SAVE BUFFER ADDRESS  ADD =1,A CONVERT COPY =0,X FROM CRD1F1 EQU $ CSK A,=10 HEX JMP CRD1F2 VALUE NOP TO ADD =:10,X DECIMAL SUB =10,A VALUE JEQ A,CRD1F2 JMP  CRD1F1 CRD1F2 EQU $ COPY A,CRD1F3 COPY X,A ADD CRD1F3,A COPY CRD1G,X FETCH ACTUAL WORD (BAD) HLT * A= CARD COLUMN, X=BAD WORD COPY CRD1H,X COPY CRD1G,A COPY  0(X),X FETCH EXPECTED WORD HLT * A=ACTUAL WORD, X= EXPECTED JMP CRD1 LPOOL 7 CRD1G WORD 0 CRD1H WORD 0 CRD1F3 WORD 0 CRDIN RES 90 WORDBF EQU $ WORD 0,:100,:80,:40,:20,:10,8,4,2,1  WORD :82,:42,:22,:12,:A,6,:200,:300,:280 WORD :240,:220,:210,:208,:204,:202,:201 WORD :282,:242,:222,:212,:20A,:206,:400 WORD :500,:480,:440,:420,:410,:408,:404 WORD :402,:401,:482,:442,:422,:412,:40A WORD  :406,:800,:900,:880,:840,:820,:810 WORD :808,:804,:802,:801,:882,:842,:822 WORD :812,:80A,:806,0,:100,:80,:40,:20 WORD :10,8,4,2,1,:82,:42,:22,:12,:A,6 LPOOL TITL CRT TEST (DIOCRT) ROUND * * TESTS: * *  TEST 1 - ROTATING PATTERN TO DISPLAY * TEST 2 - ALIGNMENT PATTERN TO DISPLAY * TEST 3 - CRT KEYBOARD TEST * * TEST SELECTION: * A REG DESCRIPTION * * :0 RUN TEST 1,2 * :1 RUN TEST 1 * :2  RUN TEST 2 * :3 RUN TEST 3 * * * * * SENSE SWITCH * * ON HALT AT END OF TEST(S) *  OFF RUN CONTINUOSLY * TITL DIOCRT EQUATES * CRTRST EQU :100 CRTMOD EQU :400 CRTASC EQU :1000 CRTCHD EQU :800 * DIOCRT EQU $ JMP CRTST2 JMP CRTST1 MODEM EQU $ JMP MODEMA MODEM DEFAULT ENTRY IMS MODSFG SET MODEM STATUS FLAG COPY =0,A COPY A,MODFLG CLEAR FLAG JMP CRTS1A MODEMA EQU $ IMS MODSFG SET MODEM STATUS FLAG COPY =0,A COPY A,MODFLG CLEAR FLAG JMP  CRTS2B LPOOL * * WORD AREA * CHLINE EQU 80 CRTIL WORD DIO2 CRTDA WORD :F4 MODFLG WORD 0 MODSFG WORD 0 * * * * DEMAND ENTRY JUMPS HERE * CRTST1 EQU $ COPY A,ASAVE COPY Q,CONCRT RUN CONTINUOUSLY? COPY =0,A CLEAR COPY A,MODFLG MODEM FLAG COPY A,MODSFG CLEAR MODEM STATUS FLAG * * FORM DEVICE ADDRESS * CRTS1A EQU $ JST *0 BKPT. USER INPUTS DEV. ADDR. COPY A,WORD SAVE WORD REGISTER VALUE  AND =:C00,A ISOLATE DEVICE ADDR BITS XOR =:C00,A SHIFT A,RO,6 OR =:C0,A FORM DEVICE ADDRESS COPY A,SAVE SAVE RESULT COPY =7,A FETCH MASK AND WORD,A ISOLATE PORT # BITS  SHIFT A,LO,1 OR SAVE,A FORM DEVICE ADDRESS COPY A,CRTDA STORE CRT DEVICE ADDRESS * * FORM INTERRUPT VECTOR ADDRESS * COPY WORD,A FETCH WORD REGISTER BITS AND =:200,A ISOLATE J2 PIN 6 BIT XOR  =:200,A SHIFT A,RO,3 COPY A,SAVE COPY WORD,A AND =:100,A ISOLATE J2 PIN 5 BIT XOR =:100,A SHIFT A,RO,1 OR SAVE,A COPY A,SAVE COPY =:10,A FETCH MASK AND WORD,A TEST FOR J2 PIN 1 BIT SHIFT A,LO,4 OR SAVE,A COPY A,SAVE COPY =7,A AND WORD,A ISOLATE PORT # BITS SHIFT A,LO,3 OR SAVE,A FORM INT. VECTOR ADDRESS COPY A,CRTIL STORE INT. VECTOR ADDRESS JMP CRTS2A * * DEFAULT ENTRY JUMPS HERE * CRTST2 EQU $ COPY A,ASAVE COPY =0,A COPY A,MODFLG CLEAR MODEM FLAG COPY A,MODSFG CLEAR MODEM STATUS FLAG CRTS2B EQU $ COPY =0,A 8  COPY A,WORD CLEAR DEMAND WORD CELL CRTS2A EQU $ COPY CRTIL,X FETCH INT. ADDRESS COPY JST,A  COPY A,EOBJST(X) STORE JST AT INT+4 (EOB) COPY AOB,A OR CRTDA,A PUT DEV ADDR IN AOB COMMAND COPY A,AIOCMD(X) STORE AUTO I/O CMD AT INT+0 COPY OTX,A OR CRTDA,A OR =1,A SET CONTROL BIT COPY A,CRT1E STORE OTX COPY A,CRT10 STORE OTX COPY A,CRT20 STORE OTX COPY A,CRT2C STORE OTX COPY A,CRT3A1 STORE OTX COPY A,CRT301 STORE OTX COPY A,CRT3B STORE OTX COPY A,CRT3B0 STORE OTX COPY A,CRT3D STORE OTX COPY A,CRT3H STORE OTX COPY A,MOD10 STORE OTX COPY A,MOD11 STORE OTX COPY A,MOD12 STORE OTX COPY A,MOD14 STORE OTX COPY A,MOD20 STORE OTX  COPY A,MOD21 STORE OTX COPY A,MOD22 STORE OTX COPY A,MOD24 STORE OTX COPY INA,A OR CRTDA,A OR =1,A COPY A,CRT1G STORE INA COPY A,CRT3F STORE INA COPY A,MOD1A1 STORE INA COPY A,MOD13 STORE INA COPY A,MOD23 STORE INA COPY MODFLG,A TEST FOR MODEM ENTRY JEQ A,CRTST3 JMP MOD1 LPOOL CRTST3 EQU $ COPY ASAVE,A INPUT SENSE REGISTER BITS AND =7,A ISOLATE VALUE ONLY COPY A,OPTNS SAVE TEST OPTIONS BITS COPY CRTAD,X CSK A,=3 TEST FOR LIMIT JMP $+2 JMP CRTST4+1 JUMP IF > LIMIT JEQ A,CRTST6 JUMP IF SENSE REG =0 CRTST5 SUB =1,A DECREMENT A ADD =1,X BUMP TABLE ADDR JNE A,CRTST5 CRTST6 COPY 0(X),X FETCH TEST ADDRESS  JMP 0(X) JUMP TO SELECTED TEST CRTST4 EQU $ COPY CONCRT,A JEQ A,CRTST3 RUN CONTINUOUSLY? JST *0 END OF TEST HALT JMP CRTST3 CRTAD WORD CRTTBL CONCRT WORD 0000 LPOOL  TITL DIOCRT ROTATING PATTERN (TEST 1) ****************************************** * TEST 1 * AUTO OUT ROTATING TEST ****************************************** CRT100 ENT IMS SUBFLG SET SUBROUTINE FLAG CRT1 EQU $ COPY  =:100,X FETCH RESET CODE CRT10 OUT X,0*8+0 ISSUE RESET COPY =-39,A COPY A,CPL COPY =-24,A  LINE/COUNT COPY A,LINES COPY =SPACE,A COPY A,FIRST SAVE COPY A,CHARSV COPY =CRTOUT,X FETCH OUTPUT BUFFER ADDRESS COPY =:8C,A SHIFT A,LO,8 COPY A,0(X) JMP CRT1A CRT1Z EQU  $ COPY =CRTOUT,X FETCH BUFFER ADDRESS COPY =CRET,A SHIFT A,LO,8 LEFT JUSTIFY ADD =LF,A ADD LINE FEED COPY A,0(X) STORE IN BUFFER CRT1A ADD =1,X BUMP ADDRESS COPY CHARSV,A FETCH CHARACTER CLSN =:5E,A LINE PRINTER LIMIT? JMP CRT1I JUMP IF YES SHIFT A,LO,8 LEFT JUSTIFY CHARACTER IMS CHARSV OR CHARSV,A COPY A,0(X) STORE IN BUFFER COPY CHARSV,A FETCH LAST CHARACTER CLSN =:5E,A LINE PRINTER LIMIT??? JMP CRT1B JUMP IF YES ADD =1,A BUMP CHARA9 CTER JMP $+2 CRT1B COPY =SPACE,A COPY A,CHARSV IMS CPL BUMP CHARACTER/LINE COUNT JMP CRT1A JUMP IF NOT FULL LINE ADD =1,X BUMP ADDRESS COPY =CRET,A CARRIAGE RETURN SHIFT A,LO,8 COPY A,0(X) STORE IN BUFFER COPY =-CHLINE/2+1,A COPY A,CPL CRT1C COPY =CRET,A CARRIAGE RETURN SHIFT A,LO,8 ADD =LF,A LINE FEED COPY A,0(X) CRT1D EQU $ COPY FIRST,A FETCH FIRST CHARACTER ADD =1,A BUMP BY ONE COPY A,FIRST COPY A,CHARSV * * FORM DIO PORT WORD AND START OUTPUT * COPY X,A SAVE X IN A SUB =CRTOUT,A SUBTRACT START ADDR TO * FIND LENGTH... ADD =1,A SHIFT A,LO,1 FORM BYTE COUNT SUB =2,A REDUCE COUNT BY 2 NEG A,A TWOS COMPLEMENT COPY CRTIL,X FETCH INT. VECTOR ADDR COPY A,AIOCNT(X) COPY =CRTOUT,A FETCH BUFFER ADDRESS SHIFT A,LO,1 FORM BYTE ADDRESS SUB =1,A MINUS 1 COPY A,AIOADR(X) STORE ADDRESS FOR EOB COPY =1,A COPY A,AIOCHN(X) SET FOR NO WORD CHAINING COPY CRT1E1,A FETCH INT. RETURN ADDRESS COPY A,EOBADR(X) STORE EOB TRANSFER ADDRESS COPY AOB,A FETCH AOB COMMAND OR CRTDA,A FORM COMMAND W/DEV. ADDR. COPY A,AIOCMD(X) STORE AUTO I/O COMMAND SBIT 8,S ENABLE INTERRUPTS COPY =:613,X (OUTPUT) CRT1E OUT X,0 START AOB JMP $ WAIT FOR EOB INTERRUPT JMP CRT11 * CRT1E1 EQU  $ WORD CRT1F CRT1F EQU $ END OF BLOCK INT. ROUTINE ENT CRT1G IN 0*8+0,A INPUT STATUS COPY A,CRT1K SAVE STATUS COPY MODSFG,A FETCH MODEM STATUS FLAG JEQ A,CRT1G1 JUMP IF NOT MODEM COPY CRT1K,A AND =4,A JMP CRT1G2 CRT1G1 COPY CRT1K,A AND =:36,A XOR =:14,A CRT1G2 EQU  $ JEQ A,$+2 CRT1G3 JST *0 * TEST1 OR TEST2 SBIT 8,S COPY CRTIL,X INTERRUPT LOCATION  COPY AIOCNT(X),A GET THE BYTE COUNT SHIFT A,LO,1 TEST IF IT GOES TO :8000 JNE A,CRT1G3 NO, HALT PROGRAM IMS CRT1F BUMP RETURN ADDRESS JMP *CRT1F RETURN CRT11 EQU $ IMS LINES BUMP LINE COUNT JMP $+2 JMP CRT1J JMP CRT1Z CRT1I EQU $ SHIFT A,LO,8 LEFT JUSTIFY  OR =SPACE,A COPY A,0(X) STORE IN BUFFER COPY =SPACE,A * ADD =1,A JMP CRT1B+1 CRT1J EQU $ COPY SUBFLG,A FETCH SUBROUTINE FLAG JNE A,CRT2 JUMP IF SET COPY ASAVE,A  JEQ A,CRT2 JMP CRTST4 CRT1K WORD 0 LPOOL * TITL DIOCRT ALIGNMENT PATTERN (TEST 2) ******************************************* * TEST 2 * ALIGNMENT TEST ******************************************* CRT2 EQU $  COPY =:100,X FETCH RESET CODE CRT20 OUT X,0*8+0 ISSUE RESET COPY =-24,A COPY A,LINES LINES/PAGE COPY CRTPT1,A TOP OF FORM CRT22 COPY A,CRTPT3 PLACE IN BUFFER CRT21 EQU $ COPY CRTIL,X INT. VEC: T. ADDR COPY CRTPT2,A COPY A,AIOADR(X) BUFFER POINTER COPY AOB,A FETCH AOB COMMAND OR CRTDA,A FORM COMMAND W/DEV. ADDR. COPY A,AIOCMD(X) STORE AUTO I/O COMMAND COPY =-CHLINE,A 80 CHARATERS  JMP CRT2B2 CRT2B EQU $ COPY =-CHLINE,A CHARACTERS PER LINE CRT2B2 EQU $ COPY A,AIOCNT(X) COPY CRT1F-1,A FETCH RETURN ADDRESS COPY A,EOBADR(X) STORE FOR EOB INT. JST SBIT 8,S ENABLE INTERRUPTS  COPY =:613,X (OUTPUT) CRT2C OUT X,0*8+0 JMP $ WAIT FOR INTERRUPT CRT2D EQU $ IMS LINES BUMP LINE COUNT JMP $+2 JMP CRT2F COPY CRTBFE,A CR AND LF JMP CRT22 * CRT2F EQU  $ COPY SUBFLG,A FETCH SUBROUTINE FLAG JNE A,$+2 JUMP IF SET JMP CRTST4 NOT SUBROUTINE ENTRY COPY =0,A COPY A,SUBFLG CLEAR SUBROUTINE FLAG COPY CRT100,Y JMP 0(Y) RETURN TO CALLER * SUBFLG WORD 0 AOB1 AOB 0*8+0 LPOOL TITL DIOCRT KEYBOARD TEST (TEST 3) * * TEST 3 - KEYBOARD TEST * THIS TEST ALLOWS THE USER TO INPUT UP TO 72 * CHARACTERS. TERMINATED WITH A CARRIAGE * RETURN. THE CHARACTERS THAT WERE INPUT WILL * BE PRINTED OUT DIRECTLY BELOW THE INPUT STRING. * THE USER SHOULD VERIFY THAT THE TWO LINES ARE * IDENTICAL. THE USER MAY SELECT WHETHER HE * USES ASCII MODE OR NON ASCII MODE FOR INPUT. * IF THE FIRST CHARACTER ENTERED IS A '@' THE * KEYBOARD ENTRY WILL BE IN NON ASCII MODE, * OTHERWISE ALL KEYBOARD ENTRIES FOR THE CURRENT * STRING OF CHARACTERS WILL BE IN THE ASCII MODE. * ALL OUTPUT WILL BE IN NON ASCII MODE. * CRT300 ENT IMS SUBFLG SET SUBROUTINE FLAG CRT3 EQU $ COPY =:100,X FETCH RESET CODE CRT3A1 OUT X,0*8+0 RESET PICO PROCESSOR COPY =-100,A CLEAR COPY A,BFLMT INPUT COPY =CRTIN,X BUFFER COPY =0,A WITH CRT3A2 COPY A,0(X) ALL ADD =1,X ZEROS  IMS BFLMT * JMP CRT3A2 COPY A,CHCNTR CLEAR CHAR COUNTER COPY CRTIL,X FETCH INT. VECTOR ADDRESS COPY =CRT3E,A COPY A,EOBADR(X) COPY CRTBFR,A SHIFT A,LO,1 SUB =1,A COPY A,AIOADR(X) COPY =-4,A COPY A,AIOCNT(X) COPY AOB,A OR CRTDA,A COPY A,AIOCMD(X) SBIT 8,S ENABLE INTERRUPTS COPY =:1613,X CRT301 OUT X,0*8+0 CARRIAGE RETURN LINE FEED JMP $ COPY CRTIL,X FETCH INT. VECTOR ADDRESS COPY =CRTIN,A SHIFT A,LO,1 CONVERT TO BYTE ADDRESS  SUB =1,A -1 COPY A,AIOADR(X) STORE BUFFER ADDRESS IN VECT. COPY AIB,A FETCH AUTO I/O COMMAND OR CRTDA,A FORM COMMAND+DEVICE ADDR COPY A,AIOCMD(X) COPY =-1,A COPY A,AIOCNT(X) CRT3A  EQU $ SBIT 8,S COPY =:1E18,X CRT3B OUT X,0*8+0 JMP $ COPY CRTIL,X COPY AIOADR(X),A FETCH BUFFER ADDRESS SHIFT A,RO,1 CONVERT TO WORD ADDRESS COPY A,BFWORK COPY BFWORK,Y  COPY 0(Y),A FETCH INPUT CHARACTER SHIFT A,RO,8 RIGHT JUSTIFY SUB =:8C,A TEST FOR CLEAR SCREEN CODE ;  JNE A,$+2 JUMP IF NOT CLEAR JMP CRT3 JUMP IF CLEAR SCREEN CODE COPY =-71,A COPY A,AIOCNT(X) SET COUNT FOR MAX LIMIT COPY =:1E18,X FETCH COMMAND WORD CRT3B0 OUT X,0*8+0 JMP $ COPY CRTIL,X FETCH INT. VECTOR ADDRESS COPY AIOCNT(X),A COMPUTE ECHO BACK SHIFT A,LO,1 WATCH OUT FOR 8000  JEQ A,CRTB2 COPY AIOCNT(X),A CRTB2 NEG A,A SUB =76,A ECHO BACK COPY A,AIOCNT(X) CRT3B1 EQU $ COPY CRTBFR,A SHIFT A,LO,1 SUB =1,A COPY A,AIOADR(X) COPY AOB1,A OR CRTDA,A COPY A,AIOCMD(X) SET FOR AOB COMMAND SBIT 8,S CRT3C COPY =:613,X (OUTPUT) CRT3D OUT X,0*8+0 JMP $ COPY SUBFLG,A FETCH SUBROUTINE FLAG JNE A,$+2 JUMP IF SET JMP CRTST4 NOT SUBROUTINE ENTRY COPY =0,A COPY A,SUBFLG CLEAR SUBROUTINE FLAG JMP *CRT300 RETURN TO CALLER CRTBFR WORD CRTBFE LPOOL CRT3E ENT CRT3F IN 0*8+0,A INPUT STATUS SBIT 8,S ENABLE INTERRUPTS IMS CRT3E JMP *CRT3E * CRT3G EQU $ COPY CRTIL,X FETCH INT. VECTOR ADDRESS COPY =-1,A COPY A,AIOCNT(X) SET AUTO I/O COUNT -1 COPY =:1618,X (ECHO-INPUT) CRT3H OUT X,0*8+0 JMP $ COPY CRTIL,X FETCH INT. VECTOR ADDRESS COPY AIOADR(X),A FETCH INPUT BUFFER ADDRESS SHIFT A,RO,1 CONVERT TO WORD ADDRESS COPY A,BFWORK COPY BFWORK,Y COPY 0(Y),A FETCH INPUT CHARACTER COPY A,X TO A AND X CRT3H1 SHIFT A,RO,8 RIGHT JUSTIFY LEFT BYTE SHIFT X,LO,8 LEFT JUSTIFY RIGHT BYTE SUB =:0D,A TEST FOR CHARIAGE RET. JEQ A,CRT3I JUMP IF C/R COPY X,A JNE X,CRT3H1 JUMP IF ANOTHER CHARACTER IMS CHCNTR BUMP CHARACTER COUNTER JMP CRT3G CRT3I COPY CHCNTR,A FETCH CHARACTER COUNT ADD =6,A  ADJUST COUNT NEG A,A COPY CRTIL,X COPY A,AIOCNT(X) SET COUNT FOR OUTPUT JMP CRT3B1 CRTTBL WORD CRT1 WORD CRT1 WORD CRT2 WORD CRT3 LPOOL TITL BUFFERS AND WORD * *MAIN WORD BUFFERS * * * CRTPT1 WORD :8C00 CRTPT2 WORD 2*CRTBUF-3 CRTPT3 WORD :8C8A CRTBUF BYTE ' !"#$%&''()*+,-./0123' BYTE '456789:;.=>?@ABCDEFG' BYTE 'HIJKLMNOPQRSTUVWXYZ' WORD :DBDC,:DDDE BYTE ' !"#$%&''()*+,-' CRTBFE WORD :8D8A CRTIN RES 100 INPUT BUFFER CRTOUT RES 100 OUTPUT BUFFER * * * TITL MODEM MANUAL TEST  ROUND ****** * THE FOLLOWING ROUTINES ARE DESIGNED TO * TEST THE MODEM PICO STATUS BITS. MANUAL * INTERVENTION IS REQUIRED. DIRECTIONS * WILL BE OUTPUT TO THE CRT SCREEN. IT IS * ADVISABLE THAT THE CRT TEST (DIOCRT) BE * RUN TO VERIFY THAT CHARACTERS CAN BE SENT * TO AND FROM THE CRT. ****** * MODEMB EQU $ JMP MODEM1 MODEM2 IMS  MODFLG NOP IMS MODSFG SET MODEM STATUS FLAG JMP CRTS1A MODEM1 IMS MODFLG SET MODEM FLAG  NOP IMS MODSFG SET MODEM STATUS FLAG JMP CRTS2B * ****** * OUTPUT MESSAGE TO TURN CRT OFF AND BA< CK ON * .... WAIT FOR CRT POWER ON.... AND EOB. ****** * TITL MODEM MANUAL TEST 1 MOD1 EQU $ COPY =:100,X RESET CODE MOD10 OUT X,0*8+0 ISSUE RESET COPY =-30,A MESSAGE LENGTH COPY CRTIL,X COPY  A,AIOCNT(X) COPY =MODMS1,A MESSAGE ADDRESS - SHIFT A,LO,1 TO BYTE ADDRESS- SUB =1,A -1  COPY A,AIOADR(X) COPY =CRT1F,A EOB ROUTINE ADDRESS COPY A,EOBADR(X) COPY AOB,A OR CRTDA,A COPY A,AIOCMD(X) COPY =:613,X OUTPUT COMMAND SBIT 8,S ENABLE INTERRUPTS MOD11 OUT X,0*8+0 JMP $ COPY =-30,A COPY CRTIL,X COPY A,AIOCNT(X) COPY =MODMS3,A MESSAGE ADDRESS - SHIFT A,LO,1 TO BYTE ADDRESS - SUB =1,A -1 COPY A,AIOADR(X) SBIT 8,S ENABLE INTERRUPTS COPY =:613,X MOD12 OUT X,0*8+0 JMP $ MOD13 IN 0*8+0,A FETCH STATUS AND =4,A TEST FOR WORD SET READY JEQ A,MOD13 JUMP IF WORD SET READY COPY =MOD1A,A EOB ROUTINE ADDRESS  COPY CRTIL,X COPY A,EOBADR(X) COPY =0,A JST WAIT WAIT TWICE JST WAIT SBIT  8,S COPY =:1E48,X INPUT MODE CODE MOD14 OUT X,0*8+0 JMP $ JST CRT300 ALLOW USER TO ENTER CHARS * VIA KEYBOARD COPY =0,A ADD =1,A JNE A,$-1 JMP MOD2 LPOOL * MOD1A ENT COPY =0,A ADD =1,A JNE A,$-1 MOD1A1 IN 0*8+0,A AND =4,A TEST FOR WORD SET READY JEQ A,$+2 HLT SBIT 8,S IMS MOD1A JMP *MOD1A * TITL MODEM MANUAL TEST 2 MOD2 EQU $ COPY =:100,X RESET CODE MOD20 OUT X,0*8+0 ISSUE RESET COPY =-30,A COPY CRTIL,X COPY A,AIOCNT(X) STORE MESSAGE LENGTH COPY =MODMS2,A MESSAGE ADDRESS - SHIFT A,LO,1 TO BYTE ADDRESS - SUB =1,A -1 COPY A,AIOADR(X) COPY =CRT1F,A EOB ROUTINE COPY A,EOBADR(X) COPY AOB,A OR CRTDA,A COPY A,AIOCMD(X) SBIT 8,S ENABLE INTERRUPTS COPY  =:613,X OUTPUT CODE MOD21 OUT X,0*8+0 JMP $ COPY =MODMS3,A SHIFT A,LO,1 SUB =1,A  COPY CRTIL,X COPY A,AIOADR(X) COPY =-30,A COPY A,AIOCNT(X) SBIT 8,S ENABLE INTERRUPTS COPY =:613,X MOD22 OUT X,0*8+0 JMP $ MOD23 IN 0*8+0,A READ STATUS AND =4,A TEST FOR WORD SET READY JEQ A,MOD23 JUMP IF OV COPY CRTIL,X COPY =MOD1A,A EOB ADDRESS COPY  A,EOBADR(X) COPY CRTIL,X COPY =-2,A COPY A,AIOCNT(X) COPY =MODMS1,A SHIFT A,LO,1  SUB =1,A COPY A,AIOADR(X) SBIT 8,S ENABLE INTERRUPTS COPY =:643,X MOD24 OUT X,0*8+0 JMP $ COPY =0,A ADD =1,A JNE A,$-1 JST CRT100 JMP MOD1 LPOOL MODMS1 WORD :8C8A BYTE ' WORD SET READY (INPUT MODE)' MODMS2 EQU $ WORD :8C8A BYTE ' WORD SET RE= ADY(OUTPUT MODE)' MODMS3 EQU $ WORD :8D8A BYTE 'TURN OFF CRT - THEN BACK ON ' ERROR ENT COPY A,ASAVE COPY ERROR,A GET THE -P- REGISTER SUB =1,A SELP A,4 OUTPUT IT TO CONSOLE HLT  COPY ASAVE,A RESTORE -A- REGISTER JMP *ERROR ASAVE RES 1,0 WAIT1 RES 1,0 WAIT ENT NEG A,A  COPY A,WAIT1 WLOOP SBIT 8,S IMS WAIT1 JMP WLOOP JMP *WAIT END BYTE ' WORD SET READY(OUTPUT MODE)' MODMS3 EQU $ WORD :8D8A BYTE 'TURN OFF CRT - THEN BACK ON ' ERROR ENT COPY A,ASAVE COPY ERROR,A GET THE -P- REGISTER SUB =1,A SELP A,4 OUTPUT IT TO CONSOLE HLT ’‚!†’Â’ƒŽ»ž…ÞŠÞ‹JÿQ¸Ä½Ñ %½Ó‚‚½Ôžu †U ½Ó ½Ó ’‰B *ž ½Ó ½Ó‚GŸo †h½Ô †fÿ†e Ä"†cIƒaM K ÿ¢Y&žž†¢V&žƒ†RÆR `ÞQKL$žžk‚K N =½Ó‚DŽD½Ô G½Ó‚A öÁ  :½Óž€ ½ÓŸL ¾ƒ ½ÓŸ{ †’¹¾‡y¾…9¾ƒ¾‚Ÿu  öÁ  :½Ó‚Ÿw @0Ƶ‡ÁïQ¾˜žÂˢ̂¬C C 96¼C C " z až‚ ࢜0 `Ÿa ´C /6» C C 6¼ C C 6¼C ¾¡Ÿh† ÁïQ¾¬Ÿ{…唢’C "C ¢C I6  COPY =:FF,A SELP A,4 HLT * 'P' TO READER DEMAND ENTRY * ADDRESS OR PRESS RUN TO GO. JMP HSRS2A * * DEFAULT ENTRY JUMPS HERE * HSRST2 EQU $ COPY A,ASAVE COPY =0,A COPY A,WORD CLEAR DEMAND WORD CELL HSRS2A EQU $ COPY HSPIL,X PUNCH INT. ADDRESS COPY JST,A COPY A,EOBJST(X) STORE JST AT INT+4 (EOB) COPY AOB,A OR HSPDA1,A FORM PUNCH DEV ADDR COPY  A,AIOCMD(X) STORE AUTO I/O CMD AT INT+0 COPY HSRIL,X FETCH INT. ADDRESS COPY AIB,A FETCH AIB COMMAND  OR HSRDA1,A FORM READER DEV ADDR COPY A,AIOCMD(X) STORE COMMAND IN INT. BLOCK COPY JST,A COPY A,EOBJST(X) COPY OTX,A OR HSRDA1,A FORM READER DEV ADDR OR =1,A SET CONTROL BIT COPY A,HSR20A STORE OTX COPY A,HSR2A COPY A,HSR2C COPY A,HSR2D COPY INA,A OR HSRDA1,A FORM READER DEV ADDR OR =1,A COPY A,HSR2G COPY OTX,A FETCH OTX COMMAND OR HSPDA1,A FORM PUNCH DEV ADDR OR =1,A COPY A,HSR1A1 STORE OTX COPY A,HSR1B COPY A,HSR1D  COPY INA,A FETCH INA COMMAND OR HSPDA1,A FORM PUNCH DEV ADDR OR =1,A COPY A,HSR1G  COPY =-1,A COPY A,LOOPER JMP HSRST3 LPOOL * HSRST3 EQU $ COPY ASAVE,A AND =7,A ISOLATE VALUE ONLY COPY A,OPTNS SAVE TEST OPTIONS BITS COPY HSRTAD,X CSK A,=4 TEST FOR LEGAL LIMIT JMP $+2 JMP HSRST4+1 JUMP IF > LIMIT JEQ A,HSRST6 JUMP IF SENSE REG = 0 HSRST5 SUB =1,A DECREMENT A ADD =1,X BUMP TABLE ADDR JNE A,HSRST5 HSRST6 COPY 0(X),X FETCH TEST ADDRESS JMP 0(X) JUMP TO SELECTED TEST HSRST4 EQU $ JF SS,HSRST3 JUMP IF SENSE SWITCH OFF HLT END OF TEST HALT JMP HSRST3 HSRTAD WORD HSRTBL LPOOL TITL DIOHSP/DIOHSR PUNCH TEST (TEST 1) * * TEST 1 - PUNCH TEST * THIS TEST PUNCHES THE WORST CASE WORD PATTERN * OF: 00,FF,01,FE,02,FD,ETC. TO VERIFY THAT * THE PUNCH TEST PERFORMS AS EXPECTED IT IS * SUGGESTED THAT THE READER TEST BE USED TO * READ AND COMPARE THE PUNCHED TAPE - OR VISUALLY * COMPARE IT WITH A KNOWN GOOD TAPE BY PLACING * ONE OVER THE OTHER AND CHECKING FOR THE HOLES * TO LINE UP. TWO BLOCKS OF IDENTICAL WORD * WILL BE PUNCHED. THIS TEST WILL RUN AS LONG * AS THE SENSE REGISTER VALUE INDICATES TEST 1 * (SENSE VALUE =:0 OR :1) AND THE SENSE SWITCH * IS OFF. THESE TWO SETTINGS MAY BE CHANGED AT * ANY TIME. IF SENSE SWITCH IS SET ON A CODED HALT * OF :XXFF WILL RESULT. IF THE SENSE REGISTER VALUE * IS CHANGED THE TEST SELECTED WILL RUN UNTIL * DESELECTED. * * * LOAD OUTPUT BUFFER WITH :00,:FF,:01,:FF -- * HSR1 EQU $ COPY =:100,X RESET CODE HSR1A1 OUT X,0*8+0 RESET PICO PROCESSOR * * CLEAR OUTPUT BUFFER TO ZEROS * COPY =-1,A COPY A,LOOPCT HSR1AA EQU $ COPY =HSPOUT,X OUTPUT BUFFER ADDRESS COPY =-450,A BUFFER LENGTH COPY A,BFLMT COPY =0,A HSR100 COPY ?  A,0(X) CLEAR OUTPUT BUFFER ADD =1,X BUMP BUFFER ADDRESS IMS BFLMT BUMP BUFFER SIZE JMP HSR100 JUMP IF BUFFER NOT ALL ZEROS COPY =HSPOUT,A FETCH BUFFER ADDRESS COPY A,BFWORK COPY =0,A COPY BFWORK,Y COPY A,0(Y) SET SOME IMS BFWORK LEADER IN COPY BFWORK,Y COPY A,0(Y) OUTPUT IMS BFWORK BUFFER COPY =-1,A COPY BFWORK,Y COPY A,0(Y) SET CUE CHARACTER IMS BFWORK IN COPY BFWORK,Y COPY A,0(Y) OUTPUT IMS BFWORK BUFFER COPY =-:80,A COPY A,BFLMT COPY =0,A HSR1A COPY A,X SHIFT A,LO,8 COPY A,TEMPSV SAVE A COPY X,A XOR =:FF,A AND =:FF,A OR TEMPSV,A COPY A,TEMPSV COPY BFWORK,Y COPY A,0(Y) STORE WORD IN BUFFER IMS BFWORK BUMP ADDRESS NOP IMS BFLMT BUMP BUFFER LIMIT JMP HSR1E  JUMP IF NOT FINISHED COPY HSPIL,X PUNCH INTERRUPT VECTOR ADDRESS COPY =-256,A FETCH BUFFER LENGTH IN BYTES COPY A,AIOCNT(X) STORE IN INT. BLOCK COPY =HSPOUT,A SHIFT A,LO,1 FORM BYTE ADDRESS SUB  =1,A -1 COPY A,AIOADR(X) COPY =1,A COPY A,AIOCHN(X) SET FOR NO WORD CHAINING COPY =HSR1F,A FETCH EOB RETURN ADDRESS COPY A,EOBADR(X) IMS LOOPCT JMP HSR1C COPY AIOCNT(X),A MODIFY AUTO I/O COUNT SUB =8,A BY 8 COPY A,AIOCNT(X) FOR FIRST BLOCK CUE WORD SBIT 8,S ENABLE INTERRUPTS COPY =HSRBR,X HSR1B OUT X,0*8+0 OUTPUT COMMAND WORD JMP $ WAIT FOR INTERRUPT  COPY =HSPOUT,A COPY A,BFWORK JMP HSR1H HSR1C EQU $ COPY =-1,A COPY BFWORK,Y COPY A,0(Y) IMS BFWORK COPY BFWORK,Y COPY A,0(Y) COPY HSPIL,X FETCH PUNCH INT. ADDR. COPY AIOCNT(X),A FETCH AUTO I/O COUNT SUB =152,A COPY A,AIOCNT(X) STORE ADJUSTED COUNT COPY =HSRBR,X HSR1D OUT X,0*8+0 JMP $ COPY ASAVE,A JEQ A,$+2 JMP HSRST4 RETURN TO EXEC IMS LOOPER JMP HSR2 COPY =-1,A FETCH -1 COPY A,LOOPCT JMP HSR1AA HSR1E COPY TEMPSV,A AND =:FF,A XOR =:FF,A ADD =1,A JMP HSR1A HSR1F EQU $ ENT HSR1G IN 0*8+0,A FETCH STATUS AND =:15,A TEST STATUS BITS XOR =1,A EXCLUSIVE OR READY BIT JEQ A,$+2 JUMP IF STATUS OK HSR1G1 HLT SBIT 8,S ENABLE INTERRUPTS COPY HSPIL,X INTERRUPT LOCATION  COPY AIOCNT(X),A GET THE BYTE COUNT SHIFT A,LO,1 TEST IF IT GOES TO :8000 JNE A,HSR1G1 NO, HALT THE PROGRAM IMS HSR1F BUMP RETURN ADDRESS JMP *HSR1F RETURN TO POINT OF INTERRUPT HSR1H EQU  $ COPY A,X PUT BUFFER ADDR IN X COPY =-450,A BUFFER LENGTH COPY A,BFLMT COPY =0,A  CLEAR HSR1HA COPY A,0(X) OUTPUT BUFFER ADD =1,X WITH IMS BFLMT ZEROS JMP HSR1@ HA COPY =-:80,A FETCH BUFFER LENGTH IN WORDS COPY A,BFLMT SAVE IN BUFFER LIMIT JMP HSR1E LPOOL TITL DIOHSP/DIOHSR READER TEST (TEST 2) * * TEST 2 - READER TEST * THIS TEST READS THE WORST CASE PATTERN PUNCHED * BY TEST 1. A TAPE MAY BE SPLICED * TOGETHER WITH THE OUTPUT OF TEST 1 SO THAT * THIS TEST CAN LOOP CONTINUOUSLY. THE WORD * READ IS COMPARED WITH THE KNOWN VALUES AND * WILL HALT IN A CODED HALT :XX20 IF ANY * MISCOMPARE IS NOTED. AT THE CODED HALT * X WILL CONTAIN THE EXPECTED WORD AND A WILL * CONTAIN THE WORD READ. * IF AN ERRONEOUS STATUS IS FOUND WHEN PROCESSING * AN END OF BLOCK INTERRUPT A CODED HALT :XX21 * WILL RESULT. * HSR2 EQU $ COPY =0,A COPY A,STAERR COPY A,LOOPER COPY =HSRBR,A COPY A,CMWD1 COPY BRAREV,A COPY A,CMWD2 COPY =:100,X RESET CODE HSR20A OUT X,0*8+0 RESET PICO PROCESSOR HSR20B EQU $ COPY HSRIL,X FETCH INT. ADDRESS COPY  =-1,A COPY A,AIOCNT(X) SET AUTO I/O COUNT =-1 COPY =HSRIN,A SHIFT A,LO,1 SUB =1,A COPY A,AIOADR(X) SET BUFFER ADDRESS COPY =1,A COPY A,AIOCHN(X) COPY =HSR2F,A FETCH EOB ROUTINE ADDRESS COPY A,EOBADR(X) COPY =-4,A COPY A,CUECT COPY =HSRIN,X COPY =-260,A COPY  A,BFLMT COPY =0,A HSR200 COPY A,0(X) CLEAR INPUT BUFFER ADD =1,X IMS BFLMT JMP HSR200 SBIT 8,S ENABLE INTERRUPTS HSR2A0 EQU $ COPY CMWD1,X FETCH COMMAND WORD HSR2A OUT X,0*8+0 JMP $ COPY HSRIL,X COPY =-1,A COPY A,AIOCNT(X) COPY AIOADR(X),A SUB =1,A COPY A,AIOADR(X) RESTORE REGISTER ADD =1,A SHIFT A,RO,1 COPY A,X COPY 0(X),A  FETCH INPUT CHAR SHIFT A,RO,8 RIGHT JUSTIFY COPY A,HSR2A1 SAVE INPUT COPY =:FF,A CSK A,HSR2A1 TEST FOR CUE CHARACTER NOP JMP $+2 JMP HSR2B JUMP IF EQUAL COPY =-4,A COPY A,CUECT JMP HSR2A0 HSR2A1 WORD 0 LPOOL HSR2B IMS CUECT JMP HSR2A0 COPY =-512,A SET FOR 512 CHAR. COPY A,CHCNTR COPY =0,A COPY A,HSR2A1 SET EXPECTED HSLOOP COPY HSRIL,X COPY =-1,A SET FOR ONE CHAR. COPY A,AIOCNT(X) COPY =HSRIN,A SET BYTE ADDR-1 SHIFT A,LO,1 SUB =1,A COPY A,AIOADR(X) SBIT 8,S ENABLE INTERRUPTS COPY CMWD1,X FETCH COMMAND WORD HSR2C OUT X,0*8+0 JMP $ * * VERIFY EACH BYTE READ * COPY =HSRIN,A FETCH BUFFER ADDR. COPY A,BFWORK  COPY BFWORK,Y COPY 0(Y),A FETCH CHAR WORD SHIFT A,RO,8 CSK A,HSR2A1 CHK EXPECTED NOP JMP HSR2E * * FORM EXPECTED * IMS CHCNTR DONE? JMP HSFRM NO JMP HSR2D2 YES-EXIT IF ZERO HSFRM COPY CHCNTR,A COUNTER ODD? ROTATE A,RO,1 JT OV,HSODD YES COPY HSR2A1,A NO-NOW COMP FORM NEG A,A BACK TO CNTR FORM JMP HSROV HSODD COPY HSR2A1,A YES-NOT COMP YET NEG A,A A  SUB =1,A HSROV AND =:FF,A COPY A,HSR2A1 NEW EXPECTED JMP HSLOOP * * ERROR ROUTINE * HSR2E EQU $  COPY HSR2A1,X EXPECTED COPY BFWORK,Y COPY 0(Y),A SHIFT A,RO,8 ACTUAL HLT * * EXCHANGE COMMAND WORDS AND TEST LOOPER * HSR2D2 EQU $ COPY HSRIL,X COPY =-6,A SET FOR L CHAR. COPY A,AIOCNT(X) SBIT 8,S ENABLE INTERRUPTS COPY CMWD1,X HSR2D OUT X,0*8+0 JMP $ COPY LOOPER,A FETCH LOOPER ADD =1,A COPY A,LOOPER CLSN =3,A TEST FOR THREE LOOPS JMP HSRST4 EXIT COPY CMWD1,A EXCHANGE COPY CMWD2,X COMMAND COPY A,CMWD2 WORD COPY X,CMWD1  JMP HSR20B HSR2F ENT COPY STAERR,A STATUS ERROR FLAG SET??? JNE A,HSR2GA JUMP IF YES COPY  =20,A DELAY SUB =1,A AT LEAST 20 JNE A,$-1 MICRO SECONDS HSR2G IN 0*8+0,A READ STATUS  AND =:2,A TEST STATUS BIT JEQ A,$+3 JUMP IF STATUS OK HLT IMS STAERR SET STATUS ERROR FLAG COPY HSRIL,X COPY AIOCNT(X),A FETCH BLOCK COUNT SHIFT A,LO,1 JEQ A,HSR2H JUMP IF COUNT IS ZERO COPY HSR2F,A FETCH INTERRUPT ADDRESS SUB =3,A DECREMENT BY 3 COPY A,X JMP 0(X) GO FINISH BLOCK HSR2GA COPY =0,A COPY A,STAERR CLEAR STATUS ERROR FLAG JMP HSR2D2 HSR2H EQU $ SBIT 8,S ENABLE INTERRUPTS IMS HSR2F BUMP RETURN ADDRESS JMP *HSR2F RETURN *  LPOOL HSRTBL WORD HSR1 WORD HSR1 WORD HSR2 HSRIN RES 260 READER INPUT BUFFER HSPOUT RES 450 PUNCH OUTPUT BUFFER * * * TITL CARD READER TEST FOR DISTRIBUTED I/O (DIOCRD) ROUND * * * CRD INPUTS AND TEST ALL 80 CARD COLS. * * THE WORD READ MUST COMPARE WITH A KNOWN * WORD PATTERN. ALL 80 COLUMNS ARE CHECKED * ANOTHER CARD WILL BE READ IF THE PREVIOUS * CARD READ AND CHECKED GOOD. IF WORD IS * READ THAT IS NOT WHAT IT SHOULD BE A * CODED HALT OF :XXFF WILL RESULT. THE * ACTUAL WORD READ WILL BE SET IN THE 'A' * REGISTER, THE EXPECTED WORD WILL BE IN * THE X REGISTER. PRESSING RUN AFTER THE * CODED HALT WILL CAUSE ANOTHER CARD TO BE * READ. IF AFTER A CARD IS READ THE STATUS * OF THE PICO PROCESSOR INDICATES AN ERROR * CONDITION EXISTS IN THE CARD READER * A CODED HALT OF :XX11 WILL RESULT WITH * THE 'A' REGISTER SET WITH THE ERROR BITS * ON. PRESSING RUN COULD RESULT IN A WORD * ERROR CODED HALT (:XXFF) PRESSING RUN * AGAIN (AFTER THE CARD READER HAS BEEN * RESET) WILL CAUSE ANOTHER CARD TO BE READ * * * * * DISTRIBUTED I/O STATUS BITS * ****** * * BIT # DEFINITION * * 0  UNIT BUSY * 1 UNIT READY (IF NOT AVAIL +5 OK) * 2 ERROR * 3 WORD READY/ACKNOWLEDGE/INDEX * 4 PAPER LOW/TAPE LOW/HOPPER EMPTY * 5 UNDEFINED * ****** * * SET UP DIO PORT VECTOR LOCATIONS * * * INTERRUPT LOCATION BLOCK EQUATES * * * LOC0=AUTO I/O COMMAND (AIOCMD) * LOC1=BYTE COUNT (2'SB  COMPLEMENT) (AIOCNT) * LOC2=BUFFER ADDRESS (AIOADR) * LOC3=WORD CHAINING WORD(AIOCHN) * LSB=0 WORD CHAINING, =1 NO WORD CHAINING * HIGH SPEED DISTRIBUTOR ONLY. * * LOC4=JST TO EOB ROUTINE (EOBJST) * LOC5=POINTER TO EOB ROUTINE (EOBADR) * * LOC6=NOT USED * LOC7=NOT USED * DIOCRD EQU $ JMP CRDST2 DEFAULT ENTRY JMP CRDST1 DEMAND ENTRY CRDDA WORD :F0 CRDIL WORD DIO0 * * * DEMAND ENTRY JUMPS HERE * CRDST1 EQU $ * * FORM DEVICE ADDRESS * IN 4,A READ WORD REGISTER COPY A,WORD SAVE WORD REGISTER VALUE AND =:C00,A ISOLATE ADDRESS BITS XOR =:C00,A SHIFT A,RO,6 OR =:C0,A FORM DEVICE ADDRESS COPY A,SAVE SAVE RESULT COPY  =7,A FETCH MASK AND WORD,A ISOLATE PORT # BITS SHIFT A,LO,1 OR SAVE,A FORM DEVICE ADDRESS COPY A,CRDDA STORE CRD DEVICE ADDRESS * * FORM INTERRUPT VECTOR ADDRESS * COPY WORD,A FETCH WORD REGISTER BITS AND =:200,A ISOLATE J2PIN AND =:200,A ISOLATE J2 PIN 6 BIT XOR =:200,A SHIFT A,RO,3 COPY A,SAVE COPY WORD,A AND =:100,A ISOLATE J2 PIN 5 BIT XOR =:100,A SHIFT A,RO,1 OR SAVE,A COPY A,SAVE COPY =:10,A FETCH MASK AND WORD,A TEST FOR J2 PIN 1 BIT SHIFT A,LO,4 OR SAVE,A COPY A,SAVE COPY =7,A AND WORD,A ISOLATE PORT # BITS SHIFT A,LO,3 OR SAVE,A FORM INT. VECTOR ADDRESS COPY A,CRDIL STORE INT. VECTOR ADDRESS  JMP CRDS2A * * DEFAULT ENTRY JUMPS HERE * CRDST2 EQU $ COPY =0,A COPY A,WORD CLEAR DEMAND WORD CELL CRDS2A EQU $ COPY CRDIL,X FETCH INT. ADDRESS COPY JST,A COPY A,EOBJST(X) STORE JST AT INT+4 (EOB) COPY AIB,A OR CRDDA,A PUT DEV ADDR IN AOB COMMAND COPY A,AIOCMD(X) STORE AUTO I/O CMD AT INT+0 COPY OTX,A OR CRDDA,A FORM OTX CONTROL COMMAND OR =1,A SET CONTROL BIT COPY A,CRD1A1 COPY A,CRD1B STORE OTX COPY INA,A OR CRDDA,A OR =1,A COPY A,CRD1A STORE INA COPY A,CRD1E STORE INA JMP CRDST3 LPOOL CRDST3 EQU $ TITL DIOCRD TEST *********************** * BEGIN TEST ********************** ************************* * * READ CARD DECK (INT. AUTO I/O MODE) * CRD1 EQU $ COPY =CRDIN,X COPY =-80,A COPY A,BFLMT COPY =0,A CRD100 COPY A,0(X) ADD =1,X IMS BFLMT JMP CRD100 COPY CRDIL,X COPY =-160,A FETCH BYTE COUNT  COPY A,AIOCNT(X) STORE IN INT. BLOCK COPY =CRDIN,A SHIFT A,LO,1 SUB =1,A COPY A,AIOADR(X) COPY =1,A COPY A,AIOCHN(X) COPY =CRD1D,A END OF BLOCK ROUTINE COPY A,EOBADR(X) CRD1A IN 0*8+0,A READ STATUS COPY A,STATUS SAVE STATUS AND =2,A ISOLATE READY BIT JEQ A,CRD1A  JUMP IF NOT READY COPY STATUS,A FETCH STATUS AND =:10,A TEST FOR HOPPER EMPTY JNE A,CRD1A JUC MP IF HOPPER EMPTY COPY =:100,X FETCH RESET CODE CRD1A1 OUT X,0*8+0 ISSUE RESET SBIT 8,S ENABLE INTERRUPTS COPY =:A10,X FETCH COMMAND WORD CRD1B OUT X,0*8+0 JMP $ COPY =CRDIN,A COPY A,BFWORK COPY =-80,A COPY A,BFLMT COPY =WORDBF,X CRD1C COPY BFWORK,Y COPY 0(Y),A FETCH INPUT WORD AND =:FFF,A ISOLATE LS 12 BITS CSK A,0(X) COMPARE WORD NOP JMP CRD1F JUMP IF NOT EQUAL ADD =1,X BUMP WORD BUFFER ADDRESS IMS BFWORK BUMP INPUT BUFFER ADDRESS IMS BFLMT JMP CRD1C JMP CRD1 CRD1D ENT END OF BLOCK ROUTINE CRD1E IN 0*8+0,A FETCH STATUS  COPY A,STATUS SAVE STATUS AND =:15,A ISOLATE ERROR BITS JEQ A,$+2 CRD1E2 HLT COPY CRDIL,X INTERRUPT LOCATION COPY AIOCNT(X),A GET THE BYTE COUNT SHIFT A,LO,1 TEST IF IT GOES TO :8000  JNE A,CRD1E2 NO, HALT PROGRAM COPY STATUS,A FETCH STATUS AND =2,A TEST READY BIT JEQ A,CRD1E1 JUMP IF NOT READY IMS CRD1D JMP *CRD1D CRD1E1 JMP CRD1 * CRD1F EQU $ COPY A,CRD1G SAVE ACTUAL WORD COPY X,A SUB =WORDBF,A COMPUTE CARD COLUMN COPY X,CRD1H SAVE BUFFER ADDRESS  ADD =1,A CONVERT COPY =0,X FROM CRD1F1 EQU $ CSK A,=10 HEX JMP CRD1F2 VALUE NOP TO ADD =:10,X DECIMAL SUB =10,A VALUE JEQ A,CRD1F2 JMP  CRD1F1 CRD1F2 EQU $ COPY A,CRD1F3 COPY X,A ADD CRD1F3,A COPY CRD1G,X FETCH ACTUAL WORD (BAD) HLT * A= CARD COLUMN, X=BAD WORD COPY CRD1H,X COPY CRD1G,A COPY  0(X),X FETCH EXPECTED WORD HLT * A=ACTUAL WORD, X= EXPECTED JMP CRD1 LPOOL CRD1G WORD 0 CRD1H WORD 0 CRD1F3 WORD 0 CRDIN RES 90 WORDBF EQU $ WORD 0,:100,:80,:40,:20,:10,8,4,2,1  WORD :82,:42,:22,:12,:A,6,:200,:300,:280 WORD :240,:220,:210,:208,:204,:202,:201 WORD :282,:242,:222,:212,:20A,:206,:400 WORD :500,:480,:440,:420,:410,:408,:404 WORD :402,:401,:482,:442,:422,:412,:40A WORD  :406,:800,:900,:880,:840,:820,:810 WORD :808,:804,:802,:801,:882,:842,:822 WORD :812,:80A,:806,0,:100,:80,:40,:20 WORD :10,8,4,2,1,:82,:42,:22,:12,:A,6 LPOOL TITL CRT TEST (DIOCRT) ROUND * * TESTS: * *  TEST 1 - ROTATING PATTERN TO DISPLAY * TEST 2 - ALIGNMENT PATTERN TO DISPLAY * TEST 3 - CRT KEYBOARD TEST * * TEST SELECTION: * A REG DESCRIPTION * * :0 RUN TEST 1,2 * :1 RUN TEST 1 * :2  RUN TEST 2 * :3 RUN TEST 3 * * * * * SENSE SWITCH * * ON HALT AT END OF TEST(S) *  OFF RUN CONTINUOSLY * TITL DIOCRT EQUATES * CRTRST EQU :100 CRTMOD EQU :400 CRTASC EQU :1000 CRTCHD EQU :800 * DIOCRT EQU $ JMP CRTST2 JMP CRTST1 MODEM EQU $ JMP MODEMA MODEM DEFAULD T ENTRY IMS MODSFG SET MODEM STATUS FLAG COPY =0,A COPY A,MODFLG CLEAR FLAG JMP CRTS1A MODEMA EQU $ IMS MODSFG SET MODEM STATUS FLAG COPY =0,A COPY A,MODFLG CLEAR FLAG JMP  CRTS2B LPOOL * * WORD AREA * CHLINE EQU 80 CRTIL WORD DIO2 CRTDA WORD :F4 MODFLG WORD 0 MODSFG WORD 0 * * * * DEMAND ENTRY JUMPS HERE * CRTST1 EQU $ COPY A,ASAVE COPY Q,CONCRT RUN CONTINUOUSLY? COPY =0,A CLEAR COPY A,MODFLG MODEM FLAG COPY A,MODSFG CLEAR MODEM STATUS FLAG * * FORM DEVICE ADDRESS * CRTS1A EQU $ JST *0 BKPT. USER INPUTS DEV. ADDR. COPY A,WORD SAVE WORD REGISTER VALUE  AND =:C00,A ISOLATE DEVICE ADDR BITS XOR =:C00,A SHIFT A,RO,6 OR =:C0,A FORM DEVICE ADDRESS COPY A,SAVE SAVE RESULT COPY =7,A FETCH MASK AND WORD,A ISOLATE PORT # BITS  SHIFT A,LO,1 OR SAVE,A FORM DEVICE ADDRESS COPY A,CRTDA STORE CRT DEVICE ADDRESS * * FORM INTERRUPT VECTOR ADDRESS * COPY WORD,A FETCH WORD REGISTER BITS AND =:200,A ISOLATE J2 PIN 6 BIT XOR  =:200,A SHIFT A,RO,3 COPY A,SAVE COPY WORD,A AND =:100,A ISOLATE J2 PIN 5 BIT XOR =:100,A SHIFT A,RO,1 OR SAVE,A COPY A,SAVE COPY =:10,A FETCH MASK AND WORD,A TEST FOR J2 PIN 1 BIT SHIFT A,LO,4 OR SAVE,A COPY A,SAVE COPY =7,A AND WORD,A ISOLATE PORT # BITS SHIFT A,LO,3 OR SAVE,A FORM INT. VECTOR ADDRESS COPY A,CRTIL STORE INT. VECTOR ADDRESS JMP CRTS2A * * DEFAULT ENTRY JUMPS HERE * CRTST2 EQU $ COPY A,ASAVE COPY =0,A COPY A,MODFLG CLEAR MODEM FLAG COPY A,MODSFG CLEAR MODEM STATUS FLAG CRTS2B EQU $ COPY =0,A  COPY A,WORD CLEAR DEMAND WORD CELL CRTS2A EQU $ COPY CRTIL,X FETCH INT. ADDRESS COPY JST,A  COPY A,EOBJST(X) STORE JST AT INT+4 (EOB) COPY AOB,A OR CRTDA,A PUT DEV ADDR IN AOB COMMAND COPY A,AIOCMD(X) STORE AUTO I/O CMD AT INT+0 COPY OTX,A OR CRTDA,A OR =1,A SET CONTROL BIT COPY A,CRT1E STORE OTX COPY A,CRT10 STORE OTX COPY A,CRT20 STORE OTX COPY A,CRT2C STORE OTX COPY A,CRT3A1 STORE OTX COPY A,CRT301 STORE OTX COPY A,CRT3B STORE OTX COPY A,CRT3B0 STORE OTX COPY A,CRT3D STORE OTX COPY A,CRT3H STORE OTX COPY A,MOD10 STORE OTX COPY A,MOD11 STORE OTX COPY A,MOD12 STORE OTX COPY A,MOD14 STORE OTX COPY A,MOD20 STORE OTX  COPY A,MOD21 STORE OTX COPY A,MOD22 STORE OTX COPY A,MOD24 STORE OTX COPY INA,A OR CRTDA,A OR =1,A COPY A,CRT1G STORE INA COPY A,CRT3F STORE INA COPY A,MOD1A1 STORE INA COPY A,MOD13 STORE INA COPY A,MOD23 STORE INA COPY MODFLG,A TEST FOR MODEM ENTRY E JEQ A,CRTST3 JMP MOD1 LPOOL CRTST3 EQU $ COPY ASAVE,A INPUT SENSE REGISTER BITS AND =7,A ISOLATE VALUE ONLY COPY A,OPTNS SAVE TEST OPTIONS BITS COPY CRTAD,X CSK A,=3 TEST FOR LIMIT JMP $+2 JMP CRTST4+1 JUMP IF > LIMIT JEQ A,CRTST6 JUMP IF SENSE REG =0 CRTST5 SUB =1,A DECREMENT A ADD =1,X BUMP TABLE ADDR JNE A,CRTST5 CRTST6 COPY 0(X),X FETCH TEST ADDRESS  JMP 0(X) JUMP TO SELECTED TEST CRTST4 EQU $ COPY CONCRT,A JEQ A,CRTST3 RUN CONTINUOUSLY? JST *0 END OF TEST HALT JMP CRTST3 CRTAD WORD CRTTBL CONCRT WORD 0000 LPOOL  TITL DIOCRT ROTATING PATTERN (TEST 1) ****************************************** * TEST 1 * AUTO OUT ROTATING TEST ****************************************** CRT100 ENT IMS SUBFLG SET SUBROUTINE FLAG CRT1 EQU $ COPY  =:100,X FETCH RESET CODE CRT10 OUT X,0*8+0 ISSUE RESET COPY =-39,A COPY A,CPL COPY =-24,A  LINE/COUNT COPY A,LINES COPY =SPACE,A COPY A,FIRST SAVE COPY A,CHARSV COPY =CRTOUT,X FETCH OUTPUT BUFFER ADDRESS COPY =:8C,A SHIFT A,LO,8 COPY A,0(X) JMP CRT1A CRT1Z EQU  $ COPY =CRTOUT,X FETCH BUFFER ADDRESS COPY =CRET,A SHIFT A,LO,8 LEFT JUSTIFY ADD =LF,A ADD LINE FEED COPY A,0(X) STORE IN BUFFER CRT1A ADD =1,X BUMP ADDRESS COPY CHARSV,A FETCH CHARACTER CLSN =:5E,A LINE PRINTER LIMIT? JMP CRT1I JUMP IF YES SHIFT A,LO,8 LEFT JUSTIFY CHARACTER IMS CHARSV OR CHARSV,A COPY A,0(X) STORE IN BUFFER COPY CHARSV,A FETCH LAST CHARACTER CLSN =:5E,A LINE PRINTER LIMIT??? JMP CRT1B JUMP IF YES ADD =1,A BUMP CHARACTER JMP $+2 CRT1B COPY =SPACE,A COPY A,CHARSV IMS CPL BUMP CHARACTER/LINE COUNT JMP CRT1A JUMP IF NOT FULL LINE ADD =1,X BUMP ADDRESS COPY =CRET,A CARRIAGE RETURN SHIFT A,LO,8 COPY A,0(X) STORE IN BUFFER COPY =-CHLINE/2+1,A COPY A,CPL CRT1C COPY =CRET,A CARRIAGE RETURN SHIFT A,LO,8 ADD =LF,A LINE FEED COPY A,0(X) CRT1D EQU $ COPY FIRST,A FETCH FIRST CHARACTER ADD =1,A BUMP BY ONE COPY A,FIRST COPY A,CHARSV * * FORM DIO PORT WORD AND START OUTPUT * COPY X,A SAVE X IN A SUB =CRTOUT,A SUBTRACT START ADDR TO * FIND LENGTH... ADD =1,A SHIFT A,LO,1 FORM BYTE COUNT SUB =2,A REDUCE COUNT BY 2 NEG A,A TWOS COMPLEMENT COPY CRTIL,X FETCH INT. VECTOR ADDR COPY A,AIOCNT(X) COPY =CRTOUT,A FETCH BUFFER ADDRESS SHIFT A,LO,1 FORM BYTE ADDRESS SUB =1,A MINUS 1 COPY A,AIOADR(X) STORE ADDRESS FOR EOB COPY =1,A COPY A,AIOCHN(X) SET FOR NO WORD CHAINING COPY CRT1E1,A FETCH INT. RETURN ADDRESSF  COPY A,EOBADR(X) STORE EOB TRANSFER ADDRESS COPY AOB,A FETCH AOB COMMAND OR CRTDA,A FORM COMMAND W/DEV. ADDR. COPY A,AIOCMD(X) STORE AUTO I/O COMMAND SBIT 8,S ENABLE INTERRUPTS COPY =:613,X (OUTPUT) CRT1E OUT X,0 START AOB JMP $ WAIT FOR EOB INTERRUPT JMP CRT11 * CRT1E1 EQU  $ WORD CRT1F CRT1F EQU $ END OF BLOCK INT. ROUTINE ENT CRT1G IN 0*8+0,A INPUT STATUS COPY A,CRT1K SAVE STATUS COPY MODSFG,A FETCH MODEM STATUS FLAG JEQ A,CRT1G1 JUMP IF NOT MODEM COPY CRT1K,A AND =4,A JMP CRT1G2 CRT1G1 COPY CRT1K,A AND =:36,A XOR =:14,A CRT1G2 EQU  $ JEQ A,$+2 CRT1G3 JST *0 * TEST1 OR TEST2 SBIT 8,S COPY CRTIL,X INTERRUPT LOCATION  COPY AIOCNT(X),A GET THE BYTE COUNT SHIFT A,LO,1 TEST IF IT GOES TO :8000 JNE A,CRT1G3 NO, HALT PROGRAM IMS CRT1F BUMP RETURN ADDRESS JMP *CRT1F RETURN CRT11 EQU $ IMS LINES BUMP LINE COUNT JMP $+2 JMP CRT1J JMP CRT1Z CRT1I EQU $ SHIFT A,LO,8 LEFT JUSTIFY  OR =SPACE,A COPY A,0(X) STORE IN BUFFER COPY =SPACE,A * ADD =1,A JMP CRT1B+1 CRT1J EQU $ COPY SUBFLG,A FETCH SUBROUTINE FLAG JNE A,CRT2 JUMP IF SET COPY ASAVE,A  JEQ A,CRT2 JMP CRTST4 CRT1K WORD 0 LPOOL * TITL DIOCRT ALIGNMENT PATTERN (TEST 2) ******************************************* * TEST 2 * ALIGNMENT TEST ******************************************* CRT2 EQU $  COPY =:100,X FETCH RESET CODE CRT20 OUT X,0*8+0 ISSUE RESET COPY =-24,A COPY A,LINES LINES/PAGE COPY CRTPT1,A TOP OF FORM CRT22 COPY A,CRTPT3 PLACE IN BUFFER CRT21 EQU $ COPY CRTIL,X INT. VECT. ADDR COPY CRTPT2,A COPY A,AIOADR(X) BUFFER POINTER COPY AOB,A FETCH AOB COMMAND OR CRTDA,A FORM COMMAND W/DEV. ADDR. COPY A,AIOCMD(X) STORE AUTO I/O COMMAND COPY =-CHLINE,A 80 CHARATERS  JMP CRT2B2 CRT2B EQU $ COPY =-CHLINE,A CHARACTERS PER LINE CRT2B2 EQU $ COPY A,AIOCNT(X) COPY CRT1F-1,A FETCH RETURN ADDRESS COPY A,EOBADR(X) STORE FOR EOB INT. JST SBIT 8,S ENABLE INTERRUPTS  COPY =:613,X (OUTPUT) CRT2C OUT X,0*8+0 JMP $ WAIT FOR INTERRUPT CRT2D EQU $ IMS LINES BUMP LINE COUNT JMP $+2 JMP CRT2F COPY CRTBFE,A CR AND LF JMP CRT22 * CRT2F EQU  $ COPY SUBFLG,A FETCH SUBROUTINE FLAG JNE A,$+2 JUMP IF SET JMP CRTST4 NOT SUBROUTINE ENTRY COPY =0,A COPY A,SUBFLG CLEAR SUBROUTINE FLAG COPY CRT100,Y JMP 0(Y) RETURN TO CALLER * SUBFLG WORD 0 AOB1 AOB 0*8+0 LPOOL TITL DIOCRT KEYBOARD TEST (TEST 3) * * TEST 3 - KEYBOARD TEST * THIS TEST ALLOWS THE USER TO INPUT UP TO 72 * CHARACTERS. TERMINATED WITH A CARRIAGE * RETURN. THE CHARACTERS THAT WERE INPUT G WILL * BE PRINTED OUT DIRECTLY BELOW THE INPUT STRING. * THE USER SHOULD VERIFY THAT THE TWO LINES ARE * IDENTICAL. THE USER MAY SELECT WHETHER HE * USES ASCII MODE OR NON ASCII MODE FOR INPUT. * IF THE FIRST CHARACTER ENTERED IS A '@' THE * KEYBOARD ENTRY WILL BE IN NON ASCII MODE, * OTHERWISE ALL KEYBOARD ENTRIES FOR THE CURRENT * STRING OF CHARACTERS WILL BE IN THE ASCII MODE. * ALL OUTPUT WILL BE IN NON ASCII MODE. * CRT300 ENT IMS SUBFLG SET SUBROUTINE FLAG CRT3 EQU $ COPY =:100,X FETCH RESET CODE CRT3A1 OUT X,0*8+0 RESET PICO PROCESSOR COPY =-100,A CLEAR COPY A,BFLMT INPUT COPY =CRTIN,X BUFFER COPY =0,A WITH CRT3A2 COPY A,0(X) ALL ADD =1,X ZEROS  IMS BFLMT * JMP CRT3A2 COPY A,CHCNTR CLEAR CHAR COUNTER COPY CRTIL,X FETCH INT. VECTOR ADDRESS COPY =CRT3E,A COPY A,EOBADR(X) COPY CRTBFR,A SHIFT A,LO,1 SUB =1,A COPY A,AIOADR(X) COPY =-4,A COPY A,AIOCNT(X) COPY AOB,A OR CRTDA,A COPY A,AIOCMD(X) SBIT 8,S ENABLE INTERRUPTS COPY =:1613,X CRT301 OUT X,0*8+0 CARRIAGE RETURN LINE FEED JMP $ COPY CRTIL,X FETCH INT. VECTOR ADDRESS COPY =CRTIN,A SHIFT A,LO,1 CONVERT TO BYTE ADDRESS  SUB =1,A -1 COPY A,AIOADR(X) STORE BUFFER ADDRESS IN VECT. COPY AIB,A FETCH AUTO I/O COMMAND OR CRTDA,A FORM COMMAND+DEVICE ADDR COPY A,AIOCMD(X) COPY =-1,A COPY A,AIOCNT(X) CRT3A  EQU $ SBIT 8,S COPY =:1E18,X CRT3B OUT X,0*8+0 JMP $ COPY CRTIL,X COPY AIOADR(X),A FETCH BUFFER ADDRESS SHIFT A,RO,1 CONVERT TO WORD ADDRESS COPY A,BFWORK COPY BFWORK,Y  COPY 0(Y),A FETCH INPUT CHARACTER SHIFT A,RO,8 RIGHT JUSTIFY SUB =:8C,A TEST FOR CLEAR SCREEN CODE  JNE A,$+2 JUMP IF NOT CLEAR JMP CRT3 JUMP IF CLEAR SCREEN CODE COPY =-71,A COPY A,AIOCNT(X) SET COUNT FOR MAX LIMIT COPY =:1E18,X FETCH COMMAND WORD CRT3B0 OUT X,0*8+0 JMP $ COPY CRTIL,X FETCH INT. VECTOR ADDRESS COPY AIOCNT(X),A COMPUTE ECHO BACK SHIFT A,LO,1 WATCH OUT FOR 8000  JEQ A,CRTB2 COPY AIOCNT(X),A CRTB2 NEG A,A SUB =76,A ECHO BACK COPY A,AIOCNT(X) CRT3B1 EQU $ COPY CRTBFR,A SHIFT A,LO,1 SUB =1,A COPY A,AIOADR(X) COPY AOB1,A OR CRTDA,A COPY A,AIOCMD(X) SET FOR AOB COMMAND SBIT 8,S CRT3C COPY =:613,X (OUTPUT) CRT3D OUT X,0*8+0 JMP $ COPY SUBFLG,A FETCH SUBROUTINE FLAG JNE A,$+2 JUMP IF SET JMP CRTST4 NOT SUBROUTINE ENTRY COPY =0,A COPY A,SUBFLG CLEAR SUBROUTINE FLAG JMP *CRT300 RETURN TO CALLER CRTBFR WORD CRTBFE LPOOL CRT3E ENT CRT3F IN 0*8+0,A INPUT STATUS SBIT 8,S ENABLE INTERRUPTS IMS CRT3E JMP *CRT3E * CRT3G EQU $ COPY CRTIL,X FETCH INT. VECTOR ADDRESS COPY =-1,A COPYH  A,AIOCNT(X) SET AUTO I/O COUNT -1 COPY =:1618,X (ECHO-INPUT) CRT3H OUT X,0*8+0 JMP $ COPY CRTIL,X FETCH INT. VECTOR ADDRESS COPY AIOADR(X),A FETCH INPUT BUFFER ADDRESS SHIFT A,RO,1 CONVERT TO WORD ADDRESS COPY A,BFWORK COPY BFWORK,Y COPY 0(Y),A FETCH INPUT CHARACTER COPY A,X TO A AND X CRT3H1 SHIFT A,RO,8 RIGHT JUSTIFY LEFT BYTE SHIFT X,LO,8 LEFT JUSTIFY RIGHT BYTE SUB =:0D,A TEST FOR CHARIAGE RET. JEQ A,CRT3I JUMP IF C/R COPY X,A JNE X,CRT3H1 JUMP IF ANOTHER CHARACTER IMS CHCNTR BUMP CHARACTER COUNTER JMP CRT3G CRT3I COPY CHCNTR,A FETCH CHARACTER COUNT ADD =6,A  ADJUST COUNT NEG A,A COPY CRTIL,X COPY A,AIOCNT(X) SET COUNT FOR OUTPUT JMP CRT3B1 CRTTBL WORD CRT1 WORD CRT1 WORD CRT2 WORD CRT3 LPOOL TITL BUFFERS AND WORD * *MAIN WORD BUFFERS * * * CRTPT1 WORD :8C00 CRTPT2 WORD 2*CRTBUF-3 CRTPT3 WORD :8C8A CRTBUF BYTE ' !"#$%&''()*+,-./0123' BYTE '456789:;.=>?@ABCDEFG' BYTE 'HIJKLMNOPQRSTUVWXYZ' WORD :DBDC,:DDDE BYTE ' !"#$%&''()*+,-' CRTBFE WORD :8D8A CRTIN RES 100 INPUT BUFFER CRTOUT RES 100 OUTPUT BUFFER * * * TITL MODEM MANUAL TEST  ROUND ****** * THE FOLLOWING ROUTINES ARE DESIGNED TO * TEST THE MODEM PICO STATUS BITS. MANUAL * INTERVENTION IS REQUIRED. DIRECTIONS * WILL BE OUTPUT TO THE CRT SCREEN. IT IS * ADVISABLE THAT THE CRT TEST (DIOCRT) BE * RUN TO VERIFY THAT CHARACTERS CAN BE SENT * TO AND FROM THE CRT. ****** * MODEMB EQU $ JMP MODEM1 MODEM2 IMS  MODFLG NOP IMS MODSFG SET MODEM STATUS FLAG JMP CRTS1A MODEM1 IMS MODFLG SET MODEM FLAG  NOP IMS MODSFG SET MODEM STATUS FLAG JMP CRTS2B * ****** * OUTPUT MESSAGE TO TURN CRT OFF AND BACK ON * .... WAIT FOR CRT POWER ON.... AND EOB. ****** * TITL MODEM MANUAL TEST 1 MOD1 EQU $ COPY =:100,X RESET CODE MOD10 OUT X,0*8+0 ISSUE RESET COPY =-30,A MESSAGE LENGTH COPY CRTIL,X COPY  A,AIOCNT(X) COPY =MODMS1,A MESSAGE ADDRESS - SHIFT A,LO,1 TO BYTE ADDRESS- SUB =1,A -1  COPY A,AIOADR(X) COPY =CRT1F,A EOB ROUTINE ADDRESS COPY A,EOBADR(X) COPY AOB,A OR CRTDA,A COPY A,AIOCMD(X) COPY =:613,X OUTPUT COMMAND SBIT 8,S ENABLE INTERRUPTS MOD11 OUT X,0*8+0 JMP $ COPY =-30,A COPY CRTIL,X COPY A,AIOCNT(X) COPY =MODMS3,A MESSAGE ADDRESS - SHIFT A,LO,1 TO BYTE ADDRESS - SUB =1,A -1 COPY A,AIOADR(X) SBIT 8,S ENABLE INTERRUPTS COPY =:613,X MOD12 OUT X,0*8+0 JMP $ MOD13 IN 0*8+0,A FETCH STATUS AND =4,A TEST FOR WORD SET READY JEQ A,MOD13 JUMP IF WORD SET READY COPY =MOD1A,A EOB ROUTINE ADDRESS  COPY CRTIL,X COPY A,EOBADR(X) COPY =0,A JST WAIT WAIT TWICE JST WAIT SBIT I  8,S COPY =:1E48,X INPUT MODE CODE MOD14 OUT X,0*8+0 JMP $ JST CRT300 ALLOW USER TO ENTER CHARS * VIA KEYBOARD COPY =0,A ADD =1,A JNE A,$-1 JMP MOD2 LPOOL * MOD1A ENT COPY =0,A ADD =1,A JNE A,$-1 MOD1A1 IN 0*8+0,A AND =4,A TEST FOR WORD SET READY JEQ A,$+2 HLT SBIT 8,S IMS MOD1A JMP *MOD1A * TITL MODEM MANUAL TEST 2 MOD2 EQU $ COPY =:100,X RESET CODE MOD20 OUT X,0*8+0 ISSUE RESET COPY =-30,A COPY CRTIL,X COPY A,AIOCNT(X) STORE MESSAGE LENGTH COPY =MODMS2,A MESSAGE ADDRESS - SHIFT A,LO,1 TO BYTE ADDRESS - SUB =1,A -1 COPY A,AIOADR(X) COPY =CRT1F,A EOB ROUTINE COPY A,EOBADR(X) COPY AOB,A OR CRTDA,A COPY A,AIOCMD(X) SBIT 8,S ENABLE INTERRUPTS COPY  =:613,X OUTPUT CODE MOD21 OUT X,0*8+0 JMP $ COPY =MODMS3,A SHIFT A,LO,1 SUB =1,A  COPY CRTIL,X COPY A,AIOADR(X) COPY =-30,A COPY A,AIOCNT(X) SBIT 8,S ENABLE INTERRUPTS COPY =:613,X MOD22 OUT X,0*8+0 JMP $ MOD23 IN 0*8+0,A READ STATUS AND =4,A TEST FOR WORD SET READY JEQ A,MOD23 JUMP IF OV COPY CRTIL,X COPY =MOD1A,A EOB ADDRESS COPY  A,EOBADR(X) COPY CRTIL,X COPY =-2,A COPY A,AIOCNT(X) COPY =MODMS1,A SHIFT A,LO,1  SUB =1,A COPY A,AIOADR(X) SBIT 8,S ENABLE INTERRUPTS COPY =:643,X MOD24 OUT X,0*8+0 JMP $ COPY =0,A ADD =1,A JNE A,$-1 JST CRT100 JMP MOD1 LPOOL MODMS1 WORD :8C8A BYTE ' WORD SET READY (INPUT MODE)' MODMS2 EQU $ WORD :8C8A BYTE ' WORD SET READY(OUTPUT MODE)' MODMS3 EQU $ WORD :8D8A BYTE 'TURN OFF CRT - THEN BACK ON ' ERROR ENT COPY A,ASAVE COPY ERROR,A GET THE -P- REGISTER SUB =1,A SELP A,4 OUTPUT IT TO CONSOLE HLT  COPY ASAVE,A RESTORE -A- REGISTER JMP *ERROR ASAVE RES 1,0 WAIT1 RES 1,0 WAIT ENT NEG A,A  COPY A,WAIT1 WLOOP SBIT 8,S IMS WAIT1 JMP WLOOP JMP *WAIT END BYTE ' WORD SET READY(OUTPUT MODE)' MODMS3 EQU $ WORD :8D8A BYTE 'TURN OFF CRT - THEN BACK ON ' ERROR ENT COPY A,ASAVE COPY ERROR,A GET THE -P- REGISTER SUB =1,A SELP A,4 OUTPUT IT TO CONSOLE HLT YIL,X 0471 08FF 0669 COPY =-1,A SET FOR ONE CHAR. 0472 8481 0001 0670 COPY A,AIOCNT(X) 0473 8271 0465 0671 COPY =INBUF,A SET BYTE ADDR.-1 0474 0E01 0672 SHIFT A,LO,1 0475 0AFF 0673 SUB =1,A 0476 8482 0002 0674 COPY A,AIOADR(X) 0477 0E85 0675 SBIT 8,S ENABLE INTERRUPTS 0478 A36F 0468 0676 COPY TTYRD,X COMMAND WORD 0479 2200 067J 7 TTY2C OUT X,0*8+0 047A 9E7F 047A 0678 JMP $ 0679 * 0680 * VERIFY EACH BYTE READ 0681 * 047B 8269 0465 0682 COPY =INBUF,A FETCH BUFFER ADDR 047C 8729 0426 0683 COPY A,BFWORK 047D E328 0426 0684 COPY BFWORK,Y 047E 8040 0000 0685 COPY 0(Y),A FETCH CHAR WORD 047F 0E79 0686 SHIFT A,RO,8 0480 BA62 0463 0687 CSK A,TTY2A1  CHK EXPECTED 0481 0000 0688 NOP 0482 9E8F 0492 0689 JMP TTY2E NOT EQUAL  0690 * 0691 * FORM NEW EXPECTED 0692 * 0483 DFA8 04AC 0693 IMS CHCNTR DONE? 1PAGE 0025 MACRO (F510) dataCASE 5 DISTRIBUTED I/O SYSTEM TEST 93920-16C300 1984/02/17 09:29:50.00 DIOTTY READER TEST (TEST 2) 0484 9E81 0486 0694 JMP TTFRM NO 0485 9E91 0497 0695 JMP TTYEX 0486 83A5 04AC 0696 TTFRM COPY CHCNTR,A COUNTER ODD? 0487 0E0B 0697 ROTATE A,RO,1 0488 3643 048C 0698 JT OV,TTODD YES 0489 8259 0463 0699 COPY TTY2A1,A NO-NOW COMP. FORM 048A 0001 0700 NEG A,A BACK TO CNTR FORM 048B 9E83 048F 0701 JMP TTYOV 048C 8256 0463 0702 TTODD COPY TTY2A1,A YES-NOT COMP. YET 048D 0001 0703 NEG A,A 048E 0AFF 0704  SUB =1,A 048F 18FF 0705 TTYOV AND =:FF,A 0490 8652 0463 0706 COPY A,TTY2A1 NEW EXPECTED 0491 9E5E 0470 0707 JMP TTLOOP 0708 * 0709 * ERROR ROUTINE  0710 * 00000492 0711 TTY2E EQU $ 0492 A250 0463 0712 COPY TTY2A1,X EXPECTED 0493 E312 0426 0713 COPY BFWORK,Y 0494 8040 0000 0714 COPY 0(Y),A 0495 0E79 0715 SHIFT A,RO,8 ACTUAL 0496 0E0D 0716 HLT 0717 * 0718 * READ FOUR MORE CHARACTERS 0719 * 00000497 0720 TTYEX EQU $ 0497 A311 0429 0721 COPY TTYIL,X 0498 08FC 0722 COPY =-4,A SET FOR 4 CHAR. 0499 8481 0001 0723 COPY A,AIOCNT(X) 049A 0E85 0724 SBIT 8,S 049B A34C 0468 0725 COPY TTYRD,X COMMAND WORD 049C 2200 0726 TTY2D OUT X,0*8+0 049D 9E7F 049D 0727 JMP $ 0728 * 049E 9F8E 04AD 0729  JMP TTYST4 REAL END 1PAGE 0026 MACRO (F510) dataCASE 5 DISTRIBUTED I/O SYSTEM TEST 93920-16C300 1984/02/17  09:29:51.50 DIOTTY READER TEST (TEST 2) 049F 0E0D 0730 TTY2F ENT 04A0 0100 0731 TTY2G IN 0*8+0,A READ STATUS 04A1 1810 0732 AND =:10,A TEST FOR GOOD STATUS BIT 04A2 11C1 04A4 0733  JNE A,$+2 JUMP IF OK 04A3 0E0D 0734 TTY2G2 HLT 04A4 0E85 0735 SBIT 8,S ENABLE INTERRUPTS 04A5 A388 04AE 0736 COPY TTYIL,X INTERRUPT LOCATION 04A6 8081 0001 0737 COPYK  AIOCNT(X),A GET THE BYTE COUNT 04A7 0E01 0738 SHIFT A,LO,1 TEST IF IT GO TO :8000 04A8 11BA 04A3 0739 JNE A,TTY2G2 NO, HALT THE PROGRAM 04A9 DE75 049F 0740 IMS TTY2F BUMP RETURN ADDRESS 04AA 9F74 049F 0741 JMP *TTY2F RETURN 0742 * 0004 0743  LPOOL 04AB FE00 04AC 0544 CHCNTR 04AD 03A4 TTYST4 04AE 030F TTYIL 0744 * 1PAGE 0027 MACRO (F510) dataCASE 5 DISTRIBUTED I/O SYSTEM TEST 93920-16C300 1984/02/17 09:29:52.00 DIOTTY PRINTER TEST (TEST 3) 0746  * 0747 * TEST 3 - PRINTER TEST 0748 * THIS TEST OUTPUTS 6 FULL LINES OF PRINT TO BE  0749 * USER VERIFIED BY VISUAL EXAMINATION. THE 0750 * FIRST THREE LINES CONSISTS OF 65 CHARACTERS, 0751 * THE ALPHABET, A SPACE, NUMBERS 0-9, A BELL, 0752 * FOLLOWED BY SPECIAL CHARACTERS. REFER TO 0753 * THE PROGRAM DOCUMENTATION FOR A COMPLETE 0754 * ILLUSTRATION. THE LAST 3 LINES IS THE 0755 * WORST-CASE PRINT WHEEL PATTERN. THIS PATTERN 0756 * CONSISTS OF 63 CHARACTERS OF 'W/@W/@,ETC' 0757 * SETTING THE SENSE SWITCH WHILE THIS TEST IS 0758 * RUNNING WILL CAUSE THIS TEST TO LOOP 0759 * CONTINUOUSLY UNTIL THE SENSE SWITCH IS TURNED 0760 * OFF. 0761 * 000004AF 0762 TTY3 EQU $ 04AF A3F6 0526 0763 COPY RESET,X FETCH RESET CODE 04B0 2200 0764 TTY30A OUT X,0*8+0 RESET PICO PROCESSOR 04B1 08FD 0765 COPY  =-3,A 04B2 87F4 0527 0766 COPY A,LOOP 04B3 A37A 04AE 0767 TTY3A COPY TTYIL,X FETCH INT. VECTOR ADDRESS 04B4 82F3 0528 0768 COPY =T3BUF0,A BUFFER ADDRESS 04B5 0E01 0769 SHIFT A,LO,1 04B6 0AFF 0770 SUB =1,A 04B7 8482 0002 0771 COPY A,AIOADR(X) 04B8 83F0 0529 0772  COPY AOB,A 04B9 B7F0 052A 0773 OR TTYDA1,A FORM DEV ADDR 04BA 8480 0000 0774 COPY A,AIOCMD(X) 04BB 08BA 0775 COPY =-T3BF1E,A 04BC 8481 0001 0776 COPY A,AIOCNT(X) 04BD 0901  0777 COPY =1,A 04BE 8483 0003 0778 COPY A,AIOCHN(X) 04BF 82EB 052B 0779 COPY =TTY3G,A EOB ADDRESS 04C0 8485 0005 0780 COPY A,EOBADR(X) 04C1 83EA 052C 0781 COPY WLEN,A  FETCH WORD LENGTH 1PAGE 0028 MACRO (F510) dataCASE 5 DISTRIBUTED I/O SYSTEM TEST 93920-16C300 1984/02/17 09:29:53.50 DIOTTY PRINTER TEST (TEST 3) 04C2 0AF8 0782 SUB =8,A SUBTRACT 8 BIT LENGTH 04C3 1155 04D9 0783 JEQ A,TTY3A1 JUMP IF 8 BIT 04C4 82E3 0528 0784 COPY =T3BUF0,A FETCH BUFFER ADDRESS 04C5 2946 0785 COPY =T3BF1E,X FETCH LENGTH OF BUFFER 04C6 2E09 0786 SHIFT X,RO,1  CONVERT TO WORD LENGTH 04C7 2021 0787 NEG X,X NEGATE LENGTH 04C8 A7E6 052F 0788 L COPY X,BFLMT SAVE LIMIT 04C9 A2E3 052D 0789 COPY =OUTBUF,X ADDRESS OF RECEIVING BUFFER 04CA 87E6 0531 0790 COPY A,BFWORK 04CB E3E5 0531 0791 TTY300 COPY BFWORK,Y 04CC 8040 0000 0792 COPY  0(Y),A FETCH PRINTER OUTPUT 04CD 97E0 052E 0793 AND WMASK,A FORM PROPER BIT SIZE 04CE 8480 0000 0794 COPY A,0(X) MOVE TO OUTPUT BUFFER 04CF 2B01 0795 ADD =1,X 04D0 DFE0 0531 0796 IMS BFWORK 04D1 0000 0797 NOP 04D2 DFDC 052F 0798 IMS BFLMT 04D3 9E77 04CB 0799 JMP TTY300 04D4 82D8 052D 0800 COPY =OUTBUF,A OUTPUT BUFFER ADDRESS 04D5 0E01 0801 SHIFT A,LO,1 IN BYTES 04D6 0AFF 0802 SUB =1,A -1 04D7 A356 04AE 0803  COPY TTYIL,X TO 04D8 8480 0000 0804 COPY A,0(X) INT. VECTOR BLOCK 000004D9 0805 TTY3A1 EQU $ 04D9 0E85 0806 SBIT 8,S ENABLE INTERRUPTS 04DA A3D8 0533 0807 COPY OUT,X FETCH COMMAND WORD 04DB 2200 0808 TTY3B OUT X,0*8+0 04DC 9E7F 04DC 0809 JMP  $ 04DD DEE5 0543 0810 IMS LOOP 04DE 9E54 04B3 0811 JMP TTY3A 04DF 08FD 0812 COPY =-3,A 04E0 86E2 0543 0813 COPY A,LOOP 04E1 A2CB 052D 0814 COPY =OUTBUF,X 04E2 A7CE 0531 0815 COPY X,BFWORK 04E3 28E1 0816 COPY =-31,X 04E4 A6DF 0544 0817 COPY X,CHCNTR 1PAGE 0029 MACRO (F510) dataCASE 5 DISTRIBUTED I/O SYSTEM TEST 93920-16C300 1984/02/17 09:29:55.50 DIOTTY PRINTER TEST (TEST 3) 04E5 82CA 0530 0818 COPY =:8D8A,A 04E6 97C7 052E 0819 AND WMASK,A FORM PROPER WORD SIZE 04E7 E3C9 0531 0820 COPY BFWORK,Y 04E8 8440 0000 0821 COPY A,0(Y) 04E9 DFC7 0531  0822 IMS BFWORK 04EA 0900 0823 COPY =0,A 04EB E3C5 0531 0824 COPY BFWORK,Y  04EC 8440 0000 0825 COPY A,0(Y) 04ED DFC3 0531 0826 IMS BFWORK BUMP ADDRESS 04EE A2C3 0532 0827 COPY =T3BUF2,X 04EF 8080 0000 0828 TTY3C COPY 0(X),A FETCH 'W' 04F0 0E71 0829  SHIFT A,LO,8 LEFT JUSTIFY 04F1 B481 0001 0830 OR 1(X),A FORM 'W/' 04F2 97BB 052E 0831 AND WMASK,A FORM PROPER WORD SIZE 04F3 E3BD 0531 0832 COPY BFWORK,Y 04F4 8440 0000 0833 COPY A,0(Y) STORE IN BUFFER 04F5 DFBB 0531 0834 IMS BFWORK BUMP ADDR. 04F6 0000  0835 NOP 04F7 DECC 0544 0836 IMS CHCNTR BUMP CHARACTER COUNT 04F8 9E87 0500 0837  JMP TTY3D 04F9 0940 0838 TTY3C2 COPY ='@',A FILL BUFFER 04FA 0E71 0839 SHIFT ’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I