IMD 1.16: 2/09/2008 12:11:08 84-93860-20-a0 f86020 async comm contrl source diag    @0{)vvЀЀsQpk)p " }fA __M@OS4 MB084062914514250840629145142 840629145142 F86020 VOLSOURCE 84-93860-20     _M@qGyy GGG`HX@ b G`^Y e GQ @@p@987 85P@ G:پN 8)0. * C'xC# b# }B+> @0DAJL w+™ЀЀΖQA1"   i  ž} š} @EEFF)DEۄF8 џ} ԟ} ̟} * `jUBBI,v BI, # @ G7H@pܾrCHC C GTq` Lg gEXC P+s=胾P+c fQN p $Rxnj  ޔniZ ތ⊞ } }HGž Ÿ@ALS)"$ C k20j.h( +$`%ꂜ\1 !M' y %'+os慾)sY ed|{ @8 o O m J K i gN )V% t%sLn`"E F. F„ D>) =`;nrgy w"G,{Kq1 A&}E*`(t@% ;c  765y342(.OS:: SYSG @ @G6BDāCGDĀ# BC @E OB.CE .F1 Asynchronous Communication Controller Page # .F3 Theory of Operations 91-53983-01-A0 .SP 5 ASYNCHRONOUS COMMUNICATION CONTROLLER .SP 2 .CE THEORY OF OPERATIONS .SP 2 .CE 91-53983-01-A0 .SP 2 .CE PRELIMINARY .BP .CE .SP 6 TABLE OF CONTENTS .SP 4 1. SCOPE..............................3 .SP 2 2. GENERAL DESCRIPTION................3 .SP 2 3. LOGICS.............................3 .BP .UL 1. SCOPE .SP 2 .ju .fi This document provides a general operational overview as well as a sheet-by-sheet description of the logics (75-53983-01) .SP 4 .ul 2. GENERAL DESCRIPTION .SP 2 The ACC operates in two modes of data transfer. .sp - Programmed I/O - Auto I/O. .sp Programmed I/O requires only that the correct UART be selected. The S/W is responsible for all checking of status bits. Auto I/O requires that the board generate an interrupt for data or EOB after a status check (on board) has been performed. .sp .fi .ju Auto I/O is implemented by using a polling clock that sequences through all channels (0-15) doing status reads, checking for a data interrupt or an EOB interrupt. When an interrupt request occurs the clock stops polling until the request is serviced. The channel interrupt enable RAM and the EOB Flag RAM are sequenced through  concurrently with the channel status. The poll clock channel address in combination with the switch offset and the End-Of-Block Flag provide the interrupt address. Once the channel interrupt is serviced, the poll clock will continue to the next channel. .sp If data interrupts are disabled, the polling clock will continue to poll for EOB interrupts and similarly if EOB interrupts are disabled the poll clock will continue to poll for data interrupts. .sp The poll clock stops its polling cycle during programmed I/O operations to the ACC and resumes polling after the operation is completed. .sp 4 .ul 3. LOGICS .sp 2 Sheets 1-3 of the logics do not contain any gates and therefore are not discussed. .BP .ul 3.1 SHEET 3 .sp 2 .FI .JU The device address compare is a standard exclusive or implementation with AB00 being the function code (asserted is command/status mode, unasserted is data mode) and AB01-AB04 are used to select one of 16 channels (transmit and receive are considered seperate channels although they are the same "port"). The actual board device address is decoded on bits AB05-AB07. .sp The UIS flip-flops are used to selectively disable data and EOB interrupts. INBTDI (inhibit data interrupts) and INBTEB (inhibit EOB interrupts) provide the gating terms that are updated by S/W execution of a UIS instruction in conjunction with the Processor Status Word bits 12 and 13 respectively (AB12, AB13). .sp Demultiplexing of port selection is done by the 74LS138's. The control terms ENDIN, ENRST etc..., are decoded from Maxibus signals by the PROM at zone 31C. .sp The channel status (zone 18A-B) decode is used "externally" by the software to obtain channel status, and internally for use in Auto I/O mode. The channel is either decoded by AB01-AB03 or from the internal polling circuit at zone B34. .sp 4 .ul .CO 1 3.2 SHEET 4 .sp 2 .FI .JU .sp The parity standardization circuit is used to set the MSB (most significant bit) to a "O" or "1" as determined by SW2 (element 4-13). If 7 bit ASCII is used it may be desirable to "mask off" the MSB in hardware. .bp IC 24 is the PROM decoder which decodes commands from the MAXIBUS according to the following equations. .sp 2 .CO 6 ENRST = OUT- . DA- . ABOOI- . DBO8- (:X1XX) ENCMD = OUT- . DA- . ABOOI- . DB09- . DB08 (:X2XX) ENSEL = OUT- . DA- . ABOOI- . DB10- . DB08 (:X4XX) ENOUT = OUT- . DA- . ABOOI OTCMP = OUT- . DA- LOADSC = OUT- . DA- . DB10 . DB09 . DB08 (:XOXX) .sp 2 .ju .fi The priority chain circuitry located at zone A31 and B26 allows use of this board with any standard NM4 halfcard. When mounted next to a half card processor the priority chains must be passed via a jumper block (J1). .sp In interrupt mode an (internal) interrupt service request (INTSRQ) is presented to the interrupt flip-flop at zone B29. As defined in the PI specifications the INTSRQ will be clocked in on the rising edge of I/O clock.  If the board has priority (PRIN) a system interrupt request is generated (IUR). When the INTSRQ signal is asserted the pollclock stops and is not restarted until an IAR (interrupt address request) is generated. The IAR will reset the INTSRQ signal but IUR will be asserted until PRIN goes away (higher priority device) or the next rising edge of IOCLK clears the IUR F/F (flip-flop ). .sp The MAXIBUS signal SER is asserted when a device address match occurs. This allows software detection of the ACC. By executing an SST command with the proper device address SER is driven "true". Only the ACC will respond to this command, not the EIO, DIO, or Async Mux. .sp 4 .ul .CO 1 3.3 SHEET 5 .sp 2 .FI .JU The EOB (End-of-Block) flags are stored in a 74S189 RAM (I.C. 40 zone C37). These EOB flags must be cleared at power-up prior to any Auto I/O operations. (They are not used in programmed I/O). There are 16 possible EOB flags and they all must be cleared via the reset command: .sp .CO 2 OUT :0100,DAFC where DA = 0-15 FC = 1 (command) .sp .fi .ju Once initialized an EOB flag is written into the RAM if a PSTEBF (posted EOB flag) occurs or if the byte count goes to zero (Processor generated ECHO signal). .sp .BP A PSTEBF is generated under the following conditions: .sp .CO 2 1. PSTEBF = RINTEN . (overrun + parity + framing + special character) + TINTEN . (EOB on loss of CTS option) .sp .ju An EOB flag is written into RAM but does not generate an interrupt until the polling clock comes back to the specific channel. (i.e. a flag is written into RAM when the last character is transfered (received or transmitted). When that channel is polled again the EOB interrupt is generated. .sp The flip-flop at zone D34 is used to assure no interrupts occur prior to "software initialization". The flip-flop will be set (allowing interrupts to occur) when channel 15 has been reset. .sp At zone B38 IC 17 is used to select between the software generated channel address and the internal polling channel address. When in the polling mode (POLLING low) address poll 0-3 (ADPOL0-3) are used to sequence through each channel looking for interrupt requests (EOB or data). .sp The interrupt control and poll clock is controlled by a state machine (IC 1&2). The state machine posts interrupts and increments the poll-clock when required. The sample rate is 2 MHZ . .sp 4 .ul .CO 1 3.4 SHEET 6 .sp 2 .FI .JU The Data Interrupt Enable Flags are used to enable/disable data interrupts on each channel. There are 16 channels and only one interrupt can be enabled per channel. The flags power up in an unknown state and must be reset (all 16 channels) prior to use of Auto I/O. (The same operation that clears the EOB flags will clear the data interrupt flags). .sp The Data Interrupt Flags are set when software issues a start transmit or start receive command: .sp .co 2 OUT :212,DAFC enable transmit interrupt OUT :210,DAFC enable receive interrupt .sp The Data Interrupt Flags are reset by: .sp .co 3 1. Reset command. 2. Start command with interrupts disabled.  3. EOB service. .sp The interrupt vector address is generated from the poll clock address bits, the EOB flag if present, and the interrupt offset as determined by SW1 5-8. The Interrupt address is gated onto the data bus when IAR is asserted. (zone C42). .sp The PSTEBF signal as described earlier is implemented at zone A 45-42. This signal writes the EOB flags into RAM. .sp The Multi-Special Character Detect RAM (IC50 zone B46) contains up to a possible 256 special characters per channel (used only o n AIO operations). The RAM powers up in an unknown state and before any Auto I/O is done all characters on all channels must be cleared (reset). .sp The reset routine is as follows: .sp .CO 4 OUT :80XX,DAFC FOR XX FROM :00 to :FF  FOR CHANNEL 0 to 7 FC = 1 (command) .sp To set special characters: .sp OUT :88XX,DAFC Where XX is the special character. .sp 2 .fi .ju The XX and the channel address (part of the device address) are used to address specific RAM locations. DB11 (:08XX) is the data that is written into the RAM. As shown above to set a special character DB11 is asserted, and to remove a special character DB11 is unasserted. Once the RAM is setup and an AIO is begun, the incoming data is presented as an address to the RAM (IDB0-7) as is the channel address (FLPOLO-3). The operation results in a MSCD RAM read. If the data output is a "1" the character is a match. If it is a "0" there is no match. To generate an interrupt (EOB) the enable special character detect (DB13) must also be issued when the start receive command is issued. .sp 4 .ul .CO 1 3.5 SHEET 7 .sp 2 .FI .JU The baud rates are generated from an 8.0 MHZ crystal (or optionally an oscillator) which is divided by two to obtain a 4 MHZ clock into a counter/divider (IC12 zone C51). The counter is loaded with a value of three (A + B inputs) when a carry occurs (CY) resulting in a divide- by-thirteen circuit and producing a 307.7 KHZ clock at the MSB output ("Qd pin"). The carry bit (CY) also produces a 307.7 KHZ clock for use as the clock input to a 74393 to produce the rest of the baud rates listed on the next page. .sp 2 .bp .CO 11 4.0 MHZ / 13 = 307.7KHZ x 16 = 19231 .sp % Deviation 19231.0 X 16 .16 9615.5 X 16  .16 4807.7 X 16 .16 2403.8 X 16 .16 1201.9 X 16 .16 600.9 X 16 .16 300.5 X 16 .16 150.2 X 16 .16 75.1 X 16 .16 .sp 2 .fi .ju The baud clocks are brought out to connector J3 so that each channel can be indenpendently strapped for its particular baud rate. .sp 4 .ul .CO 1 3.6 SHEETS 8-11 .sp2 .FI .JU The UARTS are interconnected via two separate buses, the Internal Data Bus (IDB0-7) and the Receive Data Bus (RDB0-7). The Receive Data Bus is gated onto the Internal Data Bus via IC's 52 & 53 zone A60. Each UART has its individual jumper block which sets the following options: .sp 2 .CO 5 WLSI - Word Length Select WLS2 - " PI - Parity enable EPE - Even parity Enable SBS - Stop Bits Select .sp 2 .fi .ju The UART status word is gated onto RDB0-7 and then onto IDB0-7 during status reads and while in the polling mode. .sp The RS-232-C signals are implemented using standard 1488, 1489 drivers and receivers. Capacitors on the output provide slew rate limiting capability and capacitors on the inputs allow for input wave shaping. .sp The RS-232-C signal outputs are established by software via a set mode command. A set mode command clocks in the data bits IDB0-IDB07 into the octal latch (i.e. zone C90 for ch annel 0). The Auto Echo option is implemented by looping the receive signal back to the transmit channel using open collector gates. N A,='*' JMP QURY45 JMP IF NO NON-CRT TEST AT ALL QURY 42,43,46A,49,401,44,49 QURY43 COPY DICNT,A GET DECIN INPUT CNT JNE A,$+4 HAS INPUT THIS PASS COPY CELL1,A GET INPUT FLAG JEQ A,QURY46 NO DEC IN, NO INPUT ==> DEF JMP QURY40 ELSE ==> ' ,CR' ;ILLE.ce .f1 Asynchronous Communication Controller Page # .f3 Engineering Specification 76-53983-01-A0 .sp 10 .ce ASYNCHRONOUS COMMUNICATION CONTROLLER .sp 2 .CE ENGINEERING SPECIFICATION .SP 2 .ce 76-53983-01-A0 .sp 2 .ce .bp .sp 12 .ce .ul TABLE OF CONTENTS .sp 3 .CO 9 1. Scope.........................................3 .sp 2 2. General Product Description...................3 .sp 2 3. Software......................................4 .sp 2 3.1 Software Compatibility........................4 .sp 2 4. Electrical Specs..............................4 .sp 2 5. Environmental Spec............................4 .sp 2 6. Mechanical Spec...............................5 .sp 2 7. Serviceability................................5 .bp .ul 1. SCOPE .sp 2 .ju .fi This document defines the functional capabilities and physical characteristics of the Asynchronous Communications Controller (ACC). Additional information is available from the following sources: .sp 4 .CO 7 .ul Document Document # .sp PI Specification 76-20797-00 I/O Controller Spec. 76-20931-00 ACC Theory of Operations 91-53983-01 EIA Standard RS-232-C Standard Microsystems Corp. Handbook .sp 2 .ju .fi .ul 2. GENERAL PRODUCT DESCRIPTION .sp 2 The ACC is intended to provide 8 channels of RS-232-C compatible, full duplex serial I/O. The ACC is a non-DMA board which utilizes the Auto I/O capability of NMD processors to obtain high transfer rates with a minimum of CPU overhead. .sp The board has all logic contained on a single half card with a separate "break-out panel" containing the 8 industry standard DB-25 connectors. .sp The ACC has the following functional capabilities and features : .sp .CO 10 - 19.2K baud full duplex operation on all channels simultaneously. - Independent jumper selectable baud rates from 75 to 19.2K baud. - Supports Auto I/O and Programmed I/O. - Double buffered transmit and receive UART. - Independently channel configurable for stop bits, parity and character length. - Auto Echo capability. - Multi-special character detect (up to 256 characters per channel). - Channel configurable for CTS options . .sp 2 .bp .ju .fi .ul 3. SOFTWARE .sp 2 The ACC supports both, the programmed I/O and Auto I/O modes of data transfer. The following S/W commands are utilized by the ACC. .sp OUT IN SST UIS AIB AOB .sp The lower 8 bits of the ADDRESS BUS are decoded as follows for the board device address. .sp 2 .CO 5 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 X X X X X X X X A A A C C C C F .sp 2 .fi .ju A = Device Address C = Channel # (0-15) F = Function code. .sp 2 The function code will select between data (FC=0) and  command/status (FC=1). .sp The board is configurable for an interrupt address range of 0 to 32K (words). .sp .ul 3.1 SOFTWARE COMPATIBILITY .sp The board will be software compatible with DIO programmed I/O so that existing diagnostics will not require new drivers. The Auto I/O mode, however, is not backwards compatible with any existing controllers and hence will require modifications to the existing drivers (specifically board initialization procedures, and the programming of special character detect). .sp 2 .ul .co 1 4. ELECTRICAL SPECIFICATIONS .sp 2 The power requirements for the ACC are as follows: .sp .CO 3 +5.00 V +/- 5% 3.0 A (MAX) +12.00 V +/- 10% 0.2 A (MAX) -12.00 V +/- 10% 0.2 A (MAX) .sp .fi .ju Each serial channel will implement the following RS-232-C signals. To maintain pinout compatibility with the existing CRT cables the following non-standard pinout is used. .sp .bp .CO 9 .sp .UL PIN SIGNAL DIRECTION DESCRIPTION .SP 2  RD (IN) Received Data 3 TD (OUT) Transmitted Data 4 DSR (IN) Data Set Ready 5 DTR (OUT) Data Terminal Ready 6 RTS (OUT) Request To Send 7 GND - Ground 8 DCD (IN) Data Carrier Detect 20 CTS (IN) Clear To Send .sp .JU .FI There will be wave shaping (slew limiting) capacitors on the inputs and outputs of all RS-232-C signals. .sp 2 .UL .co 1 5. ENVIRONMENTAL SPECIFICATIONS .sp 2 The ACC will operate under the following environmental conditions. .sp .CO 7 MIN MAX UNITS .sp Temperature .sp Operational 0 50 deg C Storage -20 85 deg C .sp Relative Humidity  Operational TBD TBD .sp 2 .UL .fi .ju 6. MECHANICAL SPECIFICATIONS .sp 2 The ACC shall reside on a standard MAXI bus half card. A 60 pin rear connector shall provide the interface for the "break out panel." The break out panel will contain the industry standard DB25 connectors. .sp 2 .UL .co 1 7. SERVICEABILITY .sp 2 The reliability goal of this product is : .sp MTBF 30,000 POH MTTR 30 minutes  TEST D JST TESTE GO DO TEST E JST TESTF GO DO TEST F JST TESTG GO DO TEST G EXEC2B COPY CAR,A GET RUN OPTION TBIT 0,A IS ACCUM. ERR. BIT ON? JF OV,EXEC3 NEXT, IF NO OPTION COPY =EROTAB,X GET ERR TAB PTR COPY =0,A ADD ERORA,A ADD ERORB,A ADD ERORC,A ADD ERORD,A ADD ERORE,A ADD ERORF,A ADD ERORG,A COPY EROTOL,Q GET TOTAL ERR THIS PASS ADD Q,A UPDATE AND COPY A,EROTO.F1 ASYNCHRONOUS COMMUNICATION CONTROLLER PAGE # .F3 TEST SPECIFICATION 77-53983-01-A0 .SP 20 .SP 10 .CE ASYNCHRONOUS COMMUNICATION CONTROLLER .SP2 .CE TEST SPECIFICATION .SP 2 .CE 77-53983-01-A0 .BP .SP 10 .CE .UL TABLE OF CONTENTS .SP 5 .CO 7 1. PURPOSE .............................3 .SP 2. REFERENCE DOCUMENTS .................3 .SP 3. REQUIRED EQUIPMENT ..................3 .SP 4. CAPABLE TEST ........................3 .SP 5. SYSTEM TEST .........................4 .SP 6. FINAL ACCE PTANCE TEST ...............4 .SP .BP .SP10 .UL 1. PURPOSE .ju .fi .SP2 The purpose of this document is to specify the testing required on the Asynchronous Communication Controller .sp 5 .ul .co 9 2. REFERENCE DOCUMENTS .SP2 70-53983-01 Bill of Materials 73-53983-01 Assembly 74-53983-01 Detail 75-53983-01 Logics 76-53983-01 Eng. Spec. 91-53983-01 Theory of Operations 84-53983-01 ACC Diagnostic .sp 5 .ju .fi .ul 3. Required Equipment .SP 2 The following equipment will be required to test the ACC through capable test and Burn-In. .sp .CO 8 - Capable Testor .sp - NM4 Processor (4/95,4/90,4/30,or 4/x2) .sp - Floppy Controller .sp - Breakout Panel (53994) .sp - Loop-back Connectors .sp - CRT .sp - Memory .sp 5 .ul 4. Capable Test .sp 2 All ACC boards must pass Capable Program Test at Voltage margins of +/- 5%. Heat is not normally applied unless failure seems to be heat related and then 50 degrees C heat is normally applied .bp .sp 5 .ul .co 5.0 System .sp 2 All ACC boards must run 10 passes (all tests) of the diagnostic without error. (All channels in loopback mode except #4, baud rate = 9600) .sp 5 .ul .co 1 6.0 BURN-IN .SP 2 ACC boards require 12 hours of 50 degree C burn-in running the full diagnostic .sp 5 .ul .co 1 7.0 Final Acceptance Test .sp 2 The ACC must complete 10 passes (without errors) of the ACC diagnostic in the customer configuration before shipping .sp 2 .SP 10 .F1 ASYNCHRONOUS COMMUNICATION CONTROLLER PAGE # .F3 MAINTENANCE DOCUMENT 92-53983-01-A0 .CE .SP 4 MAINTENANCE DOCUMENT .SP 2 .ce ASYNCHRONOUS COMMUNICATION CONTROLLER .SP 2 .ce 92-53983-01-A0 .BP .SP 2 This is for the state machine (IC 2) part # 01-49594-53 Do to the small size of the program the contents are listed here to be keyed directly into the Data I/O programmer. Use blank CA part # 01-49594-00 .sp 2 .co .co 34 .ul Address Contents .SP :00 :01 :01 :0A :02  :0B :03 :08 :04 :09 :05 :09 :06 :09 :07 :09 :08 :09 :09 :09 :0A :09 :0B :09 :0C :09 :0D :09 :0E :09 :0F :09 :10 :01 :11 :0A :12 :0B :13  :0C :14 :1C :15 :09 :16 :09 :17 :09 :18 :09 :19 :09 :1A :09 :1B :09 :1C :09 :1D :09 :1E :09 :1F :09 .SP 2 The checksum is :012B .BP .SP 2 This is for the bus decode PROM (IC 24) part # 01-49594-18 .sp Do to the small size of the program the contents are listed here to be keyed directly into the Data I/O programmer. Use blank CA part # 01-49594-00 .sp 2 .co .co 34 .ul Address Contents .SP :00 :EF  :01 :E9 :02 :EE :03 :EB :04 :EE :05 :ED :06 :EE :07 :CF :08 :E7 :E7  :E7 :0A :E7 :0B :E7 :0C :E7 :0D :E7 :0E :E7 :0F :E7 :10 :FF :11 :FF :12 :FF :13 :FF :14 :FF :15 :FF :16 :FF :17 :FF :18 :FF :19 :FF :1A  :FF :1B :FF :1C :FF :1D :FF :1E :FF :1F :FF .SP 2 The checksum is :1E71 00000000000 ,Y INDEX TEST CHANNEL LIST COPY =-7,Q SET COUNT COPY 0(X),A GET CHAN FROM WORK TAB COPY A,0(Y) SAVE IN TEST CHAN TAB ADD =1,X ADD =1,Y IJNE Q,$-4 JMP *AR2RS LPOOL TITL TEST C - ECHO TEST ****************************************************** * * mo ll=lp13 as uf=/acc/ mat ll=tops.txt mat ll=engspec.txt mat ll=maint.doc mat ll=tspec.txt L CRT * 3. SET TIME FOR 60 SECONDS FOR TIME OUT * 4. ECHO BACK TO ALL CRT WHICH HAS INPUT * ***************************************************** * TESTC ENT COPY =TSTC,A JSK MSG COPY =EBUF0+1,X INDEX BEGIN OF EBUF S COPY =-7,A SET UP CONT COPY A,CELLC TESTC1 COPY =38,Q COPY =-1,A COPY A,0(X) ADD =1,X JNED Q,$-2 DO TILL 1 BUF CLEARED IMS CELLC JMP $+2 * THIS JCL ASSUMES ALL FILES ARE IN THE USER FILE (UF) * * INSERT LABELED RELEASE FLOPPY IN DRIVE 3 MO DF=DF10 AS UF=/ACC/ DELETE DF/TOPS.TXT DELETE DF/ENGSPEC.TXT DELETE DF/TSPEC.TXT DELETE DF/MAINT.TXT DELETE DF/MAKREL.JCL DELETE DF/MAKTXT.JCL COPY DF=TOPS.TXT COPY DF=ENGSPEC.TXT COPY DF=TSPEC.TXT COPY DF=MAINT.TXT COPY DF=MAKDF.JCL COPY DF=MAKDOC.JCL DI DF MEOUT=2 SECONDS MUL =20,AQ COMP Q COPY Q,CLOCK JSK DOIT SEND COMMANDS * COPY =EBUFPTR,A COPY A,BUFPTR1 SET UP RCV BUF PTR  TITL NM-4 ASYNC COMM CONTROLLER (ACC) DIAGNOSTIC TEST 84-93860-10 A000 TITL TITLE PAGE * * * * * * NM-4 ASYNC COMM CONTROLLER * * * DIAGNOSTIC TEST PROGRAM * * * 84-93860-10-A0 * * * * * THE CONTENTS HEREOF ARE PROPRIETARY * TO COMPUTER AUTOMATION, INC. ('CA') * AND SHALL NOT BE REPRODUCED OR USED * WITHOUT CA'S PRIOR WRITTEN CONSENT. * * (C) COMPUTER AUTOMATION, INC. 1984. * * * * TITL REVISION HISTORY ****************************************************** * * REVISION HISTORY * ****************************************************** * * REVISION ISSUE DATE COMMENTS * -------- ---------- -------- * * * A000 20/NOV/84 ORIGINAL RELEASE * BRIAN BENNETT * * ****************************************************** * REV: EQU 'A0' LATEST REVISION TITL LINKER INFORMATION NAM G:0 LINK ADDRESS EXTR DEBUG4 LINK TO DEBUG * * * OPTIONS +:000A OPTIONS -:1000 TURN OFF X-ADDRESSING OBJNOTE ' ACC DIAGNOSTIC - REV. ',REV:%-8,REV:&:FF TITL ACC TEST: GLOBAL EQUATES ****************************************************** * * GLOBAL EQUATES * ****************************************************** * SSTAT EQU :40 TSTCNT EQU 5 TOTAL NO. OF TESTS RCVXMT EQU 3 RCV & XMT XMTO EQU 1 XMT RCVO EQU 2 RCV OTHR EQU 4 OTHER COMMAND * COMMON COMMANDS LSC EQU :8000 LOAD SPECIAL CHARACTER SSC EQU :2000 SELECT SPECIAL CHARACTER EPS EQU :1000 ENABLE PARITY STANDARDIZATION ESCD EQU :0800 ENABLE SPECIAL CHARACTER DETECT SETMOD EQU :0400 SET MODE STRT EQU :0200 START RESET EQU :0100 RESET ECHO EQU :0008 AUTO ECHO SMSIN EQU :0610 SET MODE, ENABLE INT ON INPUT SMSOT EQU :0612 SET MODE, ENABLE INT ON OUTPUT SC EQU :AA SPECIAL CHARACTER * SERIAL CHANNEL MODE BITS DTR EQU :0001 DATA TERMINAL READY RTS EQU :0002 REQUEST TO SEND * OTHER EQUATES AREG EQU 2 QREG EQU 3 XREG EQU 4 YREG EQU 5 AOB EQU :6500 AUTO OUTPUT BYTE INST AIB EQU :4500 AUTO INPUT BYTE INST DLPDA EQU :7F LP  DEVICE ADDRESS DTTYDA EQU :78 BASE DEVICE ADRESS DAFC EQU 1 FUNCTION CODE CR EQU :0D CARRIAGE RETURN LF EQU :0A LINE FEED TITL STANDARD NM-4 TRAP/EXCEPTION LOCATIONS ****************************************************** * * STANDARD NM-4 TRAP/EXCEPTION LOCATIONS * ****************************************************** * ABS 0 DEBUG JUMP DEBUG JST *$+1 JUMP TO DEBUG WORD DEBUG DEBUG ADDRESS * ABS :80 POWER UP TRAP JST *$+1 WORD PWRUP: * ABS :84 UNIMPLEMENTED INSTRUCTION TRAP RES 2,0 ADDRESS AND 'INSTRUCTION' JST *$+1 WORD UNINT: * ABS :88 UNINSTALLED MEMORY TRAP RES 2,0 JST *$+1 WORD UNMET: * ABS :8C POWER FAIL TRAP RES 2,0 JST *$+1 WORD PWRFL: * ABS :91 RTC INTERRUPT CLOCK WORD 0 TIMMER CELL JMP *$+1 CLKINT WORD TIMEOUT * ABS :94 CONSOLE INTERRUPT JST *$+1 WORD CONINT * ABS :98 CHAR./NUM. EXCEPTION RES 2,0 ADDRESS AND 'INSTRUCTION' JST *$+1 WORD CHNUE: * ABS :9C STACK OVERFLOW TRAP RES 2,0 JST *$+1 WORD STKOV: * ABS :A0 USER TRAP RES 2,0 JST *$+1 WORD USETR: * ABS :A4 SYSTEM TRAP RES 2,0 JST *$+1 WORD SYSTR: * ABS :A8 ARITHMETIC ERROR TRAP RES 2,0 JST *$+1 WORD ARIER: * TITL MACRO SECTION ****************************************************** * * MACRO SECTION * ****************************************************** * * EOB MACRO, FOR PRIMARY VECTORS * MACRO PEOB EOB#1 PUSH SSTAT COPY =#1,X SAVE CHANNEL NO. COPY TSTLPT,Y GET TEST LIST ADDRESS COPY 0(Y,X),A GET COMMAND TYPE CLSN A,=3 JMP $+2 XMT & RCV CLSN A,=1 JMP $+3 XMT ONLY COPY =RVXSTAT,Y SET RCV STATUS ADDRESS JMP EOB READ STATUS AND SAVE COPY =XMTSTAT,Y SET XMT STATUS TABLE ADDR JMP EOB ENDM * * EOB MACRO, FOR SECONDARY VECTORS * MACRO SEOB EOBS#1 PUSH SSTAT COPY =#1,X SAVE CHANNEL NO. COPY =RVXSTAT,Y SET RCV STATUS ADDRESS JMP EOBS ENDM * * QURY MACRO * MACRO QURY QURY#1 JST CHRIN CHECK TERMINATOR JMP QURY#2 CARRIAGE RETURN JMP QURY#3 '#' SIGN JMP QURY#4 BACK ARROW JMP QURY#5 UP ARROW JMP QURY#6 COMMA JMP QURY#7 ANYTHING ELSE ENDM TITL PROGRAM START UP ****************************************************** * * PROGRAM START UP * * :2000 IS THE PROGRAM STANDARD ENTRY POINT * ****************************************************** * ABS :2000 G:0 EQU $ BEGIN EQU $ COPY =0,A COPY A,BEGFLG RESET BEGIN FLAG COPY =STACK,A INITIALIZE STACK COPY A,K COPY =STACKE,A COPY A,L JSK NEWLINE COPY =TITLE,A PRINT TITLE HEADING JSK MSG JSK NEWLINE START EQU $ SBIT 4,S CONSOLE INTERRUPT ENABLE RBIT 6,S TURN OFF X-ADDRESSING COPY =STACK,A INITIALIZE STACK COPY A,K COPY =STACKE,A COPY A,L COPY =0,A COPY A,PASS RESET PASS COUNTER COPY A,EROTOL RESET ACCUMULATED ERR CNT JMP QURYT0 GO TO QUERY SECTION LPOOL TITL QUERY SECTION ****************************************************** * * QUERY SECTION: QURY T0,00,10,20,30,40,50 * QUERIES UNDER THIS SECTION WILL RESPOND TO SOME SPECIAL * CHARACTERS DESCRIBED AS FOLLOWS: * POUND SIGN: WILL DEFAULT THE PRESENT QUERY AND THE QUERIES * FOLLOWING IT WITH PREVIOUS ASSIGNED VALUES, EXCEPT * FOR THE LAST QUERY. * BACK ARROW: WILL BRING CONTROL BACK TO THE BEGINNING OF THE QUERY * UP ARROW : WILL BRING CONTROL BACK TO THE BEGINNING OF THE * PREVIOUS QUERY. * *----------------------------------------------------- * * THIS QUERY ASK FOR   DIAGNOSTIC OR TECH TEST OPTION * IF DIAG WANTED, PROG WILL PROCEED WITH OTHER QUERIES. * IF TECH TEST WANTED, PROG WILL XFER CONTROL TO TECH TEST. * QURYT0 EQU $ JSK NEWLINE COPY =0,A COPY A,TESTMODE RESET TEST MODE TO DIAG COPY =TMODMSG,A JSK MSG JSK IKB GET 1ST CHAR CLSN A,=CR JMP QURYT2 END IF DEFAULT CLSN A,='#' JMP QURYT3 CLSN A,='T' JMP $+2 JMP $+3 COPY A,TESTMODE STORE TECH TEST MODE JMP QURYT2 CLSN A,='D' JMP $+2 DIAGNOSTIC TEST JMP QURYT0 GARBAGE JSK IKB GET 2ND INPUT QURY T1,T2,T2,T0,T0,T0,T0 QURYT2 COPY TESTMODE,A GET TESTMODE JEQ A,QURY00 DIAG MODE, GO NEXT QUERY COPY =TPROMSG,A ELSE, IMPLY TECH TEST JSK MSG OUT PROMPT MESSAGE JST *0 GO TO DEBUG QURYT3 COPY BEGFLG,A GET FLAG JEQ A,QURYT0 NOT LEGAL JMP SETAIO LPOOL TITL * *----------------------------------------------------- * * GET DEVICE ADDRESS * QURY00 EQU $ JSK NEWLINE COPY =DVAMSG,A GET DEVICE ADDR MESSAGE JSK MSG JSK GETDV JEQ Q,QURY02 GOOD DEVICE ADDRESS QURY 01,00,03,00,T0,00,00 QURY02 COPY A,ADBAS SAVE DEVICE ADDRESS JMP QURY10 GO TO NEXT QUERY QURY03 COPY BEGFLG,A GET FLAG JEQ A,QURY00 ILLEGAL JMP SETAIO LPOOL TITL * *----------------------------------------------------- * * GET INTERRUPT BASE ADDRESS * RANGE :100 TO :1E80 * DEFAULT IS :180 * QURY10 EQU $ JSK NEWLINE COPY =INTMSG,A INTERRUPT BASE ADDR MESSAGE JSK MSG COPY =0,Q JSK HEXIN GET 1ST CHARACTER  COPY A,CELHEX SAVE IT QURY 11,18,17,10,00,10,11A QURY11A EQU $ DUMMY LABEL JNE Y,QURY10 REPEAT QUERY IF Y SET COPY CELHEX,Q GET HEX NUMBER QURY13 JSK HEXIN READ INPUT COPY A,CELHEX QURY 12,16,10,10,00,10,12A QURY12A EQU $ JNE Y,QURY10 COPY CELHEX,A GET PRESENT HEX NUMBER SHIFT Q,LO,4 SHIFT LAST CHAR. 4 BITS OR A,Q COMBINE W/ CURR CHAR JMP QURY13 REPEAT QURY16 COPY Q,A CHECK VALID INT. ADDR. AND =:7F,A JNE A,QURY10 COPY Q,A CSK A,=:1E80 DO RANGE CHECK CSK A,=:100 JMP QURY10 OUTSIDE LIMIT COPY Q,INTBAS SAVE IT JMP QURY20 GO TO SELECT OPTION QURY17 COPY BEGFLG,A GET FLAG JEQ A,QURY10 ILLEGAL JMP SETAIO QURY18 COPY =:180,A DEFAULT COPY A,INTBAS SAVE JMP QURY20 LPOOL TITL *----------------------------------------------------- * * THIS QUERY WILL ASK FOR THE RUN OPTION * * SELECTION- :00 TO :3F, DEFAULT IS :00 * * BIT HEX OPTION * --- --- ------ * 0 :01 ACCUMULATED ERRORS WHEN RUN CONTINUIOUSLY * 1 :02 SUPPRESS ERROR REPORTS * 2 :04 OUTPUT ERROR TALLIES AT THE END OF EACH TEST * 3 :08 RUN CONTINUOUSLY * 4 :10 HALT ON ERROR * 5 :20 LINE PRINTER ON * QURY20 EQU $ JSK NEWLINE COPY =OPTMSG,A PRINT OPTION MESSAGE JSK MSG JSK HEXIN GET 1ST CHARACTER COPY A,CELHEX SAVE IT (GOOD OR NOT) QURY 21,26,25,20,10,20,21A QURY21A EQU $ JNE Y,QURY20 REPEAT QUERY IF Y SET COPY CELHEX,A GOOD HEX, GET IT & COPY A,CELL0 SAVE IT QURY22 JSK HEXIN READ INPUT COPY A,CELHEX SAVE IT (GOOD OR NOT) QURY 23,24,20,20,10,20,23A QURY23A EQU $ JNE Y,QURY20 COPY CELHEX,A GET CURRENT HEX COPY CELL0,Q GET STORED OPTION SHIFT Q,LO,4 SHIFT LAST CHAR. 4 BITS OR A,Q ADD THEM TOGETHER COPY Q,CELL0 AND SAVE AGAIN JMP QURY22 REPEAT QURY24 COPY CELL0,Q COPY Q,A CHECK VALID OPTION WORD SHIFT A,RO,6 :00 TO :3F? JNE A,QURY20 SORRY, PAL! COPY Q,CAR THANK YOU, SIR. JMP QURY30 GO TO QURY30 QURY25 COPY BEGFLG,A GET  FLAG JEQ A,QURY20 ILLEGAL JMP SETAIO QURY26 COPY =0,A DEFAULT OPTION COPY A,CAR JMP QURY30 * LPOOL TITL *----------------------------------------------------- * * QURY30-THIS QUERY ASK FOR CRT-TEST CHANNELS WHICH * ALLOWS INPUT FROM 0,.. TO 7 * QURY30 EQU $ JSK NEWLINE COPY =SELMSG,A JSK MSG COPY =0,A COPY A,CELQ3 CLEAR FLAG COPY =-8,A SET UP CHANNEL COUNT COPY A,CELL0 * COPY =CHLCRT,Y INDEX WORKING TABLE QURY31 JSK DECIN GET RESPONSE A=CHAR X=DEC VAL CLSN A,='*' JMP QURY35 JMP IF NO CRT TEST AT ALL QURY 32,33,38,36,37,34,36 QURY33 COPY CELQ3,A GET FLAG JEQ A,QURY39 GO DEFAULT COPY DICNT,A GET INPUT COUNT JEQ A,QURY40 NO INPUT, EXIT TO NXT QURY CSK X,=7 JMP $+2 0 < X 7 COPY X,A COPY A,0(Y) SAVE IT  JMP QURY40 AND OUT TO NXT QURY QURY34 IMS CELQ3 SET FLAG IMS CELL0 BUMP CHAN COUNT JMP $+2 NOT FULL YET, OK JMP QURY30 TOO MANY CSK X,=7 JMP $+2 0 < X 7 COPY X,A COPY A,0(Y) SAVE IT ADD =1,Y BUMP WORK TAB JMP QURY31 AND GET INPUT AGAIN QURY35 COPY =CHLCRT,Y INDEX WORKING TABLE COPY =-1,A COPY A,0(Y) PUT TERMINATOR IN 1ST PLACE JMP QURY40 GO NXT QURY QURY36 COPY =-1,A BACK ARROW OR GARBAGE COPY A,0(Y) PUT TERMINATOR JMP QURY30 QURY37 COPY =-1,A UP ARROW COPY A,0(Y) PUT TERMINATOR JMP QURY20 QURY38 COPY BEGFLG,A GET FLAG JEQ A,QURY30 ILLEGAL JMP SETAIO QURY39 COPY =-8,Q COPY =CHCRTD,X INDEX DEFAULT TABLE COPY =CHLCRT,Y INDEX WORKING TABLE COPY 0(X),A GET DEFAULT COPY A,0(Y) AND SAVE ADD =1,X ADD =1,Y IJNE Q,$-4 JMP QURY40 LPOOL TITL *----------------------------------------------------- * * QURY40-THIS QURY ASK FOR NON-CRT TEST CHANNELS WHICH * ALLOWS INPUT FROM 0,.. TO 6, HOWEVER, NO REPEATING * OF CHANNEL IS ACCEPTED AS IN QURY30 *  IF '*' IS THE RESPONSE; BOARD ADDR WILL BE CHECKED TO SEE * IF SUCH RESPONSE IS LEGAL * IF BOARD ADDR IS :E, 6 INPUTS ARE ALLOWED, ELSE 7 INPUTS ALLOW * QURY40 EQU $ JSK NEWLINE COPY =SENONM,A JSK MSG COPY =0,A RESET INPUT FLAG COPY A,CELL1 COPY =-7,A SET UP INITIAL CHAN COUNT COPY A,CELL0 * COPY =CHLXCRT,Y INDEX WORKING TABLE COPY ADBAS,A GET BOARD ADDR CLSN A,=:E IF IT'S BASE BOARD ADDR IMS CELL0 LESS ONE INPUT QURY41 JSK DECIN GET RESPONSE A=CHAR, X=DEC VAL CLSN A,='*' JMP QURY45 JMP IF NO NON-CRT TEST AT ALL QURY 42,43,46A,49,401,44,49 QURY43 COPY DICNT,A GET DECIN INPUT CNT JNE A,$+4 HAS INPUT THIS PASS COPY CELL1,A GET INPUT FLAG JEQ A,QURY46 NO DEC IN, NO INPUT ==> DEF JMP QURY40 ELSE ==> ' ,CR' ;ILLEGAL COPY =-1,A COPY A,1(Y) SET TERMINATOR CSK X,=7 JMP $+2 0 < X 7 COPY X,A COPY A,0(Y) SAVE IT  JMP QURY46A DONE, GO CHECK W/ QURY30 INPUT QURY44 IMS CELL0 JMP $+2 NOT FULL TET, OK JMP QURY40 TOO MANY CSK X,=6 JMP $+2 0 < X 7 COPY X,A COPY A,0(Y) SAVE IT ADD =1,Y BUMP WORK TAB COPY =1,A SET INPUT FLAG COPY A,CELL1  JMP QURY41 INPUT AGAIN QURY45 COPY =CHLXCRT,Y INDEX WORK TABLE COPY =-1,A COPY A,0(Y) PUT TERMINATOR IN 1ST PLACE JMP QURY50 GO NXT QURY QURY46 EQU $ COPY =-8,Q COPY =CHXCRTD,X INDEX DEFAULT TABLE COPY =CHLXCRT,Y INDEX WORKING TABLE COPY 0(X),A GET DEFAULT COPY A,0(Y) AND SAVE ADD =1,Y ADD =1,X IJNE Q,$-4 QURY46A COPY =CHLXCRT,X INDEX XCRT WORK TABLE QURY46B COPY =-7,A  SET UP COMPARISON COUNT COPY A,CELL0 COPY =CHLCRT,Y INDEX CRT WORK TABLE COPY 0(X),A GET XCRT CHAN JLT A,QURY402 END TABLE, OK QURY47 COPY 0(Y),Q GET CRT CHAN CSN A,Q ARE THEY THE SAME ? JMP QURY48 YES, U DUM DUM ! ADD =1,Y NO, IMS CELL0 BUMP COUNT JMP QURY47 CHECK W/ NXT CRT CHAN ADD =1,X JMP QURY46B CHECK W/ NXT XCRT CHAN QURY48 COPY =DUMY1,A U DUM DUM MESSAGE JSK MSG JMP QURY40 QURY49 COPY =-1,A BACK ARROW OR GARBAGE COPY A,0(Y) PUT TERMINATOR JMP QURY40 QURY401 COPY =-1,A UP ARROW COPY A,0(Y) PUT TERMINATOR JMP QURY30 QURY402 COPY ICHR,A CR OR # GO HERE CLSN =CR,A CR ? JMP QURY50 CLSN ='#',A # SIGN ? JMP $+2 JMP QURY40 NOT # COPY BEGFLG,A YES, GET FLAG JEQ A,$+2 ILLEGAL JMP SETAIO JMP QURY40 LPOOL TITL *----------------------------------------------------- * * QURY50-THIS QURY ASK FOR OPERATORS CHANNEL, DEF IS 4 * THIS QUERY WILL VERIFY THE LEGITIMATE INPUT, THEN * IT WILL SAVE IT IN 'CHOPER', OUTPUT PROMPT MES TO * ORIGINAL OP CHAN, THEN MOVE 'CHOPER' TO 'REALOPER', * SENSE FOR NEW OP CHAN'S READYNESS. ONCE THE NEW OP * CHAN IS READY, IT WILL WAIT FOR A VERY SHORT TIME * AND PROMPT THE NEW OP TO INPUT 'CON' TO CONTINUE. * QURY50 EQU $ JSK NEWLINE COPY =OPCHMSG,A JSK MSG COPY =4,A COPY A,CHOPER JSK DECIN INPUT A=CHAR, X=DEC VAL QURY 51,52,50,50,40,50,50 QURY52 COPY DICNT,A GET INPUT COUNT JNE A,$+3 DECIMAL # COPY =4,X DEFAULT CHAN JMP QURY52A ALSO NEED CK W/ NON-CRT CHAN CSK X,=7 JMP $+2 0 < X 7 COPY X,CHOPER SAVE IT QURY52A COPY ADBAS,A GET BOARD ADDR CLSN A,=:E BASE BOARD ? JMP $+2 YES, CHECK W/ NON-CRT CHAN JMP QURY54 NO, FINE COPY =CHLXCRT,Y INDEX NON-CRT CHANNEL QURY53 COPY 0(Y),A GET NON-CRT CHANNEL JLT A,QURY54 END OF TABLE, OK CSN A,X ARE THEY THE SAME ? JMP QURY56 YES, DUMMY AGAIN ! ADD =1,Y BUMP TABLE PTR JMP QURY53 CHECK AGAIN QURY54 COPY =OPMSG1,A JSK MSG COPY CHOPER,A GET OPERATOR'S CHAN COPY A,REALOPER AND BOOM!! SWITH CONTROL HERE * COPY REALOPER,Q SHIFT Q,LO,1 XNX Q IN DTTYDA%1;1,A INPUT STATUS SHIFT A,RO,2 JT OV,$-3 IF STILL SET COPY =-1,A TIME FOR 1 COUNT JST TIMER JST TIME JMP $-1 QURY55 COPY =OPMSG2,A JSK MSG ' PLEASE TYPE "CON"....' JSK IKB CLSN A,='C' JMP $+2 JMP QURY55 JSK IKB CLSN A,='O' JMP $+2 JMP QURY55 JSK IKB CLSN A,='N' JMP $+2 JMP QURY55 JSK IKB CLSN A,=CR CR JMP $+2 JMP QURY55 QURY50E JMP SETAIO FINALLY ! * QURY56 COPY =DUMY2,A U DUM ALSO ! JSK MSG JMP QURY50 LPOOL TITL SET UP AUTO I/O ****************************************************** * * SET UP AUTO I/O INTERRUPT VECTORS * * PRIMARY VECTORS FOR RECEIVING IN FULL DUPLEX OR * TRANSMITTING AND RECEIVING IN HALF DUPLEX * ****************************************************** * SETAIO EQU $ COPY =1,A COPY A,BEGFLG SET FLG >> SIG QUERIES HAVE BEEN ANS ONCE. COPY =-16,Q SET UP FOR 16 LOOPS COPY INTBAS,X GET INTERRUPT BASE ADDRESS COPY =EOBADR,Y GET EOB ADDRESS POINTER SETIO EQU $ COPY =0,A RESERVE 4 WDS FOR AIO, BYTE CNT $ PTR COPY A,0(X) COPY A,1(X) COPY A,2(X) COPY A,3(X) COPY A,6(X) RESERVE 2 MORE SPACES COPY A,7(X) COPY =:FF80,A JSK *$+1 INSTRUCTION COPY A,4(X) COPY 0(Y),A GET EOB ADDRESS COPY A,5(X) ADD =8,X BUMP VECTOR ADDRESS ADD =1,Y BUMP EOB POINTER ADD =1,Q BUMP COUNTS JLT Q,SETIO LOOP   FOR MORE JMP EXEC LPOOL TITL EXEC-TEST ROUTINE ****************************************************** * * TEST EXECUTIVE * * THE EXEC CONTROLS THE FLOWS OF THE PROGRAM * WHICH INVOKES VARIES TEST ROUTINES. IT ALSO * OVERLOOKS AND CONTROL SOME OF THE OPTIONS. * ****************************************************** * EXEC EQU $ COPY =0,A COPY A,PASS RESET PASS NO. COPY A,EROTOL RESET ACCUM. ERR. CELL JST RSTALL RESET ALL CHANNELS EXEC1 EQU $ JSK NEWLINE COPY =PASSMSG,A PRINT ' PASS' JSK MSG COPY PASS,A PRINT 'NNNNN' N=NUMBER JSK DECOUT EXEC2 EQU $ COPY =CHLCRT,X INDEX TO BEGIN OF CRT TAB COPY 0(X),A GET 1ST CHAN JLT A,EXEC2A NO CRT TEST, SKIP JST AR2RS COPY CRT CHAN TO TSET TABLE JST TESTA GO DO TEST A JST TESTB GO DO TEST B COPY CAR,A GET RUN OPTION WORD TBIT 3,A IS RUN CONT. BIT ON? JT OV,$+2 IF SO, BY PASS TEST C JST TESTC EXEC2A COPY =CHLXCRT,X INDEX TO BEGIN OF XCRT TAB COPY 0(X),A GET 1ST CHAN JLT A,EXEC2B NO NON-CRT TEST COPY =CHNLST,Y INDEX TEST CHAN TABLE  COPY =-7,Q COPY 0(X),A GET NON-CRT CHAN COPY A,0(Y) PUT INTO TEST CHAN TABLE ADD =1,X ADD =1,Y IJNE Q,$-4 JST TESTD GO DO TEST D JST TESTE GO DO TEST E JST TESTF GO DO TEST F JST TESTG GO DO TEST G EXEC2B COPY CAR,A GET RUN OPTION TBIT 0,A IS ACCUM. ERR. BIT ON? JF OV,EXEC3 NEXT, IF NO OPTION COPY =EROTAB,X GET ERR TAB PTR COPY =0,A ADD ERORA,A ADD ERORB,A ADD ERORC,A ADD ERORD,A ADD ERORE,A ADD ERORF,A ADD ERORG,A COPY EROTOL,Q GET TOTAL ERR THIS PASS ADD Q,A UPDATE AND COPY A,EROTOL SAVE IN TOTAL COUNT COPY =ERACMSG,A PRINT ' ACCUMULATED ERRORS: ' JSK MSG COPY EROTOL,A GET TOTAL COUNT JSK DECOUT AND OUTPUT EXEC3 EQU $ COPY CAR,A GET RUN OPTION TBIT 3,A IS RUN CONT. BIT ON? JT OV,EXEC4 IF SO, DON'T...STOP. COPY =ENDMSG,A PRINT ' END OF TEST ' JSK MSG JMP START RESTART WITH QUERIES EXEC4 EQU $ COPY =PASSDIV,A PRINT '-------------' JSK MSG IMS PASS BUMP PASS NO. JMP EXEC1 PASS STILL GOOD, LOOP BACK JST *0 PASS EXPIRED, GO TO DEBUG LPOOL TITL TESTA - ALIGNMENT TEST ****************************************************** * * TEST A-ALIGNMENT TEST * * THIS TEST WILL OUTPUT ASCII CHAR TO CRT AND LP(IF ON) * ******************************************************* * TESTA ENT COPY =TSTA,A JSK MSG JSK NEWLINE COPY =-10,A COPY A,LINES COPY =:21,A COPY A,CHARSV COPY =XASCBF,X JSK SETBF SET UP BUFFER JST AR1 IMS LINES BUMP LINE NUMBER  JMP $-2 PRINT AGAIN IF NOT DONE COPY =CHNLST,X COPY X,CHLPTR TESTA1 COPY 0(X),X GET CHANNEL JLT X,TESTA2 DONE COPY =:0D0A,Q DATA IS CR & LF JSK DEVADR CALC DEV ADDR XNX A OUT Q,0 OUTPUT DATA IMS CHLPTR COPY CHLPTR,X JMP TESTA1 GO FOR ANOTHER CHAN TESTA2 COPY CAR,A SHIFT A,RO,6 LP OPTION ON ? JF OV,TESTAND NO, EXIT JST AR2S REPLACE TEST CHAN TABLE COPY =-40,A COPY A,LINES PRINT 40 LINES ON LP JST AR2 IMS LINES JMP $-2 PRINT TILL DONE JST AR2RS RESTORE TEST CHAN TABLE TESTAND JMP *TESTA DONE LPOOL TITL TEST B - ROTATING TEST ****************************************************** * * TEST B-ROTATING TEST, THIS TEST WILL OUTPUT ASCII CAHRS * TO CRT AND LP (IF LP ON) IN A ROTATING FASHION * ****************************************************** * TESTB ENT COPY =TSTB,A JSK MSG JSK NEWLINE COPY =-10,A COPY A,LINES 10 LINES PER CRT COPY =:21,A COPY A,  CHARSV COPY A,CHARS COPY =XASCBF,X TESTB1 JSK SETBF SET BUFFER JST AR1 IMS CHARS COPY CHARS,A GET NEXT CHAR COPY A,CHARSV AND SAVE FOR MAKE UP BUF COPY =XASCBF,X INDEX XMT BUFFER IMS LINES JMP TESTB1 PRINT AGAIN IF NOT DONE COPY CAR,A SHIFT A,RO,6 LP OPTION ON ? JF OV,TESTBND NO, EXIT JST AR2S REPLACE TEST CHAN TABLE COPY =-40,A COPY A,LINES 40 LINES FOR LP COPY =:21,A STARTING CHAR COPY A,CHARSV COPY A,CHARS COPY =XASCBF,X INDEX XMT BUF JSK SETBF AND SET IT UP TESTB2 JST AR2 IMS CHARS BUMP CHARACTER COPY CHARS,A GET IT COPY A,CHARSV SAVE FOR OUTPUT COPY =XASCBF,X JSK SETBF IMS LINES JMP TESTB2 DO TILL DONE JST AR2RS RESTORE TEST CHAN TAB TESTBND JMP *TESTB DONE LPOOL TITL ALIGNMENT/ROTATING TEST SUB ***************************************************** * * THIS SUBS ARE CALLED BY TESTA AND TESTB ONLY, * THEREFORE THEY ARE PUT HERE IMMEDIATELY AFTER * THIS 2 TESTS INSTEAD OF BEING PUT IN THE SUB SECTION * ***************************************************** * AR1 ENT COPY =SMSOT,A SET XMT CMD BUF COPY A,CMDWD1 COPY =XASPTC,A COPY A,BUFPTR0 SAVE BUF ADDR IN PTR COPY =82,A COPY A,BYTCNT SET BYTE COUNT COPY =TSTLST1,A COPY A,TSTLPT SET TEST LIST ADDR PTR COPY =CHLCRT,A GET CHANNEL LIST COPY A,CHLPTR SAVE INT PTR JSK PAIOB SET AIO BLOCKS COPY =120*2/10,Q SET TIME = SOME RTC SECONDS (2/10 @ TTLF) COMP Q COPY Q,CLOCK JSK DOIT SET COMMANDS (1 LINE/CRT EA TIME) JMP *AR1 * AR2 ENT COPY =SMSIN,A SET XMT CMD BUF COPY A,CMDWD1 COPY =XASPTL,A COPY A,BUFPTR0 SAVE BUF ADDR IN PTR COPY =84,A COPY A,BYTCNT SET BYTE COUNT COPY =TSTLST1,A COPY A,TSTLPT SET TEST LIST ADDR PTR COPY =CHLLP,A GET CHANNEL LIST COPY A,CHLPTR SAVE INTO PTR JSK PAIOB SET AIO BLOCKS COPY =20,Q SET TIME = 1 SECOND COMP Q COPY Q,CLOCK JSK DOIT SET COMMAND (1 LINE TO LP EA TIME) JMP *AR2 * AR2S ENT COPY =CHNLST,X INDEX TEST CHAN COPY =7,A LP CHANNEL COPY A,0(X) SAVE IT COPY =-1,A THEN, TERMINATOR COPY A,1(X) JMP *AR2S * AR2RS ENT COPY =CHLCRT,X INDEX CRT TABLE COPY =CHNLST,Y INDEX TEST CHANNEL LIST COPY =-7,Q SET COUNT COPY 0(X),A GET CHAN FROM WORK TAB COPY A,0(Y) SAVE IN TEST CHAN TAB ADD =1,X ADD =1,Y IJNE Q,$-4 JMP *AR2RS LPOOL TITL TEST C - ECHO TEST ****************************************************** * *  TEST C-ECHO INPUT BUFFER TEST, THIS TEST WILL DO: * * 1. OUTPUT MESSAGE TO ALL CRT * 2. COLLECT INPUT FROM ALL CRT * 3. SET TIME FOR 60 SECONDS FOR TIME OUT * 4. ECHO BACK TO ALL CRT WHICH HAS INPUT * ***************************************************** * TESTC ENT COPY =TSTC,A JSK MSG COPY =EBUF0+1,X INDEX BEGIN OF EBUF S COPY =-7,A SET UP CONT COPY A,CELLC TESTC1 COPY =38,Q COPY =-1,A COPY A,0(X) ADD =1,X JNED Q,$-2 DO TILL 1 BUF CLEARED IMS CELLC JMP $+2 JMP $+3 DONE, DO TEST ADD =1,X SKIP ONE WORD JMP TESTC1 DO NEXT EBUF COPY =EBFMSPT,A COPY A,BUFPTR0 SET UP XMT BUF PTR COPY =SMSOT,A COPY A,CMDWD1 SET UP XMT BUF CMD COPY =44,A COPY A,BYTCNT SET BYTE COUNT COPY =TSTLST1,A COPY A,TSTLPT SET TEST LIST ADDR PTR COPY =CHLCRT,A GET CHAN LIST COPY A,CHLPTR PUT ITO POINTER JSK PAIOB SET AIO BLOCKS COPY =0,A COPY =2,Q SET TIMEOUT=2 SECONDS MUL =20,AQ COMP Q COPY Q,CLOCK JSK DOIT SEND COMMANDS * COPY =EBUFPTR,A COPY A,BUFPTR1 SET UP RCV BUF PTR   COPY =SMSIN+ECHO+ESCD,A INPUT, ECHO & TERM ON CR COPY A,CMDWD2 SET RCV BUF CMD COPY =76,A COPY A,BYTCNT SET BYTE COUNT JSK CLRSTA CLEAR RCV STATUS COPY =TSTLST0,A COPY A,TSTLPT SET TEST LIST PTR COPY =CHLCRT,A COPY A,CHLPTR ALSO CHAN LIST JSK PAIOB SET AIO BLOCKS COPY =20*60,Q SET TIME OUT=60 SECONDS COMP Q COPY Q,CLOCK JSK DOIT SEND COMMANDS * * STORE BYTE PROCESSED COUNTS COPY =-7,A SET UP COUNT COPY A,CELLC COPY INTBAS,Y GET INT BASE ADDR COPY =CELLCBC,X INDEX STORAGE ADDR TESTC2 COPY 1(Y),A GET -VE BYTE COUNT CSK A,=:8000 NOP JMP $+2 COPY =0,A ZERO OUT COPY =-76,Q SUB A,Q CALCULATE BYTE PROCESSED ADD =-2,Q ADD 2 MORE AND COPY Q,0(X) STORE -VE BYTE COUNT IMS CELLC JMP $+2 JMP TESTC3 DONE ADD =8,Y BUMP INT ADDR ADD =1,X BUMP STORAGE PTR JMP TESTC2 TESTC3 COPY =EBUFPTX,A COPY A,BUFPTR0 SET UP XMT BUF PTR COPY =SMSOT,A COPY A,CMDWD1 SET XMT BUF CMD COPY =78,A COPY A,BYTCNT SET MAX BYTE CNT (CHANGE LATER) JSK CLXSTA CLEAR XMT STATUS COPY =TSTLST1,A COPY A,TSTLPT SET TEST LIST ADDR PTR COPY =CHLCRT,A COPY A,CHLPTR SET CHAN LIST PTR JSK PAIOB SET AIO BLOCKS COPY INTBAS,Y INDEX INT BASE ADDR ADD =:40,Y BUMP TO HIGH ADDR FOR XMT COPY =CELLCBC,X INDEX STORAGE ADDR COPY =-7,A SET UP COUNT COPY A,CELLC TESTC4 COPY 0(X),A RETRIVE STORED -VE BYTE COUNT COPY A,1(Y) SAVE IN AIO BLOCK IMS CELLC JMP $+2 JMP TESTC5 DONE ADD =8,Y BUMP INT ADDR ADD =1,X BUMP STORAGE PTR JMP TESTC4 DO AGAIN TESTC5 COPY =20*15/10,Q SET TIMEOUT=1.5 SECONDS COMP Q COPY Q,CLOCK JSK DOIT TESTCND SBIT 8,S ENABLE CPU INT COPY =RESET,Q RESET CMD COPY =CHLCRT,Y INDEX CRT CHAN COPY 0(Y),X GET CHAN TESTCND1 JSK DEVADR XNX A OUT Q,DAFC RESET CHAN ADD =1,Y BUMP CHAN PTR COPY 0(Y),X GET NXT CHAN JLT X,$+2 JMP IF DONE JMP TESTCND1 ELSE, REDO COPY =-5,A TIME FOR 5 COUNTS JST TIMER JST TIME JMP $-1 JMP *TESTC LPOOL TITL TEST D - LOOP BACK TEST ****************************************************** * * TEST D-DATA LOCAL LOOP BACK TEST * * THIS TEST WILL DO THE FOLLOWING: * 1) DO A LOOP BACK DATA XMT & RCV ON SELECTED * CHANNELS WITH FULL DUPLEX * 2) CHECK FOR PROCESSED WORD COUNT AND EOB * CONDITIONS AND WILL REPORT ANY ERROR IF * ENCOUNTERED. * ****************************************************** * TESTD ENT COPY =TSTD,A PRINT ' TEST D' JSK MSG COPY =0,A COPY A,ERORD CLEAR ERROR CNT CELL COPY =3,A COPY A,EROTT SAVE OFFSET=3 FOR TALLY TESTD1 EQU $ COPY =RBUFPTR,A COPY A,BUFPTR1 SET UP RCV BUFFER PTR COPY =XBUFPTR,A COPY A,BUFPTR0 SET UP XMT BUFFER PTR COPY =SMSOT,A COPY A,CMDWD1 SET XMT BUFFER COMMAND COPY =SMSIN,A COPY A,CMDWD2 SET RCV BUFFER COMMAND COPY =:100,A COPY A,BYTCNT SET BYTE COUNTS JSK CLRBUF CLEAR RCV BUFFERS JSK CLRSTA CLEAR RVX STATUS JSK CLXSTA CLEAR XMT STATUS COPY =TSTLST2,A COPY A,TSTLPT SET TEST LIST ADDR PTR * COPY =64,A COPY A,MODE SET 2ND VECTOR OFFSET FOR FULL DPX COPY =CHLXCRT,A GET CHAN LIST AND COPY A,CHLPTR PUT INTO POINTER JSK PAIOB SET AUTO AIO BLOCKS COPY =0,A SET TIMEOUT = 3 SECONDS COPY =3,Q MUL =20,AQ COMP Q COPY Q,CLOCK JSK DOIT SEND COMMANDS AND ... * COPY =CHNLST,A GET CHAN LIST AND COPY A,CHLPTR PUT INTO POINTER TESTD2 EQU $ COPY CHLPTR,X SET CHAN LIST ADDR PTR COPY 0(X),A GET CHAN NO. JLT  A,TESTDND IF IT'S DONE, EXIT COPY =0,A COPY =8,Q MUL 0(X),AQ CALC AUTO I/O BLOCK ADDR COPY INTBAS,Y GET INT VECTOR BASE ADDR ADD Q,Y COPY 1(Y),A GET BYTE COUNT AND =:7FFF,A MASK OUT BIT 15 JEQ A,TESTD5 IF CNT IS 0, GO FOR NXT CHAN COPY 0(X),X ELSE, SEE IF EOB COPY =RVXSTAT,Y GET RCV STATUS ADDR COPY 0(X,Y),A GET STATUS CSK A,=-1 NOP JMP TESTD3 IF EOB, ELSE.. COPY ADBAS,A GET DEVICE ADDR SHIFT A,LO,4 SHIFT X,LO,1 OR X,A XNX A IN DAFC,A READ IN STATUS SHIFT X,RO,1 COPY A,0(Y,X) SAVE STATUS COPY =0,A GET ERR #### COPY A,ERNO JSK ERR JMP TESTD3+4 GO OUTPUT CHAN # & STATUS JMP TESTD5 GO NEXT CHAN IF NO REPORT WANTED TESTD3 EQU $ COPY =1,A GET ERR #### JSK ERR JMP $+2 JMP TESTD5 NEXT CHAN IF NO REPORT WANTED COPY =CHANNO,A JSK MSG OUTPUT ' CHANNEL NO: ' COPY X,A JSK DECOUT AND THE NUMBER COPY =CHANST,A JSK MSG OUTPUT ' CHANNEL STATUS: ' COPY 0(X,Y),A GET STATUS JSK HEXOUT AND OUTPUT JSK NEWLINE JMP TESTD5 GO FOR NXT CHAN TESTD5 EQU $ IMS CHLPTR NOP JMP TESTD2 GO NXT CHAN TESTDND EQU $ JSK EROTAL GO TALLY SUB JMP *TESTD RETURN TO EXEC LPOOL TITL TEST E-UIS INSTRUCTION TEST ****************************************************** * * TEST E-UIS INSTRUCTION TEST * * THIS TEST WILL DO THE SAME THING AS IN TEST E * EXCEPT THAT IT DISABLES AND REENABLE THE EOB * INTERRUPTS BY THE UIS INSTRUCTION AND VERIFIES * THE VELIDITY OF THE INSTRUCTION. * ****************************************************** * TESTE ENT COPY =TSTE,A PRINT ' TEST E' JSK MSG COPY =0,A COPY A,CELLE INITIALIZE COUNT CELL COPY A,CELLEE COPY A,ERORE CLEAR ERROR CNT CELL COPY =4,A COPY A,EROTT SAVE OFFSET=4 FOR TALLY USE COPY =RBUFPTR,A COPY A,BUFPTR1 SET UP RCV BUFFER PTR COPY =XBUFPTR,A COPY A,BUFPTR0 SET UP XMT BUFFER PTR COPY =SMSOT,A COPY A,CMDWD1 SET XMT BUFFER COMMAND COPY =SMSIN,A COPY A,CMDWD2 SET RCV BUFFER COMMAND COPY =:100,A COPY A,BYTCNT SET BYTE COUNTS JSK CLRBUF CLEAR RCV BUFFERS COPY =TSTLST2,A COPY A,TSTLPT SET TEST LIST ADDR PTR * COPY =64,A COPY A,MODE SET 2ND VECTOR OFFSET FOR FULL DPX COPY =CHLXCRT,A GET CHAN LIST AND COPY A,CHLPTR PUT INTO POINTER JSK PAIOB SET AUTO AIO BLOCKS JSK CLXSTA CLEAR XMT STATUS JSK CLRSTA CLEAR RCV STATUS SBIT 8,S ENABLE INTERRUPT SBIT 12,S DISABLE EOB INT UIS UPDATE STATUS JSK OUTOP DO OPERATION COPY =-2,A JST TIMER SET UP TIMER FOR 2 COUNTS JST TIME JMP $-1 TIME NOT EXPIRED YET COPY =-8,Q SET UP COUNT COPY =RVXSTAT,X TESTE2 EQU $ COPY 0(X),A CSK A,=-1 NOP JMP TESTE3 ERROR ADD =1,Q BUMP COUNTER CLSN Q,=0 CNT EXPIRED? JMP TESTE4 YES, GO CHECK XMT STATUS ADD =1,X BUMP POINTER JMP TESTE2 GO CHECK AGAIN LPOOL TESTE3 COPY =2,A GET ERROR #### COPY A,ERNO AND SAVE JSK ERR CALL ERROR ROUTINE NOP TESTE4 EQU $ COPY =-8,Q SET UP COUNT COPY =XMTSTAT,X COPY 0(X),A CSK A,=-1 NOP JMP TESTE5 ERROR ADD =1,Q BUMP COUNT CLSN Q,=0 COUNT EXPIRED? JMP TESTE6 YES, GO ON ADD =1,X BUMP POINTER JMP TESTE4+2 AND CHECK AGAIN TESTE5 COPY =3,A GET ERROR #### COPY A,ERNO AND SAVE JSK ERR NOP AND GO ON TESTE6 EQU $ RBIT 12,S ENABLE EOB INT UIS COPY =-1,A JST TIMER SET UP TIMER FOR 1 COUNT JST TIME JMP $-1 TIME NOT YET EXPIRE COPY =-8,Q SET UP COUNT COPY =RVXSTAT,X TESTE7 EQU $ COPY 0(X),A CSK A,=-1 NOP IMS CELLE ADD =1,Q CLSN Q,=0 CO UNT EXPIRED? JMP TESTE8 YES, GO CHECK XMT STATUS ADD =1,X ELSE BUMP POINTER JMP TESTE7 AND CHECK AGAIN TESTE8 COPY =-8,Q COPY =XMTSTAT,X COPY 0(X),A CSK A,=-1 NOP IMS CELLE ADD =1,Q CLSN Q,=0 COUNT EXPIRED? JMP $+3 YES, GO CHECK # OF INT ADD =1,X ELSE BUMP PTR JMP TESTE8+2 AND CHECK AGAIN COPY CELLE,A GET # OF EOB CSK A,=0 ANY EOB? NOP JMP TESTE9 YES, GO SEE HOW MANY COPY =4,A NO EOB, ERROR COPY A,ERNO ERR #### JSK ERR NOP JMP TESTEND GO END OF TEST TESTE9 EQU $ COPY =CHLXCRT,X INDEX TEST CHANS COPY 0(X),A JLT A,TESTE9A JMP IF END TABLE IMS CELLEE BUMP EXP EOB COUNT IMS CELLEE FOR BOTH XMT & RCV ADD =1,X BUMP POINTER JMP TESTE9+1 COUNT AGAIN TESTE9A COPY CELLE,A GET ACT EOB CNT COPY CELLEE,Q GET EXP EOB CNT CSN A,Q SAME ? JMP TESTEND YES, EXIT TEST COPY =5,A ELSE, NOT ENOUGH EOB COPY A,ERNO ERR #### JSK ERR JMP $+2 JMP TESTEND EXIT IF NO REPORT WANTED COPY =EOBEX,A JSK MSG PRINT ' EXPECTED EOB: ' COPY CELLEE,A JSK DECOUT COPY =EOBACT,A JSK MSG PRINT ' ACTUAL EOB: ' COPY CELLE,A GET ACTUAL # OF EOB JSK DECOUT AND PRINT JSK NEWLINE TESTEND EQU $ JSK EROTAL GO TALLY SUB JMP *TESTE EXIT LPOOL TITL TEST F-SPECIAL CHARACTER DETECT ***************************************************** * * TEST F-SPECIAL CHARACTER DETECT * * 1) THE SPECIAL CHARACTER DETECT RAM IS INITAILIZED * (RESET) FOR ALL CHANNELS * 2) THIS TEST WILL ISSUE & RECEIVE A PREDEFINED * SPECIAL CHARACTER THROUGH THE SAME CHANNEL * IN FULL DUPLEX MODE * 3) THEN, SPECIAL CHARACTER DETECT IS CHECKED * FOR EACH TESTED CHANNEL. * 4) DO CHANNEL RESET * * : ERROR WILL BE REPORTED AS SELECTED BY QUERY * ****************************************************** * TESTF ENT COPY =TSTF,A PRINT ' TEST F ' JSK MSG SPCH EQU $ COPY =0,A COPY A,COUNT INITIALIZE TO ZERO COPY ADBAS,A SHIFT A,LO,4 ADD =1,A COPY A,Q Q REG NOW HAS DEVICE ADDRESS COPY =:8000,A A REGISTER HAS CLEAR CHARACTER INF0 LOOP1 XNX Q OUT A,0 SEND COMMAND ADD =1,A FOR NEXT ASCII CHARACTER CLSN A,=:FF DO ALL 256 CHARACTERS JMP NXTCNL GET NEXT CHANNEL  JMP LOOP1 GO DO NEXT CHARACTER LPOOL * * NXTCNL COPY COUNT,A GET CHANNEL COUNT CLSN A,=:1E JMP INITDON INITIALIZATION DONE ADD =2,Q NEXT CHANNEL ADDRESS ADD =2,A UPDATE CHANNEL COUNT COPY A,COUNT COPY =:8000,A  START OVER WITH FIRST CHARACTER JMP LOOP1 GO DO IT * INITDON EQU $ COPY ADBAS,A GET DEVICE ADDRESS SHIFT A,LO,4 SHIFT TO RIGT LOCATION ADD =1,A FUNCTION CODE COPY A,Q COPY =:88AA,A SET SPECIAL CHARACTER LOOP2 XNX Q OUT A,0 SET CHANNEL ZERO SPECIAL CHARACTER ADD =2,Q NEXT CHANNEL CLSN Q,=:FF IS IT LAST CHANNEL JMP ALDONE JMP LOOP2 DO NEXT CHANNEL ALDONE JMP OLDSTF COUNT WORD 0 * * OLDSTF EQU $ COPY =0,A COPY A,ERORF CLEAR ERR CNT CELL COPY =5,A COPY A,EROTT SAVE OFFSET=5 FOR TALLY COPY =LSC+SC+ESCD,A GET LOAD SPECIAL CHAR CMD & SPEC CHAR COPY A,CMDWD3 FOR INITIALIZATION COPY =TSTLST3,A GET TEST LIST PTR COPY A,TSTLPT AND SAVE IT COPY =64,A (MAY NOT NEED IT) COPY A,MODE COPY =20*2/10,Q SET TIME =2/10 SECOND COMP Q COPY Q,CLOCK JSK DOIT SEND COMMANDS COPY =SRBUFPTR,A COPY A,BUFPTR1 SET UP RCV BUF P TR COPY =SXBUFPTR,A COPY A,BUFPTR0 SET UP XMT BUF PTR COPY =SMSOT,A COPY A,CMDWD1 SET XMT BUF CMD COPY =SMSIN+SSC+,A COPY A,CMDWD2 SET RCV BUF CMD COPY =:10,A COPY A,BYTCNT SET BYTE COUNTS JSK CLRBUF CLEAR RCV BUFFERS COPY =TSTLST2,A COPY A,TSTLPT SET TEST LIST ADDR PTR COPY =64,A COPY A,MODE SET 2ND VECTOR OFFSET FOR FULL DPX COPY =CHLXCRT,A GET CHAN LIST AND COPY A,CHLPTR PUT INTO POINTER JSK PAIOB SET AUTO AIO BLOCKS COPY =0,A COPY =20*3,Q SET TIMEOUT = 3 SECONDS COMP Q COPY Q,CLOCK JSK DOIT SEND COMMANDS * COPY =CHLXCRT,A GET CHAN LIST COPY A,CHLPTR PUT INTO POINTER TESTF1 EQU $ COPY CHLPTR,X SET CHAN LIST ADDR PTR COPY 0(X),A GET CHAN NO. JLT A,TESTFND IF DONE, EXIT COPY =0,A COPY =8,Q MUL 0(X),AQ CALC AUTO I/O BLOCK ADDR COPY INTBAS,Y GET INT. VECTOR BASE ADDR ADD Q,Y COPY 1(Y),A GET BYTE COUNT COPY 0(X),X GET CHAN NO IN X AND =:7FFF,A MASK OUT BIT 15 JNE A,TESTF2 IF CNT NE 0, GO CHECK IF EOB COPY =6,A ERR #### COPY A,ERNO ERROR 6: FAILED SPEC CHAR DETECT JSK ERR JMP TESTF4 GO OUTPUT CHAN # & STATUS JMP TESTF5 GO NEXT CHAN IF NO REPORT WANTED TESTF2 EQU $ COPY =RVXSTAT,Y GET RCV STATUS ADDR COPY 0(X,Y),A GET STATUS CSK A,=-1 NOP JMP TESTF3 IF EOB, CHECK STA WD, ELSE... COPY ADBAS,A GET DEVICE ADDR SHIFT A,LO,4 SHIFT X,LO,1 OR X,A XNX A IN DAFC,A READ IN STATUS AND =:FF,A MASK OFF UNUSED BITS SHIFT X,RO,1 COPY A,0(Y,X) SAVE STATUS COPY =7,A GET ERR #### COPY A,ERNO JSK ERR JMP TESTF4 GO OUTPUT CHAN # & STAT JMP TESTF5 GO NEXT CHAN IF NO REPORT WANTED TESTF3 EQU $ AND =:A0,A SAVE ERROR BITS JEQ A,TESTF5 JMP IF NO ERROR, ELSE... COPY =8,A ERR #### COPY A,ERNO ERROR 8: RCV/FRAM ERROR JSK ERR JMP TESTF4 JMP TESTF5 TESTF4 EQU $ COPY =CHANNO,A JSK MSG OUTPUT ' CHANNEL NO: ' COPY X,A JSK DECOUT AND THE NUMBER COPY =CHANST,A JSK MSG OUTPUT ' CHANNEL STATUS: ' COPY 0(X,Y),A GET STATUS JSK HEXOUT AND OUTPUT JSK NEWLINE TESTF5 EQU $ IMS CHLPTR NOP JMP TESTF1 GO NEXT CHANNEL TESTFND EQU $ JSK EROTAL GO TALLY SUB SBIT 8,S ENABLE CPU INTERRUPT COPY =RESET,Q GET COMMAND COPY =CHLXCRT,Y INDEX NON CRT TEST CHAN COPY 0(Y),X GET CHANNEL TESTFND1 JSK DEVADR XNX A OUT Q,DAFC RESET CHAN ADD =1,Y BUMP CHAN PTR COPY 0(Y),X GET NEXT CHANNEL JLT X,$+2 JMP IF DONE JMP TESTFND1 ELSE, REDO JMP *TESTF EXIT LPOOL TITL TEST G-SIGNAL TEST ****************************************************** * * TEST G-SIGNAL TEST; THIS TEST WILL ISSUE FOUR SET MODE * COMMANDS TO NON-CRT CHANNELS AND CHECK THEIR RESPONSE * SIGNALS. IF ANY OF THEM DOESN'T MATCH WITH THE * EXPECTED SIGNAL, ERROR REPORT WILL BE GENERATED. * * OUTPUT COMMANDS EXPECTED STATUS * --------------- --------------- * * :400 XXX0 * :401  XXX5 * :402 XXX0 * :403 XXX5 * REVISED FOR ACC ****************************************************** * TESTG ENT COPY =TSTG,A PRINT ' TEST G (NON-CRT)' JSK MSG COPY =0,A COPY A,ERORG CLEAR CNT CELL COPY =6,A COPY A,EROTT SAVE OFFSET=6 FOR TALLY COPY =CHLXCRT,A COPY A,CHPTXCRT INITIALIZE CHANNEL PTR TESTG1 EQU $ COPY =SIGEX,A COPY A,SIGPTR INITIALIZE EXPECTED SIGNAL PTR COPY =SIGASC,A COPY A,SIGASPTR INITIALIZE OUTPUT BUF PT R COPY =:400,A COPY A,CMDWD3 INITIALIZE SET MODE COMMAND COPY =-4,A COPY A,CELLG INITIALIZE COUNT TESTG2 EQU $ COPY =-1,A COPY A,TC2 COPY =-128,A COPY A,TC1 PREPARE FOR SOFT TIMMING COPY CMDWD3,Q GET SET MODE COMMAND COPY CHPTXCRT,Y INDEX CHAN NO. PTR COPY 0(Y),X GET CHAN NO. IN X-REG CLSN X,=4 JMP TESTG3A SKIP CHANNEL 4 JSK DEVADR CALL DEVICE ADDR XNX A OUT Q,DAFC SEND COMMAND JST TIME TIME FOR VERY LITTLE TIME JMP $-1 XNX A IN DAFC,A GET STATUS COPY A,SIGACT SAVE IT AND =:F,A MASK OUT UNWANTED BITS COPY SIGPTR,X INDEX EXPECTED SIG PTR COPY 0(X),Q GET IT CSN A,Q CAT & CAT ? JMP TESTG3 YES, GOOD COPY =9,A GET ERR #### COPY A,ERNO JSK ERR IF ERROR REPORT WANTED JMP TESTG4 GO REPORT ERR, ELSE GOON TESTG3 EQU $ IMS SIGPTR IMS SIGASPTR IMS CMDWD3 IMS CELLG JMP TESTG2 NEXT CMD IF NOT FINISHED TESTG3A IMS CHPTXCRT BUMP CHAN PTR COPY CHPTXCRT,Y INDEX COPY 0(Y),A GET CHAN # JLT A,$+2 NO MORE ? JMP TESTG1 YES, SOME MORE JMP *TESTG NO, NO MORE * TESTG4 EQU $ COPY =CHANNO,A JSK MSG OUTPUT ' CHANNEL NO: ' COPY 0(Y),A GET CHAN # JSK DECOUT AND OUTPUT COPY =CHANST,A JSK MSG ' CHANNEL STATUS: ' COPY =CHSTACT,A JSK MSG ' ACTUAL ' COPY SIGACT,A GET IT JSK HEXOUT AND OUTPUT COPY =CHSTEXP,A JSK MSG ' EXPECTED XXX' COPY =SIGASPTR,Y INDEX EXP WORD BUF PTR COPY 0(Y),A GET BUF ADDRESS JSK MSG OUT MESSAGE JSK NEWLINE JMP TESTG3 AND GO ON LPOOL TITL TECH TESTS SECTION ****************************************************** * * THIS IS TECH TEST SECTION AND CONSISTS OF 6 TESTS: * * TEST 1 IS DEVICE ADDRESS CHECK * TEST 2 IS PROGRAMED I/O DATA CHECK, USING LOOP BACK * TEST 3 IS PROGRAMED I/O DATA OUTPUT * TEST 4 IS SET MODE * TEST 5 IS INTERRUPT TEST * TEST 6 IS AUTO I/O DATA CHECK, USING LOOP BACK * * AT THE BEGINNING OF TECH TEST SECTION, PROGRAM WILL HALT, * ALLOWING OPERATOR TO ENTER TEST PARAMETER IN A-REGISTER THROUGH * OPERATOR'S PANNEL. OPERATOR HAS TO PRESS RUN/STOP SWITCH ONCE, * THEN ENTER HEX PARAMETER IN A-REG, THEN PRESS RUN/STOP SWITCH TO * START THE TECH TEST. CONSOLE INT WILL BRING PROGRAM CONTROL BACK * TO BEGINNING OF TECH TEST SECTION. INPUT AND OUTPUT OF ALL TESTS * ARE DESCRIBED PICTORALLY AS FOLLOW: * * CDR OUTPUT * TEST BITS INPUT IN A-REGISTER UP-BYTE LOW-BYTE * ---- ------------------------ -------- ---------- * 1 0000 XXXX XXXX XXXX 1 0 DEVICE ADDR * 2 0001 ???? TX DATA TX DATA RX DATA * 3 0010 ???? TX DATA 3 CHAN CHAN STATUS * 4 0011 ???? XXXX 0--3 4 CHAN CHAN STATUS * 5 0100 XXXX XXXX XXXX ......COUNT.......... * 6 0101 ???? TX DATA TX DATA RX DATA * * ???? STANDS FOR PORT AND CHANNEL: THE LOWER 3 BITS STAND FOR PORT * 0 TO 7, THE 4TH BIT STANDS FOR EITHER CHANNEL 0 OR CHANNEL 1 *  OF PORT SPECIFIED IN THE LOWER 3 BITS. * TX STANDS FOR TRANSMIT * RX STANDS FOR RECEIVE * XXXX ARE UNCARE BITS * ****************************************************** * TECHB HLT TECH EQU $ SBIT 4,S CONSOLE INT ENABLE SBIT 8,S CPU INT ENABLE RBIT 6,S OFF X-ADDRESSING COPY =STACK,Q INITIALIZE STACK COPY Q,K COPY =STACKE,Q COPY Q,L * COPY A,TASAV SAVE A-REGIS TER SHIFT A,RO,12 GET TEST NUMBER JEQ A,TECH1 TECH TEST 1 SUB =1,A JEQ A,TECH2 TECH TEST 2 SUB =1,A JEQ A,TECH3 TECH TEST 3 SUB =1,A JEQ A,TEC4 TECH TEST 4 SUB =1,A JEQ A,TEC5 TECH TEST 5 JMP TECH6 ELSE TECH TEST 6 TEC4 JMP TECH4 TEC5 JMP TECH5 * *** TEST 1 DEV ADDR CHK A-->(0 X X X) (1 0 DEV ADDR)-->CDR *** * TECH1 EQU $ COPY =0,A START WITH DAV 0 XNX A ADD TO DAFC FOR NEXT INSTRUCTION SST 0 SENSE AND SKIP IF TRUE JMP TECH12 OUT DEVICE ADDR AND GO NXT LOOP CLSN A,=:1E LAST ADDRESS? JMP TECH11 NO, OUT 0 AND NXT LOOP ADD =2,A ELSE, BUMP ADDRESS JMP TECH1+1 DO NEXT CHANNEL TECH11 COPY =0,A TECH12 ADD =:1000,A ADD W/ TEST NUMBER COPY =:110,Q COPY Q,S ENABLE INTS SELP A,4 SEND TO CDR JMP TECH1 LOOP AGAIN * *** TEST 2: PROG I/O DATA CHK A-->(1 CHAN TX DATA) (TX RX)-->CDR *** * TECH2 EQU $ COPY =:0602,Q JST TDEVAD CALC DEVICE ADDR --> A-REG XNX A OUT Q,1 GET ACC READY TO OPERATE TECH21 NOP 3 NOP TO PROVIDE SOME TIME FOR ACC NOP NOP COPY TASAV,Q AND =:FF,Q NEED ONLY DATA XNX A OUT Q,0 OUT DATA * COPY =-255,A JST TIMICRO JST TIME JMP $-1 * JST TDEVAD CBIT 4,A COMPLEMENT BIT 4 XNX A IN 1,X TBIT 3,X JT OV,$+3 COPY =0,X NO RECV DATA JMP TECH22 XNX A IN 0,X GET DATA IN X-REG THRO COMPLEMENT CHANNEL AND =:FF,X TECH22 COPY TASAV,A AND =:FF,A GET TX DATA FIELD SHIFT A,LO,8 SHIFT TO RIGHT POSITION OR X,A PUT TOGETHER SELP A,4 OUT TO CDR JMP TECH2 LOOP AGAIN * *** TEST 3: PROG I/O DATA OUT A-->(2 CHAN TX DATA) (3 CHAN STAT)-->CDR * * TECH3 EQU $ JST TDEVAD CALC DEV ADDR --> A-REG COPY =:0100,Q RESET COMMAND XNX A OUT Q,1 OUT AS COMMAND COPY =-30,A JST TIMICRO JST TIME JMP $-1 COPY =:0602,Q GET ACC READY TO OPERATE JST TDEVAD XNX A OUT Q,1 COPY =-30,A JST TIMICRO JST TIME JMP $-1 JST TDEVAD TECH31 COPY TASAV,Q AND =:FF,Q NEED ONLY DATA XNX A OUT Q,0 XNX A IN 1,X GET CHANNEL STATUS AND =:FF,X STATUS ONLY COPY TASAV,Q AND =:F00,Q CHANNEL ONLY OR Q,X ADD =:3000,X TEST 3 SELP X,4 OUT TO CDR JMP TECH31 LOOP AGAIN LPOOL * *** TEST 4: SET MODE A-->(3 CHAN X MODE) (4 CHAN STAT)-->CDR *** * TECH4 EQU $ JST TDEVAD GET DEV ADDR --> A-REG COPY TASAV,Q AND =:003,Q GET COMMAND OR =:400,Q WITH SET MODE XNX A OUT Q,1 NOP NOP MAY NEED SOME TIME NOP XNX A IN 1,X GET CHANNEL STATUS AND =:FF,X STATUS ONLY COPY TASAV,Q AND =:F00,Q CHANNEL ONLY OR Q,X ADD =:4000,X TEST4 SELP X,4 OUT TO CDR JMP TECH4 LOOP AGAIN * *** TEST 5: INTERRUPT A-->(4 X X X) (COUNT)-->CDR *** * TECH5 EQU $ COPY =0,A COPY A,T5CNT1 CTR FOR CDR TECH51 COPY =:180,X INT STARTING ADDRESS COPY =:9E7F,A JMP $ INSTRUCTION COPY =:1D7E,Q COUNT COPY A,0(X) FILL :180 TO :1EFF W/ JMP $ INST ADD =1,X JNED Q,$-2 COPY =-16,A COPY A,T5CNT2 CTR FOR CHANNELS COPY =:E0,A START W/ 1ST CHAN COPY =RESET,Q RESET COMMAND XNX A OUT Q,1 DO IT ADD =2,A BUMP CHANNEL IMS T5CNT2 JMP $-4 DO NEXT CHANNEL TILL DONE COPY =-16,A COPY A,T5CNT2 COPY =:E0,A TECH52 EQU $ COPY =:8000,Q CLEAR ALL CHARS XNX A OUT Q,1 ADD =1,Q NEXT CHARACTER CLSN Q,=:FF SEE IF ALL 256 DONE JMP $+2 DONE ONE CHANNEL JMP TECH52+1 DO CLEAR NXT CHAR ADD =2,A BUMP CHANNEL IMS T5CNT2 JMP TECH52 DO NXT CHAN, TILL DONE COPY =:110,A COPY A,S ENABLE INTS COPY =-1,A SET TIMER FOR 1 COUNT JST TIMER JST TIME JMP $-1 COPY T5CNT1,A GET CDR COUNT SELP A,4 OUT TO CD R IMS T5CNT1 UPDATE COUNT JMP TECH51 LOOP AGAIN JMP BEGIN IF COUNT BUMP BACK TO 0, GO ORIGIN LPOOL * *** TEST 6: AUTO I/O DATA CHK A-->(5 CHAN TX DATA) (TX RX)--CDR *** * TECH6 EQU $ COPY =-1,A COPY A,T6AIST CLEAR RCV STATUS COPY A,T6AOST CLEAR XMT STATUS COPY =T6BFRX,X CLEAR RECEIVE BUFFER COPY =0,A COPY =-16,Q COPY A,0(X) ADD =1,X IJNE Q,$-2 COPY TASAV,A FILL XMT BUFFER W/ DATA AND =:FF,A GET DATA ONLY COPY A,Q SHIFT Q,LO,8 OR Q,A COPY =T6BFTX,X COPY =-16,Q COPY A,0(X) ADD =1,X IJNE Q,$-2 *...............BUILDIG XMT IOB..... COPY TASAV,A AND =:F00,A NEED PORT & CHAN ONLY --> CHANNEL SHIFT A,RO,8 COPY A,TCHPT SAVE IT SHIFT A,LO,3 MULTIPLY BY 8 COPY =:180,X GET INT BASE ADRESS ADD A,X GET TO RIGHT STARTING LOCATION SHIFT A,RO,2 SHIFT PORT & CHAN TO RIGHT LOC OR =:E0,A COPY A,T6AOCH SAVE IN AO CHAN CELL OR =:6500,A AOB INST W/ CHANNEL COPY A,0(X) COPY =-:1F,A GET NEGATIVE BYTE COUNT COPY A,1(X) COPY =T6BFTX,A GET XMT BUFF ADDRESS SHIFT A,LO,1 FORM BYTE ADDR-1 SUB =1,A  COPY A,2(X) COPY =:FF80,A JSK *$+1 INSTRUCTION COPY A,4(X) COPY =TEOBTX,A EOB ADDRESS COPY A,5(X) COPY =0,A COPY A,3(X) COPY A,6(X) COPY A,7(X) *...............BUILDING RCV IOB..... COPY TCHPT,A GET PORT & CHAN CBIT 3,A COMPLEMENT THE CHANNEL SHIFT A,LO,3 MULTIPLY BY 8 COPY =:180,X GET INT BASE ADDRESS ADD A,X GET TO RIGHT STARTING LOC SHIFT A,RO,2 SHIFT BACK TO RIGHT LOC OR =:E0,A COPY A,T6AICH SAVE IN AI CHAN CELL OR =:4500,A AIB INST W/ CHANNEL COPY A,0(X) COPY =-:1F,A GET NEGATIVE BYTE COUNT COPY A,1(X) COPY =T6BFRX,A GET RCV BUFFER ADDR SHIFT A,LO,1 FORM BYTE ADDR-1 SUB =1,A COPY A,2(X) COPY =:FF80,A JSK *$+1 INST COPY A,4(X) COPY =TEOBRX,A EOB ADDRESS COPY A,5(X) COPY =0,A COPY A,3(X) COPY A,6(X) COPY A,7(X) *.................................... SBIT 8,S ENABLE CPU INT COPY =SMSIN,Q INPUT COMMAND COPY T6AICH,A GET AI CHAN XNX A OUT Q,1 SEND COMMAND COPY =SMSOT,Q OUTPUT COMMAND COPY T6AOCH,A GET AO CHAN XNX A OUT Q,1 SEND THE COMMAND COPY =-1000,A SOFT TIME PORTION OF 1 COUNT JST TIMICRO JST TIME JMP $-1 COPY TASAV,A GET TX DATA SHIFT A,LO,8 SHIFT TO RIGHT LOC COPY T6BFRX,Q GET RCV DATA AND =:FF,Q LOWER BYTE ONLY OR Q,A COMBINE TX & RX DATA SELP A,4 OUT TO CDR JMP TECH6 LOOP AGAIN * TEOBTX EQU $ TX EOB ROUTINE COPY T6AOCH,A GET CHANNEL XNX A IN 1,A READ STATUS COPY A,T6AOST SAVE IT RSK * TEOBRX EQU $ RX EOB ROUTINE COPY T6AICH,A GET CHANNEL XNX A IN 1,A READ STATUS COPY A,T6AIST SAVE IT RSK * LPOOL *---------- THIS IS THE TDEVAD SUB TO CALC ADDR, AND PUT IN A-REG ----- TDEVAD ENT COPY TASAV,A AND =:F00,A MASK OUT UNWANTED BITS SHIFT A,RO,7 SHIFT TO RIGHT PLACE ADD =:E0,A ADD STANDARD BOARD ADDRESS COPY A,TASAV1 SAVE IT JMP *TDEVAD RET LPOOL TITL SUBROUTINES SECTION ****************************************************** * * SUBROUTINES SECTION CONTAINS THE FOLLOWING SUBROUTINES: * * NEWLINE, MSG, GETDV, HEXIN, DECOUT, WMOREG, CLRBUF * PAIOB, DOIT, EOB, OTTY, ......... * ****************************************************** * *---------------------------------------------------- * * CHRIN-SUB TO CHECK TERMINATOR * * CHECK TERM FOR INPUT THRU 'DECIN' OR '...' SUBS * CALLING SEQUENCE: * JST CHRIN * JMP QURY#2 CARRIAGE RETURN R * JMP QURY#3   POUND SIGN R+1 * JMP QURY#4 BACK ARROW R+2 * JMP QURY#5 UP ARROW R+3 *  JMP QURY#6 COMMA R+4 * JMP QURY#7 ANYTHING ELSE R+5 * CHRIN ENT COPY ICHR,A GET INPUT CHARACTER CLSN =CR,A IS IT A CR ? JMP *CHRIN YES IMS CHRIN CLSN ='#',A A '#' SIGN ? JMP *CHRIN IMS CHRIN CLSN =:5F,A BACK ARROW ? JMP *CHRIN IMS CHRIN CLSN =:5E,A UP ARROW ? JMP *CHRIN IMS CHRIN CLSN =',',A A ',' ? JMP *CHRIN IMS CHRIN ELSE,... JMP *CHRIN LPOOL TITL SUB ROUTS * *----------------------------------------------------- * * CLRBUF-SUB TO CLEAR THE BUFFERS * CLRBUF EQU $ PUSH SSTAT COPY =CHNLST1,X COPY X,CHLPTR1 CLRBUF0 COPY 0(X),X GET CHANNEL NO. JLT X,CLRBUF1 COPY BUFPTR1,Y GET RCV BUFFER PTR COPY 0(Y,X),Y GET BUFFER ADDRESS COPY =0,A COPY BYTCNT,Q GET NO. BYTES ADD =1,Q SHIFT Q,RO,1 CHANGE INTO WORD CNTS NEG Q COPY A,0(Y) CLEAR BUFFER ADD =1,Y INCREMENT BUFER ADDRESS IJNE Q,$-2 DO UNTIL DONE IMS CHLPTR1 NOP COPY CHLPTR1,X JMP CLRBUF0 GO TO NEXT CHANNEL CLRBUF1 POP RSK RETURN THROUGH STACK LPOOL TITL SUB ROUTS. * *----------------------------------------------------- * * CLRSTA-SUB TO CLEAR RCV STATUS TABLE * CLRSTA EQU $ PUSH SSTAT COPY =-8,Q TRY 8 TIMES COPY =RVXSTAT,Y COPY =0,X CLRSTA1 COPY =-1,A COPY A,0(Y,X) ADD =1,X IJNE Q,CLRSTA1 POP RSK * *----------------------------------------------------- * * CLXSTA-SUB TO CLEAR XMT STATUX TABLE * CLXSTA EQU $ PUSH SSTAT COPY =-8,Q TRY 8 TIMES COPY =XMTSTAT,Y GET STATUS TABLE PTR COPY =0,X CLXSTA1 COPY =-1,A COPY A,0(Y,X) ADD =1,X IJNE Q,CLXSTA1 POP RSK LPOOL TITL SUB ROUTS * *---------------------------------------------------- * * DECIN-SUB TO INPUT DICIMAL; CONVERT TO BIN, RET IN X-REG *  EXITED UPON 1ST NON-DEC, RET IN A-REG * '?' IF VALUE > 32768 * DECIN EQU $ PUSH SSTAT DECIN1 COPY =0,A COPY A,DIVAL RESET VALUE CELL COPY A,DICNT AND COUNT DECIN2 JSK IKB GET A CHARACTER COPY A,ICHR AND SAVE SUB ='0',A SEE IF ASCII 0-9 JLT A,DECIN3 TERMINATOR SUB =10,A JGE A,DECIN3 TERMINATOR IMS DICNT BUMP COUNT COPY DIVAL,A ADD TO VALUE SHIFT A,LO,2 TIMES 4 ADD DIVAL,A TIMES 5 SHIFT A,LO,1 TIMES 10 ADD ICHR,A ADD NEW VALUE SUB ='0',A LESS ASCII PART JLT A,DECIN4 MINUS IS BAD  COPY A,DIVAL STORE NEW VALUE JMP DECIN2 DECIN3 COPY K,X COPY ICHR,A COPY A,AREG(X) COPY DIVAL,A COPY A,XREG(X) POP RSK RETURN * DECIN4 COPY ='?',A ERROR JST OTTY OUTPUT '?' JMP DECIN1 START AGAIN * DIVAL WORD 0 VALUE CELL ICHR WORD 0 ASCII CHAR CELL USED BY IKB ALSO DICNT WORD 0 COUNT LPOOL TITL SUB ROUTS * *----------------------------------------------------- * * DECOUT-SUB TO CONVERT BINARY NO. IN (A) TO DECIMAL * AND OUTPUT IT ON THE CRT * DECOUT EQU $ PUSH SSTAT COPY =DECTAB,Y COPY A,Q DECO10 EQU $ COPY 0(Y),X JLT X,DECO90 COPY =-1,A DECO20 EQU $ ADD =1,A SUB X,Q JGE Q,DECO20 ADD X,Q ADD ='0',A COPY Q,DECQSV SAVE Q-REG JST OTTY COPY DECQSV,Q RETRIVE IT ADD =1,Y JMP DECO10 DECO90 EQU $ POP RSK * DECTAB EQU $ WORD 10000,1000,100,10,1,-1 DECQSV WORD 0 SAVE Q-REG CELL LPOOL TITL SUB ROUTS * *----------------------------------------------------- * * DEVADR-SUB TO FORM DEVICE ADDR OF A PARTICULAR CHAN * ON ENTRY: (X)=CHANNEL NUMBER * ON RETURN: (A)=DEVICE ADDRESS * D EVADR EQU $ PUSH SSTAT COPY ADBAS,A GET BOARD BASE ADDR SHIFT A,LO,4 SHIFT X,LO,1 OR X,A COMBINE W/ CHAN NO. COPY K,X COPY A,AREG(X) POP RSK * *----------------------------------------------------- * * DOIT-SUB TO DO SEND COMMANDS AND CHECK ERRORS * DOIT EQU $ PUSH SSTAT JSK CLXSTA CLEAR XMT STATUS JSK CLRSTA CLEAR RCV STATUS SBIT 8,S ENABLE CPU INTERRUPT SBIT 5,S ENABLE RTC TOO JSK OUTOP JSK EXAMSTA WAIT FOR EOB INTERRUPTS RBIT 5,S TURN OFF RTC INTERRUPT * JSK ERRCHK CHECK FOR ERRORS POP RSK LPOOL TITL SUB ROUTS * *----------------------------------------------------- * * EOB-SUB COMMON EOB ROUTINE, Y=STATUS ADDR, X=CHAN# * EOB EQU $ COPY ADBAS,A GET DEVICE ADDRESS ADD =1,A ADD 1 TO IT SHIFT A,LO,4 SHIFT TO RIGHT POSITION SHIFT X,LO,1 SHIFT CHAN# OR X,A OR THEM TOGETHER XNX A PUT INTO DAFC IN DAFC,A READ STATUS SHIFT X,RO,1 COPY A,0(Y,X) SAVE STATUS INTO XMTSTAT/RVXSTAT POP RSK * *----------------------------------------------------- * * EOBS-SUB COMMON EOB ROUTINE FOR RCV IN FULL DPX * EOBS EQU $ COPY ADBAS,A GET DEVICE ADDRESS ADD =0,A ADD 0 TO IT SHIFT A,LO,4 SHIFT X,LO,1 OR X,A XNX A IN DAFC,A GET STATUS SHIFT X,RO,1 COPY A,0(Y,X) SAVE STATUS INTO RVXSTAT BUF POP RSK LPOOL TITL SUB ROUTS * *---------------------------------------------------- * * ERR-SUB TO EXAMINE THE OPTIONS WORD AND TAKE APPROPIATE * ACTIONS, AND TO OUTPUT ERROR NUMBER $ MESSAGES. * WILL RETURN TO +1 LOCATION IF NO ERROR REPORT WANTED. * ERR EQU $ PUSH SSTAT COPY =EROTAB,X INDEX ERR TAB COPY EROTT,A GET OFFSET ACCORDING TO TESTS ADD A,X INDEX TO RIGHT CELL COPY 0(X),A GET ERROR COUNT ADD =1,A UPDATE  COPY A,0(X) AND SAVE ERR0 EQU $ COPY CAR,A GET RUN OPTION TBIT 1,A SUSPRESS ERR BIT ON? JT OV,ERRNDS IF SO, EXIT; JSK NEWLINE COPY =ERHDG,A PRINT ' ERROR ' JSK MSG COPY ERNO,X GET ERNO AS OFFSET ADD =ERTBPT,X ADD TO POINTER COPY 0(X),A GET MSG ADDR JSK MSG JMP ERRND ERRNDS COPY K,X COPY 6(X),A GET RET ADDR ADD =1,A BUMP RET ADDR COPY A,6(X) ERRND EQU $ COPY CAR,A GET RUN OPTION TBIT 4,A HALT ON ERR BIT ON? JF OV,ERREND EXIT IF NOT COPY =HLTADR,A JSK MSG PRINT ' HALT ON ERROR; CALLER ADDR: ' COPY K,X COPY 6(X),A ADD =-1,A GET CALLER ADDR JSK HEXOUT AND OUTPUT HLT ERREND POP RSK RETURN LPOOL TITL SUB ROUTS * *---------------------------------------------------- * * EROTAL-SUB TO OUTPUT ERROR TALLY IF OPTION IS ON * EROTAL EQU $  PUSH SSTAT COPY CAR,A GET RUN OPTION TBIT 2,A IS ERR TALLY BIT ON? JF OV,EROTND NO, EXIT COPY =EROTMSG,A JSK MSG PRINT ' ERROR IN THIS TEST ' COPY =EROTAB,X INDEX BIGIN OF TABLE COPY EROTT,A GET OFFSET ADD A,X COPY 0(X),A GET # OF ERRORS JSK DECOUT JSK NEWLINE EROTND POP RSK LPOOL TITL SUB ROUTS * *----------------------------------------------------- * * EXAMSTA-SUB TO EXAMINE THE STATUS OF EACH CHANNEL * & LOOP UNTIL ALL BUSY FALGS ARE GONE OR TIME-OUT * OCCURES. * EXAMSTA EQU $ PUSH SSTAT EXAM0 COPY =CHNLST,X COPY X,CHLPTR SET CHAN. LIST ADDR PTR EXAMLP COPY 0(X),X GET CHAN. # JLT X,EXRSTA COPY TSTLPT,Y  COPY 0(Y,X),A GET TEST COMMAND TYPE AND =1,A IS IT XMT? JEQ A,EXAM1 COPY =XMTSTAT,Y COPY =-1,A CSK A,0(Y,X) IS XMT STATUS STILL NOT CHANGED NOP JMP $+2 JMP EXAM0 STATUS HAS NOT INPUTTED YET EXAM1 COPY TSTLPT,Y COPY 0(Y,X),A GET COMMAND TYPE AND  =2,A IS IT RCV? JEQ A,EXRSTA1 COPY =RVXSTAT,Y GET POINTER OF 2ND STATUS LIST COPY =-1,A CSK A,0(Y,X) IS STATUS STILL NOT CHANGED? NOP JMP EXRSTA1 JMP EXAM0 NO, NOT CHANGED YET! EXRSTA1 IMS CHLPTR INC. CHANNEL PTR NOP COPY CHLPTR,X JMP EXAMLP LOOK AT STATUS OF NEXT CHAN EXRSTA POP RSK LPOOL TITL SUB ROUTS * *----------------------------------------------------- * * GETDV-SUB TO GET DEVICE ADDRESS * UPON RETURN: (A)=DEVICE ADDRESS * (Q)=ERROR FLAG IF SET * GETDV EQU $ PUSH SSTAT COPY K,X GET STACK POINTER JSK HEXIN GET CHARACTER CLSN A,=:0D IS IT A CR? JMP DEFDV JNE Y,BADDV JEQ A,BADDV VALID DEVICE ADDR. :1-:1F? COPY A,Q SAVE THE HEX NO. JSK HEXIN CLSN A,=:0D IS IT A CR? JMP $+2 JMP BADDV SETDV COPY Q,AREG(X) PUT DEVICE ADDR IN A COPY =0,Q JMP $+2 BADDV COPY =1,Q INVALID ADDR FLAG COPY Q,QREG(X) PUT INTO Q POP RSK DEFDV COPY =:0E,Q DEFAULT DEVICE ADDR JMP SETDV LPOOL TITL SUB ROUTS * *----------------------------------------------------- * * HEXIN-SUB TO READ KEYBOARD INPUT AND CHANGE ASCII TO HEX * UPON RETURN: (A)=HEX CHARACTER, GARBAGE IF ERROR * (Y)=ERROR FLAG IF SET * HEXIN EQU $ PUSH SSTAT COPY K,X GET STACK POINTER COPY =0,Y RESET ERROR FLAG JSK IKB INPUT A BYTE CLSN A,=:0D IS IT A CR? JMP HEXDONE CSK A,=:30 CHECK RANGE 0-9 JMP BADHEX NOP CSK A,=:39 JMP $+2 JMP HEXCHR AND =:F,A JMP HEXDONE HEXCHR EQU $ CSK A,=:41 CHECK RANGE A-F JMP BADHEX NOP CSK A,=:46 JMP $+2 JMP BADHEX AND =:F,A ADD =9,A JMP HEXDONE BADHEX COPY =1,Y HEXDONE COPY A,AREG(X) PASS PARAMETERS TO STACK COPY Y,YREG(X) STACK POP RSK LPOOL TITL SUB ROUTS * *---------------------------------------------------- * * HEXOUT-SUB TO OUTPUT A-REG AS A HEX NUMBER * HEXOUT EQU $ PUSH SSTAT COPY =4,X COUNT CHARS TO OUTPUT COPY A,Q HEXO10 EQU $ SHIFT A,RO,12 GET UPPER NIBBLE SUB =10,A JGE A,HEXO20 ADD ='0'+10,A JMP HEXO30 HEXO20 EQU $ ADD ='A',A HEXO30 EQU $ COPY Q,HEXQSV SAVE Q-REG JST OTTY COPY HEXQSV,Q RETRIVE IT COPY Q,A SHIFT A,LO,4 COPY A,Q SUB =1,X JNE X,HEXO10 POP RSK * HEXQSV WORD 0 SAVE Q-REG LPOOL TITL SUB ROUTS * *----------------------------------------------------- * * IKB-SUB TO INPUT A BYTE FROM THE CRT * UPON RETURN: (A)=CHARACTER BYTE IN ASCII * IKB EQU $ PUSH SSTAT COPY =0,A COPY A,ICHR CLEAR INPUT CELL RBIT 8,S COPY =:8618,A START ECHO, NO INT. COPY REALOPER,Q GET REAL OPERATOR SHIFT Q,LO,1 XNX Q OUT A,DTTYDA%1;1 COPY =:100,X IKB10 EQU $ XNX Q IN DTTYDA%1;1,A SHIFT A,RO,4 JF OV,IKB10 XNX Q IN DTTYDA%1,A XNX Q OUT X,DTTYDA%1;1 COPY K,X AND =:7F,A COPY A,AREG(X) COPY A,ICHR COPY TO INPUT CELL ALSO SBIT 8,S ENABLE INTERRUPT POP RSK LPOOL TITL SUB ROUTS * *----------------------------------------------------- * * MSG-SUB TO OUTPUT A MESSAGE WHOSE ADDR IS IN (A). * MESSAGE IS TERMINATED BY ':FFFF' * MSG EQU $ PUSH SSTAT ADD A,A BYTE ADDRESS COPY A,X MSG10 EQU $ SBIT 2,S SET BYTE MODE COPYB 0(X),A RBIT 2,S CLSN =:FF,A TERMINAL BYTE? JMP MSG90 YES, END JST OTTY NO, OUTPUT IT ADD =1,X BUMP BYTE POINTER JMP MSG10 MSG90 EQU $ POP RSK * *----------------------------------------------------- * * NEWLINE-SUB TO OUTPUT A LF AND CR * NEWLINE EQU $ PUSH SSTAT COPY =:D,A JST OTTY COPY =:A,A JST OTTY POP RSK LPOOL TITL SUB ROUT S * *----------------------------------------------------- * * OTTY-SUB TO OUTPUT A CHAR TO CRT/TTY, (A)=CHAR * OTTY ENT COPY A,OTTMP1 SAVE A-REG COPY X,OTTMP2 SAVE X-REG RBIT 8,S COPY =:8612,X START, REQUEST TO SEND, DON'T INT COPY REALOPER,Q GET REAL OPERATOR'S CHAN SHIFT Q,LO,1 XNX Q OUT X,DTTYDA%1;1 XNX Q OUT A,DTTYDA%1 SEND CHARACTER COPY =:100,X XNX Q IN DTTYDA%1;1,A INPUT STATUS SHIFT A,RO,5 JF OV,$-3 IF STILL SET. CHANGED TO JF FOR ACC AND GOOD CODE XNX Q IN DTTYDA%1;1,A INPUT STATUS SHIFT A,RO,5 JF OV,$-3 IF STILL FULL XNX Q OUT X,DTTYDA%1;1 RESET CHANNEL COPY CAR,A GET OPTION WORD SHIFT A,RO,6 SEE IF LP IS ON JF OV,OTTY6 IF NOT SET, EXIT OTTY1 EQU $ COPY OTTMP1,A RESTORE A-REG OUT A,DLPDA%1 START IT COPY =:8610,A LP START UP COMMAND OUT A,DLPDA%1;1 START IT OUT A,DLPDA%1;1 DITTO COPY =0,A SET LOW WORD OF TIMER COPY A,TC1 SAVE COPY =-7,A SET HIGH WORD OF TIMER COPY A,TC2 AND SAVE JMP OTTY2 OTTYE JMP OTTY6 EXTENDED JUMP OTTY2 EQU $ IN DLPDA%1;1,A INPUT STATUS SHIFT A,RO,1 SHIFT 'BUSY BIT' TO OV JF OV,OTTY5 IF NOT BUSY, EXIT JST TIME GO SOFTWARE TIME IT FOR FEW SECONDS JMP OTTY2 TIME NOT EXPIRED YET COPY OTTMP1,A GT ORIGINAL A-REG CONTENT COPY A,OTTMP3 SAVE IT COPY CAR,A GET OPTION WORD SHIFT A,RO,6 SET OR NOT SET? JT OV,$+4 COPY =0,A IF NOT SET COPY A,OTTMP4 SAVE AS 0 FLAG JMP $+3 COPY =1,A IF SET COPY A,OTTMP4 SAVE AS 1 FLAG COPY OTTMP2,A GET ORI X-REG CONTENT COPY A,OTTMP5 SAVE IT COPY OTTY,A GET RET ADDR COPY A,OTTMP6 SAVE IT COPY CAR,A RBIT 5,A RESET LP OPTION COPY A,CAR COPY =LPMSG*2,X GET ERR MESS ADDR FOR ' LP TIMEOUT' OTTY3 SBIT 2,S SET BYTE MODE COPYB 0(X),A GET CHAR RBIT 2,S SET WORD MODE BACK CLSN A,=:FF IF END OF MESSAGE,EXIT JMP OTTY4 JST OTTY DISPLAY ON CRT ADD =1,X INC. MESSAGE ADDR JMP OTTY3 LOOP FOR MORE OTTY4 JSK IKB INPUT CHAR FROM KEYBORD COPY OTTMP6,A GET ORIGINAL RET ADDR COPY A,OTTY SAVE IT CLSN =0,A IS IT 0 OR 1? JMP $+5 COPY CAR,A IF NOT 0 SBIT 5,A SET LP OPTION BIT COPY A,CAR JMP $+4 COPY CAR,A IF 0 RBIT 5,A RESET LP OPTION BIT COPY A,CAR COPY OTTMP5,A GET ORIGINAL X-REG COPY A,OTTMP2 SET IT COPY OTTMP3,A GET ORIGINAL A-REG COPY A,OTTMP1 SET IT JMP OTTY1 OTTY5 COPY =:100,X GET LP RESET COMMAND OUT X,DLPDA%1;1 RESET LP SHIFT X,RO,1 WASTE SOME TIME JNE X,$-1 DITTO OTTY6 COPY OTTMP1,A RESTORE A-REG COPY OTTMP2,X RESTORE X-REG JMP *OTTY RETURN TO CALLER LPOOL TITL SUB ROUTS * *----------------------------------------------------- * * OUTOP-SUB TO PERFORM AN OUTPUT FUNCTION * ON ENTRY: CMDWD1=XMT COMMAND * CMDWD2=RCV COMMAND * CMDWD3=OTHER COMMAND * TSTLPT=TEST LIST ADDR PTR * OUTOP EQU $ PUSH SSTAT COPY =CHNLST,X COPY X,CHLPTR INIT CHAN LIST POINTER OUTOP0 COPY 0(X),X GET CHANNEL JLT X,OUTDNE COPY TSTLPT,Y COPY 0(Y,X),A AND =4,A JEQ A,$+3 COPY CMDWD3,Q JMP OUTOP3 COPY 0(Y,X),A GET TYPE OF COMMAND AND =2,A IS IT RCV? JEQ A,OUTOP1 COPY CMDWD2,Q GET COMMAND JSK DEVADR CALCULATE DEVICE ADDR XNX A OUT Q,DAFC SEND COMMAND OUTOP1 COPY 0(Y,X),A AND =1,A IS IT XMT? JEQ A,OUTOP2 COPY CMDWD1,Q JSK DEVADR CALC DEV ADDR ADD =:10,A ADD :10 TO ADDR FOR XMT XNX A OUT Q,DAFC JMP OUTOP2 OUTOP3 JSK DEVADR XNX A OUT Q,DAFC OUTOP2 IMS CHLPTR NOP COPY CHLPTR,X JMP OUTOP0 OUTDNE POP RSK LPOOL TITL SUB  ROUTS * *----------------------------------------------------- *----------------------------------------------------- * * PAIOB-SUB TO SET UP AUTO I/O BLOCKS * ON ENTRY: 'BYTCNT' =NO. OF BYTES FOR XFER * 'BUFPTR0'=XMT BUF ADDR POINTER *  'BUFPTR1'=RCV BUF ADDR POINTER * 'MODE' =64 FOR FULL DPX, =0 FOR HALF DPX * PAIOB EQU $ PUSH SSTAT COPY CHLPTR,X SET CHAN LIST ADDR POTINTER PAIOB0 COPY 0(X),X GET CHAN NO. JLT X,PAIODN IS IT DONE? COPY TSTLPT,Y COPY 0(Y,X),A GET COMMAND TYPE FROM LIST CSK A,=RCVXMT RCV & XMT FOR FULL DPX? JMP PAIOB1 NOP COPY =AOB,A COPY A,AIOINST COPY BUFPTR0,A  COPY A,BUFPTR SAVE IN BUF PTR COPY CHLPTR,X COPY =1,A ADD ADBAS,A ADD 1 TO DEV ADDR FOR XMT IN FULL DPX COPY A,ADBAS COPY MODE,A JSK RFAIOB SET IT UP COPY =-1,A ADD ADBAS,A RESTORE ORIGINAL DEV ADDR COPY A,ADBAS JMP PAIOB2+4 AND GO SET UP IOB FOR RCV PAIOB1 COPY TSTLPT,Y COPY 0(Y,X),A GET CMD TYPE AND =1,A IS IT XMT? JEQ A,PAIOB2 COPY =AOB,A COPY A,AIOINST SET AOB INSTRUCTION COPY BUFPTR0,A COPY A,BUFPTR SET BUF ADDR TAB PTR COPY CHLPTR,X COPY =1,A ADD 1 TO DEV ADDR FOR XMT ADD ADBAS,A  COPY A,ADBAS COPY =64,A JSK RFAIOB SET IT UP COPY =-1,A RESTORE ORIGINAL DEV ADDR ADD ADBAS,A COPY A,ADBAS PAIOB2 COPY TSTLPT,Y GET LIST ADDRESS COPY 0(Y,X),A GET COMMAND TYPE AND =2,A IS IT RCV? JEQ A,PAIOB3 COPY =AIB,A COPY A,AIOINST COPY BUFPTR1,A COPY A,BUFPTR COPY CHLPTR,X COPY =0,A JSK RFAIOB SET IT UP PAIOB3 IMS CHLPTR INC. CHAN NO. PTR NOP COPY CHLPTR,X JMP PAIOB0 PAIODN POP RSK LPOOL TITL SUB ROUTS * *----------------------------------------------------- * * RFAIOB-SUB TO SET UP APPRO DATA IN AUTO I/O BLOCKS * ON ENTRY: (X)=ADDRESS OF 'CHNLST' * ON RETURN: (X)=CHANNEL NUMBER * RFAIOB EQU $ PUSH SSTAT COPY =8,Q CALCULATE AUTO I/O BLOCK ADDR MUL 0(X),AQ COPY INTBAS,Y GET INTERRUPT VECTOR BASE ADDRESS ADD Q,Y COPY 0(X),X GET CHAN NO. JSK DEVADR FORM DEVICE ADDRESS COPY AIOINST,Q OR Q,A COMBINE W/ INSTRUCTION COPY A,0(Y) SAVE IN BLOCK COPY BYTCNT,A NEG A NEGATE BYTCNT COPY A,1(Y) COPY BUFPTR,A GET BUF ADDR TABLE PTR ADD A,X FORM BUFFER ADDRESS PTR COPY 0(X),A GET BUFFER ADDR SHIFT A,LO,1 FORM BYTE ADDR-1 SUB =1,A COPY A,2(Y) STORE IT COPY CHLPTR,X COPY 0(X),A GET CHANNEL NO. COPY K,X COPY A,XREG(X) SAVE IN STACK POP RSK LPOOL TITL SUBROUTINES * ******************************************************* * * * RSTALL - SUB TO RESET ALL THE CHANNELS (16) * INITIALIZES BOARD PRIOR TO AUTO I/O * ******************************************************** * RSTALL ENT COPY ADBAS,A GET BASE ADDRESS SHIFT A,LO,4 ADD =1,A COPY A,Q BASE ADDRESS WITH FC=1 NOW IN Q REGISTER COPY =:100,A AGAIN XNX Q OUT A,0 CSK Q,=:FF JMP $+3 < JMP *RSTALL > JMP *RSTALL = ADD =2,Q JMP AGAIN TITL *---------------------------------------------------- * * SETBF-SUB TO SET UP PRINT BUFFER FOR CRT/LP * * COPY START CHAR,A * COPY A,CHARSV * COPY BUFF ADDR,X * JSK SETBF * SETBF EQU $ PUSH SSTAT COPY =-40,A (CHAR/LINE DIV BY 2) COPY A,CPL SETBF1 COPY CHARSV,A FETCH CHARACTER CLSN =:5E,A LINE PRINTER LIMIT ?  JMP SETBF3 JMP IF YES SHIFT A,LO,8 LEFT JUSTIFY CHAR IMS CHARSV BUMP CHARACTER OR CHARSV,A COPY A,0(X) STORE IN BUFFER SETB F1A COPY CHARSV,A FETCH LAST CHAR CLSN =:5E,A LP LIMIT ? JMP SETBF2 JMP IF YES ADD =1,A BUMP CHARACTER JMP $+2 SETBF2 COPY =:20,A COPY A,CHARSV ADD =1,X BUMP BUF ADDR IMS CPL BUMP CHAR/LINE COUNT JMP SETBF1 JMP IF NOT FULL LINE POP RSK RETURN * SETBF3 SHIFT A,LO,8 LEFT JUSTIFY OR =:20,A COPY A,0(X) COPY =:20,A COPY A,CHARSV JMP SETBF1A LPOOL * TITL SUB ROUTS * *----------------------------------------------------- * * SOFTWARE TIMMING ROUTINES: * TIMER-SUB TO SET UP TIMING COUNTS (1 COUNT APPROX EQU 1 SEC). * COPY PROPER COUNTS IN A-REG BEFORE JST TIMER * TIMICRO-SUB TO SET UP VERY SMALL TIMING COUNTS (:FFFF = 1 COUNT IN * TIMER ROUTINE). COPY COUNTS IN A BEFORE JST TIMICRO * TIME-SUB TO DELAY (OR GIVE TIME TO) OPERATION FOR SPECIFIED * NUMBER OF COUNTS * TIME ENT IMS TC1 BUMP LSP TIMING CONSTANT JMP *TIME EXIT IMS TC2 BUMP MSP TIMING CONSTANT JMP *TIME EXIT TO CALLER+1 LOCATION IMS TIME SPECIAL RET, TIME EXPIRED JMP *TIME EXIT * TIMER ENT COPY A,TC2 COPY =0,A COPY A,TC1 JMP *TIMER * TIMICRO ENT COPY A,TC1 COPY =-1,A COPY A,TC2 JMP *TIMICRO LPOOL TITL TRAP/EXCEPTION SERVICE ROUTINES ****************************************************** * * TRAP/EXECTION SERVICE ROUTINES: * ARIER:,CHNUE:,CONINT,PWRFL:,PWRUP:,STKOV:, * SYSTR:,TIMEOUT,UNINT:,USETR: * ****************************************************** * * ------ ARITHMETIC ERROR ------ * ARIER: ENT SIN 4 STATUS INHIBIT COPY =ARMSG,X GET MESSAGE ADDR JMP SERVR PRINT IT * *  ------ CHAR./NUMERIC EXCEP. ------ * CHNUE: ENT SIN 4 STATUS INHIBIT COPY =CHMSG,X GET MES ADDR JMP SERVR PRINT IT * * ------ CONSOLE INTERRUPT ------ * CONINT ENT OUT A,1 RESET CONSOLE INT COPY =0,A COPY ADBAS,Q SHIFT Q,LO,4 ADD =4,Q XNX Q SELP A,0 RESET BOARD COPY TESTMODE,A GET TEST MODE JEQ A,$+2 DIAG MODE JMP TECHB TECH MODE JMP START * * ------ POWER FAIL ------ * PWRFL: ENT HLT WAIT FOR POWER * * ------ POWER UP ------ * PWRUP: ENT SIN 3 STATUS INHIBIT COPY =PFMSG,X GET MESS ADDR SERVR EQU $ COPY =0,A COPY A,S SET PSW TO 0 COPY ADBAS,Q SHIFT Q,LO,4 ADD =4,Q XNX Q SELP A,0 RESET BOARD COPY X,A GET MESSAGE ADDR JSK MSG HLT WAIT HERE JMP EXEC * * ------ STACK OVERFLOW ------ * STKOV: ENT SIN 4 STATUS INHIBIT COPY =STMSG,X GET MESS ADDR JMP SERVR PRINT IT * * ------ SYSTEM TRAP ------ * SYSTR: ENT SIN 4 STATUS INHIBIT COPY =SYMSG,X GET MESS ADDR JMP SERVR PRINT IT * * ------ TIME OUT SERVICE ROUT ------ * TIMEOUT EQU $ RBIT 5,S DISABL RTC INTERRUPT POP RSK RETURN FROM LAST SUB. CALL * * ------ UNIMPLEMENTED INST TRAP ------ * UNINT: ENT SIN 4 COPY =UINMSG,X GET ADDR JMP SERVR * * ------ UNINSTALLED MEMORY TRAP ------ * UNMET: ENT SIN 4 COPY =UMEMSG,X GET ADDR JMP SERVR PRINT IT * * ------ USER TRAP ------ * USETR: ENT SIN 4 COPY =USMSG,X GET ADDR JMP SERVR PRINT IT LPOOL TITL EOB SECTION ****************************************************** * * EOB SECTION * ****************************************************** * PEOB 0 PEOB 1 PEOB 2 PEOB 3 PEOB 4 PEOB 5 PEOB 6 PEOB 7 LPOOL SEOB 0 SEOB 1 SEOB 2 SEOB 3 SEOB 4 SEOB 5 SEOB 6 SEOB 7 LPOOL TITL SYSTEM BUFFERS ****************************************************** * * SYSTEM BUFFERS * ************************************** **************** * OPTIONS +:20 * ADBAS WORD :E DEVICE ADDRESS BASE CELL * AIOINST WORD 0 AIB/AOB INSTRUCTION * BUFPTR WORD 0 BUFPTR0 WORD 0 XMT BUFFER PTR BUFPTR1 WORD 0 RCV BUFFER PTR * BEGFLG WORD 0 BEGIN FLAG OF DIAG PROGRAM BYTCNT WORD 0 BYTE COUNT * CAR WORD 0 OPTION WORD * CELL0 WORD 0 TEMP CELL CELL1 WORD 0 CELL2 WORD 0 CELLC WORD 0 FOR TESTC CELQ3 WORD 0 FLAG CELL QUERY 30 CELLCBC RES 7,0 RECVED BYTE COUNT CELLE WORD 0 FOR TESTE CELLEE WORD 0 FOR EXPECTED EOB CNT CELLG WORD 0 FOR TEST G CELHEX WORD 0 HEX INPUT CELL * CHARS WORD 0 CHARSV WORD 0 * CPL WORD 0 CHARACTER PER LINE * CHNLST RES 9,-1 LIST OF CHAN NOS. TO BE TESTED, ALL TESTS CHLPTR WORD CHNLST CHANNEL LIST POINTER * CHNLST1 WORD 0,1,2,3,5,6,7,-1,-1 FOR CLEAR BUF AS OF NOW CHLPTR1 WORD CHNLST1 2ND CHAN LIST POINTER *CHNLST2 RES 8,-1 FOR TEST D,E PAIOB & RFAIOB *CHLPTR2 WORD 0 3RD CHAN LIST POINTER *CHNLST3 WORD 4,7,-1 CHANNEL LIST FOR TEST A * CHLLP WORD 7,-1 CHOPER WORD 4 OPERATOR CHANNEL (DEF=4) CHCRTD WORD 4,-1,-1,-1,-1,-1,-1,-1,-1,-1 CHLCRT WORD 4,-1,-1,-1,-1,-1,-1,-1,-1,-1 CHPTCRT WORD 0 CHXCRTD WORD 0,1,2,3,5,6,7,-1 CHLXCRT WORD 0,1,2,3,5,6,7,-1 CHPTXCRT WORD 0 * CMDWD1 WORD 0 XMT CMD WORD CMDWD2 WORD 0 RCV CMD WORD CMDWD3 WORD 0 OTHER CMD WORD * EBUF0 WORD :D0A RES 39,-1 EBUF1 WORD :D0A RES 39,-1 EBUF2 WORD :D0A RES 39,-1 EBUF3 WORD :D0A RES 39,-1 EBUF4 WORD :D0A RES 39,-1 EBUF5 WORD :D0A RES 39,-1 EBUF6 WORD :D0A RES 39,-1 EBUF7 WORD :D0A RES 39,-1 EBUFPTR WORD EBUF0+1,EBUF1+1,EBUF2+1,EBUF3+1,EBUF4+1,EBUF5+1,EBUF6+1 * WORD EBUF7+1 * * ADDED FOR ACC A100 * EBUFPTX WORD EBUF0,EBUF1,EBUF2,EBUF3,EBUF4,EBUF5,EBUF6,EBUF7 EBFMS BYTE CR,LF,' ECHO TEST, INPUT NOT MORE THAN 76 CHAR.',CR,LF,:20 EBFMSPT WORD EBFMS,EBFMS,EBFMS,EBFMS,EBFMS,EBFMS,EBFMS,EBFMS * EOBADR WORD EOBS0,EOBS1,EOBS2,EOBS3,EOBS4,EOBS5,EOBS6,EOBS7 WORD EOB0,EOB1,EOB2,EOB3,EOB4,EOB5,EOB6,EOB7 * ERNO WORD 0 ERROR CNT CELL * EROTT WORD 0 OFFSET CELL EROTAB EQU $ ERROR COUNT TABLE ERORA WORD 0 ERR CNT TEST A ERORB WORD 0 ERR CNT TEST B ERORC WORD 0 ERR CNT TEST C ERORD WORD 0 ERR CNT TEST D ERORE WORD 0 ERR CNT TEST E ERORF WORD 0 ERR CNT TEST F ERORG WORD 0 ERR CNT TEST G EROTOL WORD 0 TOTAL ERR CNT FOR ALL TESTS * INTBAS WORD :180 INTERRUPT BASE ADDRESS * LINES WORD -10 LINES PER CRT/LP * MODE WORD 0 MODREG WORD 0 MODE REGISTER * OTTMP1 WORD 0 A-REG SAVE CELL OTTMP2 WORD 0 X-REG SAVE CELL OTTMP3 WORD 0 SAVE A-REG OTTMP4 WORD 0 SAVE LP FLAG OTTMP5 WORD 0 SAVE X-REG OTTMP6 WORD 0 SAVE RET ADDRESS * PASS WORD 0 PASS COUNTER PASSDIV BYTE CR,LF,'------------------------------'  BYTE '------------------------------',:FF * REALOPER WORD 4 OPERATOR'S CHAN FOR OUTPUT * RVXSTAT RES 8,-1 RCV/XMT STATUS RCVBUF0 RES :80,0 CHAN #0 RCV BUFFER RCVBUF1 RES :80,0 CHAN #1 RCV BUFFER RCVBUF2 RES :80,0 CHAN #2 RCV BUFFER RCVBUF3 RES :80,0 CHAN #3 RCV BUFFER RCVBUF4 RES :80,0 CHAN #4 RCV BUFFER RCVBUF5 RES :80,0 CHAN #5 RCV BUFFER RCVBUF6 RES :80,0 CHAN #6 RCV BUFFER RCVBUF7 RES :80,0 CHAN #7 RCV BUFFER RBUFPTR WORD RCVBUF0,RCVBUF1,RCVBUF2,RCVBUF3,RCVBUF4,RCVBUF5 WORD RCVBUF6,RCVBUF7 * SIGACT WORD -1 ACTUAL STATUS SIGASC BYTE :32,:FF,:37,:FF,:30,:FF,:35,:FF SIGASPTR WORD SIGASC SIGEX WORD 0,5,0,5,2,7 EXPECTED STATUS SIGPTR WORD SIGEX * SRBUF0 RES :8,0 SRBUF1 RES :8,0 SRBUF2 RES :8,0 SRBUF3 RES :8,0 SRBUF4 RES :8,0 SRBUF5 RES :8,0 SRBUF6 RES :8,0  SRBUFPTR WORD SRBUF0,SRBUF1,SRBUF2,SRBUF3,SRBUF4 WORD SRBUF5,SRBUF6,SRBUF6 * SXBUF RES 3,:1111 WORD :11AA RES 4,:1111 SXBUFPTR WORD SXBUF,SXBUF,SXBUF,SXBUF,SXBUF,SXBUF,SXBUF,SXBUF * TC1 WORD 0 LSB OF SOFT TIMER CELL TC2 WORD 0 MSB OF SOFT TIMER CELL * TSTLST WORD 0,1,2,3,4,-1,-1,-1,-1 LIST OF TEST NOS. TO BE TESTED TSTPTR WORD TSTLST TEST LIST POINTER TESTMODE WORD 0 DIAG OR TECH MODE (='T' FOR TECH TEST) TESTNO WORD 0 TEST NO. NOW DOING * TSTLPT WORD 0 TSTLST0 WORD RCVO,RCVO,RCVO,RCVO,RCVO,RCVO,RCVO,RCVO TSTLST1 WORD XMTO,XMTO,XMTO,XMTO,XMTO,XMTO,XMTO,XMTO TSTLST2 WORD RCVXMT,RCVXMT,RCVXMT,RCVXMT,RCVXMT,RCVXMT,RCVXMT,RCVXMT TSTLST3 WORD OTHR,OTHR,OTHR,OTHR,OTHR,OTHR,OTHR,OTHR * *--------------- FOR TECH TESTS ---------------* TASAV WORD 0 PARAMETER CELL TASAV1 WORD 0 CALCULATED CHANNEL W/ STD DEVICE ADDR TCHPT WORD 0 PORT AND CHAN CELL T5CNT1 WORD 0 COUNTER FOR CDR T5CNT2 WORD 0 COUNTER FOR CHANNELS T6AIST WORD -1 AI STATUS T6AOST WORD -1 AO STATUS T6AICH WORD 0 AI CHANNEL T6AOCH WORD 0 AO CHANNEL T6BFTX RES 16,0 TRANSMIT BUFFER T6BFRX RES 16,0 RECEIVE BUFFER *----------------------------------------------* * XMTSTAT RES 8,-1 XMT STATUS XMTBUF RES :80,:6DB6 TRANSMIT BUFFER XBUFPTR WORD XMTBUF,XMTBUF,XMTBUF,XMTBUF,XMTBUF,XMTBUF,XMTBUF,XMTBUF XASPTC WORD XASCBC,XASCBC,XASCBC,XASCBC,XASCBC,XASCBC,XASCBC,XASCBC XASPTL WORD 0,0,0,0,0,0,0,XASCBL XASCBL BYTE :20,LF LF & CR FOR LP XASCBC BYTE CR,CR JUST CR FOR CRT XASCBF RES 41,:2121 INITALLY FILLED W/ '!' s * TITL MESSAGES SECTION ****************************************************** * * MESSAGE SECTION INCLUDE: * * TEST HEADING AND ENDING MESSAGES * CRT/TTY TRAPS MESSAGES * QUERY MESSAGES * ERROR MESSAGES * ****************************************************** * *----------------------------------------------------- * * TEST HEADING, ENDING AND ERROR MESSAGES * *----------------------------------------------------- * CHANNO BYTE ' CHANNEL NO: ',:FF * CHANST BYTE CR,LF,' CHANNEL STATUS: ',:FF CHSTACT BYTE ' ACTUAL ',:FF CHSTEXP BYTE ' EXPECTED XXX',:FF * ENDMSG BYTE CR,LF,' END OF TEST',:FF * EOBEX BYTE ' EXPECTED EOB: ',:FF * EOBACT BYTE ' ACTUAL EOB: ',:FF * ERACMSG BYTE CR,LF,' ACCUMULATED ERRORS: ',:FF * EROACC BYTE CR,LF,' ACCUMULATED ERRORS: ',:FF * EROTMSG BYTE CR,LF,' ERRORS IN THIS TEST: ',:FF * HLTADR BYTE CR,LF,' HALT ON ERROR; CALLER ADDR: ',:FF * LPMSG BYTE CR,LF,' LINE PRINTER TIMED OUT !! GET IT READY..' BYTE CR,LF,' KEY IN ANY CHAR. TO RESUME...',CR,LF,:FF * PASSMSG BYTE ' PASS: ',:FF * STARS BYTE '*****',:FF * TITLE BYTE CR,LF,' ACC DIAG TEST 84-93860-A000',CR,CR,LF BYTE ' THE CONTENTS HEREOF ARE PROPRIETARY',CR,LF BYTE ' TO COMPUTER AUTOMATION, INC. (',:27,:43,:41,:27,:29,CR,LF BYTE ' AND SHALL NOT BE REPRODUCED OR USED',CR,LF BYTE ' WITHOUT CA"S PRIOR WRITTEN CONSENT.',CR,LF,LF BYTE ' (C) COMPUTER AUTOMATION, INC. 1984.',CR,LF,:FF * TSTA BYTE CR,LF,' TEST A (CRT)',:FF TSTB BYTE CR,LF,' TEST B (CRT)',:FF TSTC BYTE CR,LF,' TEST C (CRT)',:FF TSTD BYTE CR,LF,' TEST D (NON-CRT)',:FF TSTE BYTE CR,LF,' TEST E (NON-CRT)',:FF TSTF BYTE CR,LF,' TEST F (NON-CRT)',:FF TSTG BYTE CR,LF,' TEST G (NON-CRT,EXCEPT CH 4)',:FF * TITL ERROR TABLES *----------------------------------------------------- * * ERROR TABLES :MUST BE KEPT IN ORDER * *----------------------- ------------------------------ * ERHDG BYTE '** ERROR ',:FF ERTBPT WORD ERTBL WORD ERTBL1 WORD ERTBL2 WORD ERTBL3 WORD ERTBL4 WORD ERTBL5 WORD ERTBL6 WORD ERTBL7 WORD ERTBL8 WORD ERTBL9 WORD ERTBL10 * ERTBL BYTE ' 0: NO EOB ON LOOP BACK TEST',CR,LF,:FF ERTBL1 BYTE ' 1: NOT ENOUGH DATA RECEIVED',CR,LF,:FF ERTBL2 BYTE ' 2: UIS INSTRUCTION FAILED ON DATA RECEPTION',CR,LF,:FF ERTBL3 BYTE ' 3: UIS INSTRUCTION FAILED ON DATA TRANSMITION',CR,LF,:FF ERTBL4 BYTE ' 4: UIS INSTRUCTION FAILED, NO EOB RECOVERED',CR,LF,:FF ERTBL5 BYTE ' 5: UIS INSTRUCTION FAILED, NOT ENOUGH EOB',CR,LF,:FF ERTBL6 BYTE ' 6: SPECIAL CHARACTER DETECT FAILED',CR,LF,:FF ERTBL7 BYTE ' 7: NO EOB, DATA TRANSFER FAILED',CR,LF,:FF ERTBL8 BYTE ' 8: RECEIVING OR FRAMING ERROR',CR,LF,:FF ERTBL9 BYTE ' 9: SIGNAL TEST FAILED, ACTUAL & EXPECTED STATUS ' BYTE 'DO NOT MATCH',CR,LF,:FF ERTBL10 BYTE ' ',:FF TITL CRT/TTY TRAP MESSAGES *----------------------------------------------------- * * CRT/TTY TRAP MESSAGES * *----------------------------------------------------- * ARMSG BYTE CR,LF,' ARITHMETIC TRAP',CR,LF,:FF * CHMSG BYTE CR,LF,' CHAR./NUMERIC EXCEPTION',CR,LF,:FF * PFMSG BYTE CR,LF,' POWER FAIL',CR,LF,:FF * STMSG BYTE CR,LF,' STACK OVERFLOW',CR,LF,:FF * SYMSG BYTE CR,LF,' SYSTEM TRAP',CR,LF,:FF * UINMSG BYTE CR,LF,' UNIMPLEMENTED INSTRUCTION TRAP',CR,LF,:FF * UMEMSG BYTE CR,LF,' UNINSTALLED MEMORY TRAP',CR,LF,:FF * USMSG BYTE CR,LF,' USER TRAP',CR,LF,:FF * TITL QUERY MESSAGES *----------------------------------------------------- * * QUERY MESSAGES * *----------------------------------------------------- * DUMY1 BYTE CR,LF,' CHANNEL MUST NOT BE THE SAME AS LAST QUERY',:FF DUMY2 BYTE CR,LF,' OPERATORs CHANNEL & NON-CRT CHANNEL CANNOT BE' BYTE CR,LF,' THE SAME WHEN TESTING BASE BOARD !',:FF * DVAMSG BYTE CR,LF,' ENTER DEVICE ADDRESS [:E]? ',:FF * INTMSG BYTE CR,LF,' ENTER INTERRUPT BASE ADDRESS [:180]? ',:FF * OPTMSG BYTE CR,LF,' ENTER OPTIONS (:00-:3F[:00])? ',:FF * OPCHMSG BYTE CR,LF,' ENTER OPERATOR CHANNEL (0/1/2/3/5/6/7/[4])? ',:FF * OPMSG1 BYTE CR,LF,' IF SWITCHING OPERATOR CHANNEL, PLEASE CONNECT CRT' BYTE ' & TYPE "CON" FROM THAT CHAN.',:FF OPMSG2 BYTE CR,LF,' PLEASE TYPE "CON" TO CONTINUE',CR,LF,:3E,:FF * SELMSG BYTE CR,LF,' ENTER CRT TEST CHANNELS (0,1,2,3,5,6,7,[4]' BYTE ' OR *)? ',:FF * SENONM BYTE CR,LF,' ENTER NON-CRT TEST CHANNELS' BYTE ' ([0,1,2,3,5,6,7],4 OR *)? ',:FF * TMODMSG BYTE CR,LF,' DIAGNOSTIC OR TECH TEST (T/[D])?',:FF TPROMSG BYTE CR,LF,' PLEASE INPUT TECH TEST PARAMETER FROM OPERATOR' BYTE ' PANEL, THEN RUN TEST',:FF * *===================================================== * * STACK IS LOCATED HERE AT THE END OF PROGRAM * STACKE EQU $ RES 150,0 STACK EQU $ END OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOJG:0 O0SEGMENTBLANK oim MACRO (F510) @m ACC DIAGNOSTIC - REV. Am0i))))))})y))))u g pPEg pP *X6[5(7 2(),A,6y w  # T Dn ihgfL^ W05( &5!QQ QGwywNut@ 0n4'*S<>@==:89 4⊀@14d35,5*0y00t 0x*i00)b0s22  E gp@P@K W u C Bў۞    y 0@r¿  BøX BJ~ N ! ?6B) !8 q'`§ B⿞1 ~š B⿖)~ÎX  B !8Ç֐ G$s6[ 50&/)n0& zrX B ! 8gp G$n © +U _ B ߟ{  › BKLz ߒ vH0~߄Z @1~1)i)b  H+ T$@Nq GH+T#y!_ ˶˄ᄁ  „ >!G ᄁ   §  B¤ B-~qÐ XG' #   # 111111e&1E &)n0 }i  y1 |{ #yx _ vu ^sr ,pon'C @ 3 ÏKN @A@ kT߆pc # *x**W*Y C @H)+Tc # C  @H)+Tc # ,c1( C @  Jޕ  Ɇp p c # ?c( (? C @@@3 @#S=@" 0 ƌqŠksc # 'd  ''C @1.' pc  # C @'UWc #  *S(| 1.' .  c # q 1.' . c  # C @  6H p  O6ǂ p  c #  ,/,.*Z(73E(),-3J2MC @ u/6Ȃtnn lc  # 2@'C @3㛀 Fr㑀F h߆fc # *n *w01(,cC @ p qH @ ĂIIăc #  IwC @ pi 0 9 A F  ic # C @) @ B : AƉ‡@1 @*1c # (?C @  ÕNC C 96C  C " pc # ',b C @ %' + xc # C @ c #   ٧bNC "C ]C  I6C I6C "Y6    6{Y6C  J]% ' ?+x:  \]E ". 1%,;,<*Z0 0)b,=,>,?,@dC @ 3㠀BÝDÙ  BIÔ  B  B߆ac # *n*w0* *'/*C @w3u  k  bMY  @QG H ECKc  # e*T*V*U*S,9E*WC  @IG `B1mG@ Ai  B p c # ,7*Y [1 @C  MutKxC @؇ ^ qߖ ^   +ߊoc # q n *m*l ߏ}ߎ{zy  { {00 ?  ?  N1KC  A   / 0 åN1KC    ? q ?mWc #  ?f  ?b ?^4-480%y 4G*S()!4O4Y4b4t4C @ )  ߟߟC  @)׀  ҟҟ C @)ʀ  ş C @)㽀  ⸟ ⸟C @)㰀   ⫟C @)㣀   ➟➟C @)㖀   ⑟⑟C @)㉀  ℟℟0,c'G1(C @ )yC @)tC @)o C @)jC @)eC  @)`C @)[C @) V'R  *n*x    ' ' ' ' ' ' ' ' ***+'+O+w++***+& +N+v++ ECHO TEST, IN PUT NOT MORE THAN 76 CHA R. ++++++++** */*4*9*>*C*H*M))))) )* *  ---------------------- ------------------------ --------------  ,k,-k-.k./k/270 50t0y00000000 00000000 0   m 10101010101010101111 11111 )!! CHANNEL NO: CHANNEL STATUS: AC  TUAL EX PECTED XXX END OF TE ST EXPECTED EOB: ACT UAL EOB: ACCUMULATED ERRORS: ACCUMULATED ERRORS: ERRORS IN T HIS TEST: HALT ON E RROR; CALLER ADDR: L INE PRINTER TIMED OUT !! GET IT READY.. KEY I N ANY CHAR. TO RESUME... PASS: ***** A CC DIAG TEST 84-93860-A0 00 THE CONTENTS HERE OF ARE PROPRIETARY  TO  COMPUTER AUTOMATION, INC . ('CA') AND SHALL NOT BE REPRODUCED OR USED  WITHOUT CA"S PRIOR WRIT TEN CONSENT. (C) COM PUTER AUTOMATION, INC. 1 984. TEST A (CRT) TEST B (CRT) TEST  C (CRT) TEST D (NON-C RT)  TEST E (NON-CRT) TEST F (NON-CRT) T EST G (NON-CRT,EXCEPT CH 4)** ERROR 3U3e3u33 33334 4, 0: NO EOB O N LOOP BACK TEST 1:  NOT ENOUGH DATA RECEIVED 2: UIS INSTRUCTION  FAILED ON DATA RECEPTION 3: UIS INSTRUCTION  FAILED ON DATA TRANSMITI ON 4: UIS INSTRUCTIO N FAILED, NO EOB RECOVER ED 5: UIS INSTRUCTIO N FAILED, NOT ENOUGH EOB 6: SPECIAL CHARACTE R DETECT FAILED 7: NO EOB, DATA TRANSFER FAIL ED 8: RECEIVING OR F RAMING ERROR 9: SIGN AL TEST FAILED, ACTUAL & EXPECTED STATUS DO NOT MATCH ARITHMETI C TRAP CHAR./NUMER IC EXCEPTION POWER FAIL STACK OVERFLO W SYSTEM TRAP  UNIMPLEMENTED INSTRUCTI ON TRAP UNINSTALLED MEMORY TRAP USER  TRAP CHANNEL MUST  NOT BE THE SAME AS LAST  QUERY OPERATORs CHANN EL & NON-CRT CHANNEL CAN NOT BE THE SAME WHEN T ESTING BASE BOARD ! E NTER DEVICE ADDRESS [:E] ? ENTER INTERRUPT B ASE ADDRESS [:180]?  ENTER OPTIONS (:00-:3F[ :00])? ENTER OPERATO R CHANNEL (0/1/2/3/5/6/7 /[4])? IF SWITCHING  OPERATOR CHANNEL, PLEASE CONNECT CRT & TYPE "CON " FROM THAT CHAN. PLE ASE TYPE "CON" TO CONTIN UE > ENTER CRT TEST  CHANNELS (0,1,2,3,5,6,7, [4] OR *)? ENTER N ON-CRT TEST CHANNELS ([0 ,1,2,3,5,6,7],4 OR *)?  DIAGNOSTIC OR TECH TE ST (T/[D])? PLEASE IN PUT TECH TEST PARAMETER  FROM OPERATOR PANEL, THEN RUN TEST ............. 264D 0E85 1837 SBIT 8,S ENABLE CPU INT 264E C2A7 2676 1838 COPY =SMSIN,Q INPUT COMMAND 264F 83A3 2673 1839 COPY T6AICH,A GET AI CHAN 2650 030A 1840 XNX A 2651 4201 1841 OUT Q,1 SEND COMMAND 2652 C2A4 2677 1842 COPY =SMSOT* THIS JCL WILL ASSEMBLE AND LINK WITH DEBUG AS UF=/ACC/ MACRO ACC.ASM(L=) LINK ACC.OBJ(AB=0)+DEBUGS.OBJ(UL,AB=4000) DELETE OS::.SYS COPY OS::.SYS=ACC.BIN ,A SOFT TIME PORTION OF 1 COUNT 1PAGE 0072 MACRO (F510) NM-4 ASYNC COMM CONTROLLER (ACC) DIAGNOSTIC TEST 84-93860-10 A000 1984/06/29 14:35:52 TECH TESTS SECTION 2657 BFA1 2679 1847 JST TIMICRO 2658 BF2D 2606 1848  JST TIME 2659 9E7E 2658 1849 JMP $-1 265A 839F 267A 1850 COPY TASAV,A GET TX DATA 265B 0E71 1851 SHIFT A,LO,8 SHIFT TO RIGHT LOC 265C C390 266D 1852 COPY T6BFRX! ,Q GET RCV DATA 265D 58FF 1853 AND =:FF,Q LOWER BYTE ONLY 265E 0047 1854 OR Q,A COMBINE TX & RX DATA 265F 0404 1855 SELP A,4 OUT TO CDR 2660 9E27 2608 1856 JMP TECH6 LOOP AGAIN 1857 * 00002661 1858 TEOBTX EQU $  TX EOB ROUTINE 2661 838E 2670 1859 COPY T6AOCH,A GET CHANNEL 2662 030A 1860 XNX A 2663 0101 1861 IN 1,A READ STATUS 2664 8787 266C 1862 COPY A,T6AOST SAVE IT 2665 2309 1863 RSK 1864 * 00002666 1865 TEOBRX EQU  $ RX EOB ROUTINE 2666 838C 2673 1866 COPY T6AICH,A GET CHANNEL 2667 030A 1867  XNX A 2668 0101 1868 IN 1,A READ STATUS 2669 8781 266B 1869 COPY A,T6AIST SAVE IT 266A 2309 1870 RSK 1871 * 0010 1872  LPOOL 266B 30B0 T6AIST 266C 30B1 T6AOST 266D 30C4 T6BFRX 266E 30B4 T6BFTX  266F 30AD TCHPT 2670 30B3 T6AOCH 2671 6500 2672 2661 TEOBTX 2673 30B2 T6AICH  2674 4500 2675 2666 TEOBRX 1PAGE 0073 MACRO (F510) NM-4 ASYNC COMM CONTROLLER (ACC) DIAGNOSTIC TEST 84-93860-10 A000 1984/06/29 14:35:53 TECH TESTS SECTION 2676 0610 SMSIN 2677 0612 SMSOT 2678 FC18  2679 2944 TIMICRO 267A 30AB TASAV 1873 *---------- THIS IS THE TDEVAD SUB TO CALC e840629145142840629145142841119095204e@840629145142840629145142840629145142" e840629145142840629145142840629145142e840629145142840629145142840629145142840629145142840629145142840629145142e,841119095051840627174613841119095057e 3841119095059840628134718841119095102e&841119095104840628135230841119095106 e*# 841119095108840830151742841119095110 e.\841119094757840627180759841119094759 e/j841119094820841112161141841119094821 e0#841119095113841118110618841119095146 e$w841119095148841118110926841119095152e841119095154840627142231841119095155$ % & ' ( ) * + . TOPS TXTENGSPEC TXTTSPEC TXT MAINT TXT MAKDOC JCL MAKDF JCL ACC ASM ACC OBJACCMAC JCLJDBG4: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  ~֞8O] &Ea3x _|l* | },  ~gҡ# A ` Q T ( :ӂ< - :ӂ" )  m*** DEBUGS.OBJ - REV E8m00 ***  pP0 @0B բ` h  } c= ¢‚ pP0/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 AC Q@ X= Y:ԽѾ K3 L0 S- D* C'ԟK =ӟ{  } ӟ| @)C " )PC ")C " `r"  *ٽ҆ Y Q  A Gҽ؆ R Ƥ D V W ƚ›LBLCLFLLLS LJLILGLRLZߝ Ǟ< !} {҆u łt P L łj T P BŁ P ӂY T H TŅ Ğ| QEF , , ` ՟ _ٞ0 6} ` J B YK QJ f䞁ւ cޡ @ ޟޝ `@E ; RA@EN@Aޏǎ Qފ ,^:F & o*| x ` D `랞oY* Qd Ѐ_Ѐ āZ@AĄ܃T B ` ǁ D임*L_U3 ` Ģ1*/) 'r "Bƽу۽ֽ C凑ā / X Ń ѽ۞i Ğ] с䆫@ڃ۽ցBǢ ,ž[ + - * X /KJƎ^ [{ xނZ  ,ş| ֽL  P ޽с ۽۽޺{  ўq kɆȂ Gާ}ަyޠ }y E ~  .  E ~  .ޣ ރfN  ,Žֆs@FC  kqLL (w{u  ^|JQBZy L S TўNM   Isľˆ_]] | IƎ> ,ŽƇ , ƂpIưk , ,Htr H m -ņց - ('\\ÂF - tтڃԞx ’ @"Fz@ Ό F ō l# .bƝޙޖJ Q!’ފދ JQĽ %ӂԞu  U B * ӂGo h f e "cIaM K Y &V&RR `QK L$kK N =ӂDD G ӂA   :Ӟ ӟL  ӟ{ y9 u    :ӂw  @0ƵQ¾ˢ̂ C C 96C C " z a ࢜0 `a ´C  /6 C C 6 C  C 6C h  Q¾{”C "C C  I6 7 20D7 0020 0438 COPY X,A 20D8 8440 0000 0439 COPY A,0(Y) SAVE IT 20D9 9EAC 2106 0440 JMP QURY40 AND OUT TO NXT QURY 20DA DFA3 20FE 0441 QURY34 IMS CELQ3 SET FLAG 1PAGE 0020 MACRO (F510) NM-4 ASYNC COMM CONTROLLER (ACC) DIAGNOSTIC TEST 84-93860-10 A000 1984/06/29 14:34:58 QUERY SECTION 20DB DF5E 20BA 0442 IMS CELL0 BUMP CHAN COUNT 20DC 9E81 20DE 0443 JMP $+2  NOT FULL YET, OK 20DD 9E60 20BE 0444 JMP QURY30 TOO MANY 20DE 2D07 0445 CSK  X,=7 20DF 9E81 20E1 0446 JMP $+2 0 < X 7 20E1 0020 0448 COPY X,A 20E2 8440 0000 0449 COPY A,0(Y) SAVE IT 20E3 6B01 0450 ADD =1,Y BUMP WORK TAB 20E4 9E61 20C6 0451 JMP QURY31 AND GET INPUT AGAIN 20E5 E299 20FF 0452 QURY35 COPY =CHLCRT,Y INDEX WORKING TABLE 20E6 08FF 0453 COPY =-1,A 20E7 8440 0000 0454 COPY A,0(Y) PUT TERMINATOR IN 1ST PLACE 20E8 9E9D 2106 0455  JMP QURY40 GO NXT QURY 20E9 08FF 0456 QURY36 COPY =-1,A BACK ARROW OR GARBAGE 20EA 8440 0000 0457 COPY A,0(Y) PUT TERMINATOR 20EB 9E52 20BE 0458 JMP QURY30 20EC 08FF 0459 QURY37 COPY =-1,A UP ARROW 20ED 8440 0000 0460 COPY A,0(Y) PUT TERMINATOR 20EE 9E1F 208E 0461 JMP QURY20 20EF 834D 20BD 0462 QURY38 COPY BEGFLG,A GET FLAG 20F0 110D 20BE 0463  JEQ A,QURY30 ILLEGAL 20F1 9F92 2104 0464 JMP SETAIO 20F2 48F8 0465 QURY39 COPY =-8,Q 20F3 A28F 2103 0466 COPY =CHCRTD,X INDEX DEFAULT TABLE 20F4 E28A 20FF 0467 COPY =CHLCRT,Y INDEX WORKING TABLE 20F5 8080 0000 0468 COPY 0(X),A GET DEFAULT 20F6 8440 0000 0469  COPY A,0(Y) AND SAVE 20F7 2B01 0470 ADD =1,X 20F8 6B01 0471 ADD =1,Y 6  20F9 54BB 20F5 0472 IJNE Q,$-4 20FA 9E8B 2106 0473 JMP QURY40 000B 0474  LPOOL 20FB 2810 NEWLINE 20FC 3506 SELTVMSG 20FD 2802 MSG 20FE 2A35 CELQ3 1PAGE 0021 MACRO (F510) NM-4 ASYNC COMM CONTROLLER (ACC) DIAGNOSTIC TEST 84-93860-10 A000 1984/06/29 14:34:59 QUERY SECTION 20FF 2A65 CHLCRT 2100 26C9 DECIN 2101 2684 CHRIN 2102 26EA DICNT 2103 2A5B CHCRTD  2104 21BB SETAIO 2105 1PAGE 0022 MACRO (F510) NM-4 ASYNC COMM CONTROLLER (ACC) DIAGNOSTIC TEST 84-93860-10 A000 1984/06/29 14:35:00 QUERY SECTION 0476 *----------------------------------------------------- 0477 * 0478 * QURY40-THIS QURY ASK FOR NON-TV TEST CHANNELS WHICH  0479 * ALLOWS INPUT FROM 0,.. TO 6, HOWEVER, NO REPEATING 0480 * OF CHANNEL IS ACCEPTED AS IN QURY30 0481 * IF '*' IS THE RESPONSE; BOARD ADDR WILL BE CHECKED TO SEE  0482 * IF SUCH RESPONSE IS LEGAL 0483 * IF BOARD ADDR IS :E, 6 INPUTS ARE ALLOWED, ELSE 7 INPUTS ALLOW 0484 * 00002106 0485 QURY40 EQU $ 2106 FF74 20FB 0486 JSK NEWLINE 2107 82D9 2161 0487 COPY =SENONTVM,A 2108 FF74 20FD 0488 JSK MSG 2109 0900  0489 COPY =0,A RESET INPUT FLAG 210A 87D7 2162 0490 COPY A,CELL1 210B 08F9 0491 COPY =-7,A SET UP INITIAL CHAN COUNT 210C 872D 20BA 0492 COPY A,CELL0  0493 * 210D E2D5 2163 0494 COPY =CHLXCRT,Y INDEX WORKING TABLE 210E 83D5 2164 0495 COPY  ADBAS,A GET BOARD ADDR 210F 0C0E 0496 CLSN A,=:E IF IT'S BASE BOARD ADDR 2110 DF29 20BA 0497 IMS CELL0 LESS ONE INPUT 2111 FF6E 2100 0498 QURY41 JSK DECIN GET RESPONSE A=CHAR, X=DEC VAL 2112 0C2A 0499 CLSN A,='*' 2113 9EA0 2134 0500 JMP QURY45 JMP IF NO NON-TV TEST AT ALL 0501 QURY 42,43,46A,49,401,44,49 2114 BF6C 2101 0501+ QURY42 JST  CHRIN CHECK TERMINATOR 2115 9E85 211B 0501+ JMP QURY43 CARRIAGE RETURN 2116 9EA9 2140 0501+ JMP QURY46A '#' SIGN 2117 9EB9 2151 0501+ JMP QURY49 BACK ARROW 2118 9EBB 2154 0501+ JMP QURY401 UP ARROW 2119 9E8E 2128 0501+ JMP QURY44 COMMA 211A 9EB6 2151  0501+ JMP QURY49 ANYTHING ELSE 211B 8366 2102 0502 QURY43 COPY DICNT,A GET DECIN INPUT CNT 211C 11C3 2120 0503 JNE A,$+4 HAS INPUT THIS PASS 211D 83C4 2162 0504 COPY CELL1,A  GET INPUT FLAG 211E 1159 2138 0505 JEQ A,QURY46 NO DEC IN, NO INPUT ==> DEF 1PAGE 0023 MACRO (F510) NM-4 ASYNC COMM CONTROLLER (ACC) DIAGNOSTIC TEST 84-93860-10 A000 1984/06/29 14:35:01 QUERY SECTION 211F 9E66 21067  0506 JMP QURY40 ELSE ==> ' ,CR' ;ILLEGAL 2120 08FF 0507 COPY =-1,A 2121 8441 0001 0508 COPY A,1(Y) SET TERMINATOR 2122 2D07 0509 CSK X,=7 2123 9E81 2125 0510  JMP $+2 0 < X 7 2125 0020 0512 COPY X,A 2126 8440 0000 0513 COPY A,0(Y) SAVE IT 2127 9E98 2140 0514 JMP  QURY46A DONE, GO CHECK W/ QURY30 INPUT 2128 DF11 20BA 0515 QURY44 IMS CELL0 2129 9E81 212B 0516  JMP $+2 NOT FULL TET, OK 212A 9E5B 2106 0517 JMP QURY40 TOO MANY 212B 2D06 0518 CSK X,=6 212C 9E81 212E 0519 JMP $+2 0 < X 7 212E 0020 0521 COPY X,A 212F 8440 0000 0522 COPY A,0(Y)  SAVE IT 2130 6B01 0523 ADD =1,Y BUMP WORK TAB 2131 0901 0524 COPY =1,A SET INPUT FLAG 2132 87AF 2162 0525 COPY A,CELL1 2133 9E5D 2111 0526 JMP QURY41  INPUT AGAIN 2134 E2AE 2163 0527 QURY45 COPY =CHLXCRT,Y INDEX WORK TABLE 2135 08FF 0528 COPY =-1,A 2136 8440 0000 0529 COPY A,0(Y) PUT TERMINATOR IN 1ST PLACE 2137 9EB4 216C 0530 JMP QURY50 GO NXT QURY 00002138 0531 QURY46 EQU $ 2138 48F8 0532 COPY =-8,Q  2139 A2AB 2165 0533 COPY =CHXCRTD,X INDEX DEFAULT TABLE 213A E2A8 2163 0534 COPY =CHLXCRT,Y  INDEX WORKING TABLE 213B 8080 0000 0535 COPY 0(X),A GET DEFAULT 213C 8440 0000 0536 COPY A,0(Y) AND SAVE 213D 6B01 0537 ADD =1,Y 213E 2B01 0538 ADD =1,X 213F 54BB 213B 0539 IJNE Q,$-4 2140 A2A2 2163 0540 QURY46A COPY =CHLXCRT,X INDEX XCRT WORK TABLE 2141 08F9 0541 QURY46B COPY =-7,A SET UP COMPARISON COUNT 2142 87A3 2166 0542 COPY A,CELL0 1PAGE 0024 MACRO (F510) NM-4 ASYNC COMM CONTROLLER (ACC) DIAGNOSTIC TEST 84-93860-10 A000 1984/06/29 14:35:02 QUERY SECTION  2143 E23B 20FF 0543 COPY =CHLCRT,Y INDEX CRT WORK TABLE 2144 8080 0000 0544 COPY 0(X),A  GET XCRT CHAN 2145 13D1 2157 0545 JLT A,QURY402 END TABLE, OK 2146 C040 0000 0546 QURY47 COPY 0(Y),Q GET CRT CHAN 2147 400A 0547 CSN A,Q ARE THEY THE SAME ? 2148 9E85 214E 0548 JMP QURY48 YES, U DUM DUM ! 2149 6B01 0549 ADD =1,Y NO, 214A DF9B 2166 0550 IMS CELL0 BUMP COUNT 214B 9E7A 2146 0551 JMP QURY47 CHECK W/ NXT CRT CHAN 214C 2B01 0552 ADD =1,X 214D 9E73 2141 0553 JMP QURY46B CHECK W/ NXT XCRT CHAN  214E 8298 2167 0554 QURY48 COPY =DUMY1,A U DUM DUM MESSAGE 214F FF2D 20FD 0555 JSK MSG 2150 98 E35 2106 0556 JMP QURY40 2151 08FF 0557 QURY49 COPY =-1,A BACK ARROW OR GARBAGE 2152 8440 0000 0558 COPY A,0(Y) PUT TERMINATOR 2153 9E32 2106 0559 JMP QURY40 2154 08FF  0560 QURY401 COPY =-1,A UP ARROW 2155 8440 0000 0561 COPY A,0(Y) PUT TERMINATOR 2156 9F91 2168 0562 JMP QURY30 2157 8391 2169 0563 QURY402 COPY ICHR,A CR OR # GO HERE 2158 0C0D  0564 CLSN =CR,A CR ? 2159 9E92 216C 0565 JMP QURY50 215A 0C23 0566 CLSN ='#',A # SIGN ? 215B 9E81 215D 0567 JMP $+2 215C 9E29 2106 0568 JMP QURY40  NOT # 215D 838D 216B 0569 COPY BEGFLG,A YES, GET FLAG 215E 1141 2160 0570 JEQ A,$+2 ILLEGAL 215F 9EDB 21BB 0571 JMP SETAIO 2160 9E25 2106 0572 JMP QURY40 000B  0573 LPOOL 2161 3521 SENONTVM 2162 2A32 CELL1 2163 2A78 CHLXCRT 2164 2A29 ADBAS 2165 2A70 CHXCRTD 2166 2A31 CELL0 1PAGE 0025 MACRO (F510) NM-4 ASYNC COMM CONTROLLER (ACC) DIAGNOSTIC TEST 84-93860-10 A000 1984/06/29 14:35:03 QUERY SECTION 2167 343B DUMY1 2168 20BE QURY30 2169 26E9 ICHR 216A 216B 2A2E BEGFLG 1PAGE 0026 MACRO (F510) NM-4 ASYNC COMM CONTROLLER (ACC) DIAGNOSTIC TEST 84-93860-10 A000 1984/06/29 14:35:04 QUERY SECTION 0575 *----------------------------------------------------- 0576 * 0577 * QURY50-THIS QURY ASK FOR OPERATORS CHANNEL, DEF IS 4 0578 * THIS QUERY WILL VERIFY THE LEGITIMATE INPUT, THEN 0579 *  IT WILL SAVE IT IN 'CHOPER', OUTPUT PROMPT MES TO 0580 * ORIGINAL OP CHAN, THEN MOVE 'CHOPER' TO 'REALOPER', 0581 * SENSE FOR NEW OP CHAN'S READYNESS. ONCE THE NEW OP 0582 *  CHAN IS READY, IT WILL WAIT FOR A VERY SHORT TIME 0583 * AND PROMPT THE NEW OP TO INPUT 'CON' TO CONTINUE. 0584 * 0000216C 0585 QURY50 EQU $ 216C FF0E 20FB 0586 JSK NEWLINE 216D 82C2 21B0 0587 COPY =OPCHMSG,A 216E FF0E 20FD 0588 JSK MSG 216F 0904 0589  COPY =4,A 2170 87C0 21B1 0590 COPY A,CHOPER 2171 FF0E 2100 0591 JSK DECIN INPUT A=CHAR, X=DEC VAL 0592 QURY 51,52,50,50,40,50,50 2172 BF0E 2101 0592+ QURY51 JST CHRIN CHECK TERMINATOR 2173 9E85 2179 0592+ JMP QURY52 CARRIAGE RETURN 2174 9E77 216C 0592+  JMP QURY50 '#' SIGN 2175 9E76 216C 0592+ JMP QURY50 BACK ARROW 2176 9E0F 2106 0592+ JMP QURY40 UP ARROW 2177 9E74 216C 0592+ JMP QURY50 COMMA 2178 9E73 216C 0592+ JMP QURY50 ANYTHING ELSE 2179 8308 2102 0593 QURY52 COPY DICNT,A GET INPUT COUNT 217A 19 1C2 217D 0594 JNE A,$+3 DECIMAL # 217B 2904 0595 COPY =4,X DEFAULT CHAN  217C 9E84 2181 0596 JMP QURY52A ALSO NEED CK W/ NON-TV CHAN 217D 2D07 0597 CSK X,=7 217E 9E81 2180 0598 JMP $+2 0 < X 7 2180 A7B0 21B1 0600 COPY X,CHOPER SAVE IT 2181 8362 2164 0601 QURY52A COPY ADBAS,A GET BOARD ADDR 2182 0C0E 0602 CLSN A,=:E BASE BOARD ? 2183 9E81 2185 0603 JMP $+2 YES, CHECK W/ NON-TV CHAN 2184 9E87 218C 0604 JMP QURY54 NO, FINE 1PAGE 0027 MACRO (F510) NM-4 ASYNC COMM CONTROLLER (ACC) DIAGNOSTIC TEST 84-93860-10 A000 1984/06/29 14:35:05 QUERY SECTION 2185 E25D 2163  0605 COPY =CHLXCRT,Y INDEX NON-TV CHANNEL 2186 8040 0000 0606 QURY53 COPY 0(Y),A GET NON-TV CHANNEL 2187 13C4 218C 0607 JLT A,QURY54 END OF TABLE, OK 2188 200A 0608 CSN A,X  ARE THEY THE SAME ? 2189 9EA3 21AD 0609 JMP QURY56 YES, DUMMY AGAIN ! 218A 6B01 0610  ADD =1,Y BUMP TABLE PTR 218B 9E7A 2186 0611 JMP QURY53 CHECK AGAIN 218C 82A5 21B2 0612 QURY54 COPY =OPMSG1,A 218D FFA5 21B3 0613 JSK MSG 218E 83A2 21B1 0614 COPY CHOPER,A GET OPERATOR'S CHAN 218F 87A4 21B4 0615 COPY A,REALOPER AND BOOM!! SWITH CONTROL HERE  0616 * 2190 C3A3 21B4 0617 COPY REALOPER,Q 2191 4E01 0618 SHIFT Q,LO,1 2192 430A 0619 XNX Q 2193 01F1 0620 IN DTTYDA%1;1,A INPUT STATUS 2194 0E19 0621  SHIFT A,RO,2 2195 363C 2192 0622 JT OV,$-3 IF STILL SET 2196 08FF 0623 COPY =-1,A TIME FOR 1 COUNT 2197 BF9D 21B5 0624 JST TIMER 2198 BF9D 21B6 0625 JST TIME 2199 9E7E 2198 0626 JMP $-1 219A 829C 21B7 0627 QURY55 COPY =OPMSG2,A 219B FF97 21B3 0628  JSK MSG ' PLEASE TYPE "CON"....' 219C FF9B 21B8 0629 JSK IKB 219D 0C43 0630  CLSN A,='C' 219E 9E81 21A0 0631 JMP $+2 219F 9E7A 219A 0632 JMP QURY55 21A0 FF97 21B8 0633 JSK IKB 21A1 0C4F 0634 CLSN A,='O' 21A2 9E81 21A4 0635 JMP $+2 21A3 9E76 219A 0636 JMP QURY55 21A4 FF93 21B8 0637 JSK IKB 21A5 0C4E 0638  CLSN A,='N' 21A6 9E81 21A8 0639 JMP $+2 21A7 9E72 219A 0640 JMP QURY55 21A8 FF8F 21B8 0641 JSK IKB 1PAGE 0028 MACRO (F510) NM-4 ASYNC COMM CONTROLLER (ACC) DIAGNOSTIC TEST 84-93860-10 A000 1984/06/29 14:35:06 QUERY SECTION 21A9 0C0D 0642 CLSN A,=CR CR 21AA 9E81 21AC 0643  JMP $+2 21AB 9E6E 219A 0644 JMP QURY55 21AC 9E8E 21BB 0645 QURY50E JMP SETAIO FINALL: Y ! 0646 * 21AD 828B 21B9 0647 QURY56 COPY =DUMY2,A U DUM ALSO ! 21AE FF84 21B3 0648  JSK MSG 21AF 9E3C 216C 0649 JMP QURY50 000B 0650 LPOOL 21B0 34B3 OPCHMSG 21B1 2A5A CHOPER 21B2 34CB OPMSG1 21B3 2802 MSG 21B4 2C0E REALOPER 21B5 293F TIMER 21B6 2938 TIME 21B7 34F4 OPMSG2 21B8 27E4 IKB 21B9 3452 DUMY2 21BA  1PAGE 0029 MACRO (F510) NM-4 ASYNC COMM CONTROLLER (ACC) DIAGNOSTIC TEST 84-93860-10 A000 1984/06/29 14:35:06 SET UP AUTO I/O 0652 ****************************************************** 0653 * 0654 * SET UP AUTO I/O INTERRUPT VECTORS 0655 * 0656 * PRIMARY VECTORS FOR RECEIVING IN FULL DUPLEX OR 0657 * TRANSMITTING AND RECEIVING IN HALF DUPLEX 0658 * 0659 ****************************************************** 0660 * 000021BB 0661 SETAIO EQU $ 21BB 0901 0662 COPY =1,A 21BC 872E 216B 0663 COPY A,BEGFLG  SET FLG >> SIG QUERIES HAVE BEEN ANS ONCE. 21BD 48F0 0664 COPY =-16,Q SET UP FOR 16 LOOPS 21BE A391 21D0 0665 COPY INTBAS,X GET INTERRUPT BASE ADDRESS 21BF E291 21D1 0666 COPY =EOBADR,Y  GET EOB ADDRESS POINTER 000021C0 0667 SETIO EQU $ 21C0 0900 0668 COPY =0,A RESERVE 4 WDS FOR AIO, BYTE CNT $ PTR 21C1 8480 0000 0669 COPY A,0(X) 21C2 8481 0001 0670 COPY A,1(X) 21C3 8482 0002 0671 COPY A,2(X) 21C4 8483 0003 0672 COPY A,3(X) 21C5 8486 0006 0673  COPY A,6(X) RESERVE 2 MORE SPACES 21C6 8487 0007 0674 COPY A,7(X) 21C7 0880 0675  COPY =:FF80,A JSK *$+1 INSTRUCTION 21C8 8484 0004 0676 COPY A,4(X) 21C9 8040 0000 0677  COPY 0(Y),A GET EOB ADDRESS 21CA 8485 0005 0678 COPY A,5(X) 21CB 2B08 0679 ADD =8,X BUMP VECTOR ADDRESS 21CC 6B01 0680 ADD =1,Y BUMP EOB POINTER 21CD 4B01  0681 ADD =1,Q BUMP COUNTS 21CE 53B1 21C0 0682 JLT Q,SETIO LOOP FOR MORE 21CF 9E83 21D3 0683 JMP EXEC 0003 0684 LPOOL 21D0 2BE3 INTBAS  21D1 2BC9 EOBADR 21D2 1PAGE 0030 MACRO (F510) NM-4 ASYNC COMM CONTROLLER (ACC) DIAGNOSTIC TEST 84-93860-10 A000 1984/06/29 14:35:08 EXEC-TEST ROUTINE 0686 ****************************************************** 0687 * 0688 * TEST EXECUTIVE 0689 * 0690 * THE EXEC CONTROLS THE FLOWS OF THE PROGRAM 0691 * WHICH INVOKES VARIES TEST ROUTINES. IT ALSO  0692 * OVERLOOKS AND CONTROL SOME OF THE OPTIONS. 0693 * 0694 *************; ***************************************** 0695 * 000021D3 0696 EXEC EQU $ 21D3 0900  0697 COPY =0,A 21D4 87BD 2212 0698 COPY A,PASS RESET PASS NO. 21D5 87BD 2213 0699  COPY A,EROTOL RESET ACCUM. ERR. CELL 21D6 BFBD 2214 0700 JST RSTALL RESET ALL CHANNELS  000021D7 0701 EXEC1 EQU $ 21D7 FFBD 2215 0702 JSK NEWLINE 21D8 82BD 2216 0703 COPY =PASSMSG,A PRINT ' PASS' 21D9 FF59 21B3 0704 JSK MSG 21DA 83B7 2212 0705 COPY PASS,A PRINT 'NNNNN' N=NUMBER 21DB FFBB 2217 0706 JSK DECOUT 000021DC 0707 EXEC2 EQU $ 21DC A2BB 2218 0708 COPY =CHLCRT,X INDEX TO BEGIN OF CRT TAB 21DD 8080 0000 0709 COPY 0(X),A GET 1ST CHAN 21DE 13C7 21E6 0710 JLT A,EXEC2A NO TV TEST, SKIP 21DF BFB9 2219 0711 JST AR2RS COPY CRT CHAN TO TSET TABLE 21E0 BECF 2230 0712 JST TESTA GO DO TEST A 21E1 BEFD 225F 0713 JST TESTB GO DO TEST B 21E2 83B9 221C 0714 COPY CAR,A GET RUN OPTION WORD 21E3 003F 0715 TBIT 3,A IS RUN CONT. BIT ON? 21E4 3641 21E6 0716 JT OV,$+2 IF SO, BY PASS TEST C 21E5 BFB4 221A 0717 JST TESTC 21E6 A2B4 221B 0718 EXEC2A COPY =CHLXCRT,X INDEX TO BEGIN OF XCRT TAB 21E7 8080 0000 0719 COPY 0(X),A GET 1ST CHAN 21E8 13CB 21F4 0720 JLT A,EXEC2B NO NON-TV TEST 21E9 E2B5 221F 0721 COPY =CHNLST,Y INDEX TEST CHAN TABLE  21EA 48F9 0722 COPY =-7,Q 1PAGE 0031 MACRO (F510) NM-4 ASYNC COMM CONTROLLER (ACC) DIAGNOSTIC TEST 84-93860-10 A000 1984/06/29 14:35:09 EXEC-TEST ROUTINE 21EB 8080 0000 0723 COPY 0(X),A GET NON-TV CHAN 21EC 8440 0000 0724 COPY A,0(Y) PUT INTO TEST CHAN TABLE 21ED 2B01 0725 ADD =1,X 21EE 6B01 0726 ADD =1,Y 21EF 54BB 21EB 0727 IJNE Q,$-4 21F0 BFAC 221D 0728  JST TESTD GO DO TEST D 21F1 BFAC 221E 0729 JST TESTE GO DO TEST E 21F2 BFAD 2220 0730 JST TESTF GO DO TEST F 21F3 BFAD 2221 0731 JST TESTG GO DO TEST G 21F4 83A7 221C 0732 EXEC2B COPY CAR,A GET RUN OPTION 21F5 000F 0733 TBIT 0,A IS ACCUM. ERR. BIT ON? 21F6 36D0 2207 0734 JF OV,EXEC3 NEXT, IF NO OPTION 21F7 A2AA 2222 0735 COPY  =EROTAB,X GET ERR TAB PTR 21F8 0900 0736 COPY =0,A 21F9 8BA8 2222 0737 ADD ERORA,A 21FA 8BA8 2223 0738 ADD ERORB,A 21FB 8BA8 2224 0739 ADD ERORC,A 21FC 8BA8 2225 0740  ADD ERORD,A 21FD 8BA8 2226 0741 ADD ERORE,A 21FE 8BA8 2227 0742 ADD ERORF,A 21FF 8BA8 2228 0743 ADD ERORG,A 2200 C392 2213 0744 COPY EROTOL,Q GET TOTAL ERR THIS PASS 2< 201 0042 0745 ADD Q,A UPDATE AND 2202 8790 2213 0746 COPY A,EROTOL SAVE IN TOTAL COUNT 2203 82A5 2229 0747 COPY =ERACMSG,A PRINT ' ACCUMULATED ERRORS: ' 2204 FF2E 21B3 0748  JSK MSG 2205 838D 2213 0749 COPY EROTOL,A GET TOTAL COUNT 2206 FF90 2217 0750 JSK  DECOUT AND OUTPUT 00002207 0751 EXEC3 EQU $ 2207 8394 221C 0752 COPY CAR,A GET RUN OPTION 2208 003F 0753 TBIT 3,A IS RUN CONT. BIT ON? 2209 3643 220D 0754 JT  OV,EXEC4 IF SO, DON'T...STOP. 220A 829F 222A 0755 COPY =ENDMSG,A PRINT ' END OF TEST ' 220B FF27 21B3 0756 JSK MSG 220C 9F9E 222B 0757 JMP START RESTART WITH QUERIES 0000220D 0758 EXEC4 EQU $ 220D 829E 222C 0759 COPY =PASSDIV,A PRINT '-------------' 1PAGE 0032 MACRO (F510) NM-4 ASYNC COMM CONTROLLER (ACC) DIAGNOSTIC TEST 84-93860-10 A000 1984/06/29 14:35:10 EXEC-TEST ROUTINE 220E FF24 21B3 0760 JSK MSG 220F DF82 2212 0761 IMS PASS BUMP PASS NO. 2210 9E46 21D7 0762 JMP EXEC1 PASS STILL GOOD, LOOP BACK 2211 BD00 0000 0763 JST *0 PASS EXPIRED, GO TO DEBUG 001E 0764 LPOOL 2212 2BED PASS 2213 2BE2 EROTOL 2214 290D RSTALL 2215 2810 NEWLINE 2216 3231 PASSMSG 2217 26ED DECOUT 2218 2A65 CHLCRT 2219 22B1 AR2RS 221A 22CA TESTC 221B 2A78 CHLXCRT 221C 2A30 CAR 221D 2352 TESTD 221E 23C9 TESTE 221F 2A44 CHNLST 2220 2467 TESTF 2221 24F6 TESTG 2222 2BDB EROTAB 2223 2BDC ERORB 2224 2BDD ERORC 2225 2BDE ERORD 2226 2BDF ERORE 2227 2BE0 ERORF 2228 2BE1 ERORG 2229 31D4 ERACMSG 222A 31BD ENDMSG 222B 200A START 222C 2BEE PASSDIV 222D  222E 222F 1PAGE 0033 MACRO (F510) NM-4 ASYNC COMM CONTROLLER (ACC) DIAGNOSTIC TEST 84-93860-10 A000 1984/06/29 14:35:11 TESTA - ALIGNMENT TEST 0766 ****************************************************** 0767 * 0768 * TEST A-ALIGNMENT TEST 0769 *  0770 * THIS TEST WILL OUTPUT ASCII CHAR TO CRT AND LP(IF ON) 0771 *  0772 ******************************************************* 0773 * 2230 0E0D 0774 TESTA ENT  2231 82A1 2253 0775 COPY =TSTA,A 2232 FFA1 2254 0776 JSK MSG 2233 FF61 2215 0777 JSK NEWLINE 2234 08F6 0778 COPY =-10,A 2235 879F 2255 0779 COPY A,LINES 2236 0921 0780 COPY =:21,A 2237 879E 2256 0781 COPY A,CHARSV 2238 A29E 2257 0782 COPY =XASCBF,X 2239 FF9E 2258 0783 JSK SETBF SET UP BUFFER 223A BECD 2288 0784 =  JST AR1 223B DF99 2255 0785 IMS LINES BUMP LINE NUMBER 223C 9E7D 223A 0786 JMP $-2 PRINT AGAIN IF NOT DONE 223D A261 221F 0787 COPY =CHNLST,X 223E A79B 225A 0788  COPY X,CHLPTR 223F A080 0000 0789 TESTA1 COPY 0(X),X GET CHANNEL 2240 33C7 2248 0790 JLT  X,TESTA2 DONE 2241 C299 225B 0791 COPY =:0D0A,Q DATA IS CR & LF 2242 FF99 225C 0792 JSK DEVADR CALC DEV ADDR 2243 030A 0793 XNX A 2244 4200 0794 OUT Q,0  OUTPUT DATA 2245 DF94 225A 0795 IMS CHLPTR 2246 A393 225A 0796 COPY CHLPTR,X 2247 9E77 223F 0797 JMP TESTA1 GO FOR ANOTHER CHAN 2248 8353 221C 0798 TESTA2 COPY CAR,A 2249 0E59  0799 SHIFT A,RO,6 LP OPTION ON ? 224A 36C7 2252 0800 JF OV,TESTAND NO, EXIT 224B BEDE 22AA 0801 JST AR2S REPLACE TEST CHAN TABLE 224C 08D8 0802 COPY =-40,A 1PAGE 0034 MACRO (F510) NM-4 ASYNC COMM CONTROLLER (ACC) DIAGNOSTIC TEST 84-93860-10 A000 1984/06/29 14:35:12 TESTA - ALIGNMENT TEST 224D 8787 2255 0803 COPY A,LINES PRINT 40 LINES ON LP 224E BECA 2299 0804 JST  AR2 224F DF85 2255 0805 IMS LINES 2250 9E7D 224E 0806 JMP $-2 PRINT TILL DONE  2251 BEDF 22B1 0807 JST AR2RS RESTORE TEST CHAN TABLE 2252 9F5D 2230 0808 TESTAND JMP *TESTA DONE 000C 0809 LPOOL 2253 32AB TSTA 2254 2802 MSG 2255 2BE4 LINES 2256 2A42 CHARSV 2257 3176 XASCBF 2258 2918 SETBF 2259 2288 AR1 225A 2A4D CHLPTR 225B 0D0A 225C 2708 DEVADR 225D 22AA AR2S 225E 2299 AR2 1PAGE 0035 MACRO (F510) NM-4 ASYNC COMM CONTROLLER (ACC) DIAGNOSTIC TEST 84-93860-10 A000 1984/06/29 14:35:12 TEST B - ROTATING TEST 0811 ****************************************************** 0812 * 0813 * TEST B-ROTATING TEST, THIS TEST WILL OUTPUT ASCII CAHRS 0814 * TO CRT AND LP (IF LP ON) IN A ROTATING FASHION 0815 * 0816 ******************************************************  0817 * 225F 0E0D 0818 TESTB ENT 2260 82A5 2286 0819 COPY =TSTB,A  2261 FF72 2254 0820 JSK MSG 2262 FF32 2215 0821 JSK NEWLINE 2263 08F6 0822  COPY =-10,A 2264 8770 2255 0823 COPY A,LINES 10 LINES PER CRT 2265 0921 0824 COPY  =:21,A 2266 876F 2256 0825 COPY A,CHARSV 2267 879F 2287 0826 COPY A,CHARS 2268 A26E 2257 0827 COPY =XASCBF,X 2269 FF6E 2258 0828 TESTB1 JSK SETBF SET BUFFER 226A BE9D 2288 0829  JST AR1 226B DF9B 2287 0830 IMS CHARS 226C 839A 2287 0831 COPY CHARS,> A GET NEXT CHAR 226D 8768 2256 0832 COPY A,CHARSV AND SAVE FOR MAKE UP BUF 226E A268 2257 0833  COPY =XASCBF,X INDEX XMT BUFFER 226F DF65 2255 0834 IMS LINES 2270 9E78 2269 0835  JMP TESTB1 PRINT AGAIN IF NOT DONE 2271 832A 221C 0836 COPY CAR,A 2272 0E59 0837  SHIFT A,RO,6 LP OPTION ON ? 2273 36D1 2285 0838 JF OV,TESTBND NO, EXIT 2274 BEB5 22AA 0839 JST AR2S REPLACE TEST CHAN TABLE 2275 08D8 0840 COPY =-40,A 2276 875E 2255 0841 COPY A,LINES 40 LINES FOR LP 2277 0921 0842 COPY =:21,A STARTING CHAR  2278 875D 2256 0843 COPY A,CHARSV 2279 878D 2287 0844 COPY A,CHARS 227A A25C 2257 0845  COPY =XASCBF,X INDEX XMT BUF 227B FF5C 2258 0846 JSK SETBF AND SET IT UP 227C BE9C 2299 0847 TESTB2 JST AR2 1PAGE 0036 MACRO (F510) NM-4 ASYNC COMM CONTROLLER (ACC) DIAGNOSTIC TEST 84-93860-10 A000 1984/06/29 14:35:14 TEST B - ROTATING TEST 227D DF89 2287 0848 IMS CHARS BUMP CHARACTER 227E 8388 2287 0849 COPY CHARS,A GET IT 227F 8756 2256 0850 COPY A,CHARSV SAVE FOR OUTPUT 2280 A256 2257 0851 COPY =XASCBF,X 2281 FF56 2258 0852 JSK SETBF 2282 DF52 2255 0853  IMS LINES 2283 9E78 227C 0854 JMP TESTB2 DO TILL DONE 2284 BEAC 22B1 0855 JST  AR2RS RESTORE TEST CHAN TAB 2285 9F59 225F 0856 TESTBND JMP *TESTB DONE 0002 0857  LPOOL 2286 32B3 TSTB 2287 2A41 CHARS 1PAGE 0037 MACRO (F510) NM-4 ASYNC COMM CONTROLLER (ACC) DIAGNOSTIC TEST 84-93860-10 A000 1984/06/29 14:35:14 ALIGNMENT/ROTATING TEST SUB 0859 ***************************************************** 0860 * 0861 * THIS SUBS ARE CALLED BY TESTA AND TESTB ONLY, 0862 * THEREFORE THEY ARE PUT HERE IMMEDIATELY AFTER 0863 *  THIS 2 TESTS INSTEAD OF BEING PUT IN THE SUB SECTION 0864 * 0865 ***************************************************** 0866 * 2288 0E0D 0867 AR1 ENT 2289 82B1 22BB 0868 COPY =SMSOT,A SET XMT CMD BUF 228A 87B1 22BC 0869 COPY A,CMDWD1 228B 82B1 22BD 0870 COPY =XASPTC,A 228C 87B1 22BE 0871 COPY A,BUFPTR0 SAVE BUF ADDR IN PTR 228D 0952  0872 COPY =82,A 228E 87B0 22BF 0873 COPY A,BYTCNT SET BYTE COUNT 228F 82B0 22C0 0874  COPY =TSTLST1,A 2290 87B0 22C1 0875 COPY A,TSTLPT SET TEST LIST ADDR PTR 2291 8206 2218 0876 COPY =CHLCRT,A GET CHANNEL LIST 2292 8747 225A 0877 COPY A,CHLPTR SAVE INT PTR 2293 FFAE 22C2 0878 JSK PAIOB SET AIO BLOCKS 2294 4918 0879 COPY =120*2/10,Q SET TIM? E = SOME RTC SECONDS (2/10 @ TTLF) 2295 4049 0880 COMP Q 2296 C7AC 22C3 0881 COPY Q,CLOCK 2297 FFAC 22C4 0882 JSK DOIT SET COMMANDS (1 LINE/CRT EA TIME) 2298 9F6F 2288 0883 JMP  *AR1 0884 * 2299 0E0D 0885 AR2 ENT 229A 82AA 22C5 0886 COPY =SMSIN,A SET XMT CMD BUF 229B 87A0 22BC 0887 COPY A,CMDWD1 229C 82A9 22C6 0888 COPY  =XASPTL,A 229D 87A0 22BE 0889 COPY A,BUFPTR0 SAVE BUF ADDR IN PTR 229E 0954 0890 COPY  =84,A 229F 879F 22BF 0891 COPY A,BYTCNT SET BYTE COUNT 22A0 829F 22C0 0892 COPY =TSTLST1,A 22A1 879F 22C1 0893 COPY A,TSTLPT SET TEST LIST ADDR PTR 22A2 82A4 22C7 0894 COPY =CHLLP,A GET CHANNEL LIST 22A3 8736 225A 0895 COPY A,CHLPTR SAVE INTO PTR 1PAGE 0038 MACRO (F510) NM-4 ASYNC COMM CONTROLLER (ACC) DIAGNOSTIC TEST 84-93860-10 A000 1984/06/29 14:35:16 ALIGNMENT/ROTATING TEST SUB 22A4 FF9D 22C2 0896 JSK PAIOB SET AIO BLOCKS 22A5 4914 0897 COPY =20,Q SET TIME = 1 SECOND 22A6 4049 0898 COMP Q 22A7 C79B 22C3 0899 COPY Q,CLOCK 22A8 FF9B 22C4 0900 JSK DOIT SET COMMAND (1 LINE TO LP EA TIME) 22A9 9F6F 2299 0901 JMP *AR2  0902 * 22AA 0E0D 0903 AR2S ENT 22AB A29C 22C8 0904 COPY =CHNLST,X INDEX TEST CHAN 22AC 0907 0905 COPY =7,A LP CHANNEL 22AD 8480 0000 0906 COPY A,0(X) SAVE IT 22AE 08FF 0907 COPY =-1,A THEN, TERMINATOR 22AF 8481 0001 0908 COPY A,1(X) 22B0 9F79 22AA 0909 JMP *AR2S 0910 * 22B1 0E0D 0911 AR2RS ENT  22B2 A296 22C9 0912 COPY =CHLCRT,X INDEX CRT TABLE 22B3 E294 22C8 0913 COPY  =CHNLST,Y INDEX TEST CHANNEL LIST 22B4 48F9 0914 COPY =-7,Q SET COUNT 22B5 8080 0000 0915  COPY 0(X),A GET CHAN FROM WORK TAB 22B6 8440 0000 0916 COPY A,0(Y) SAVE IN TEST CHAN TAB 22B7 2B01 0917 ADD =1,X 22B8 6B01 0918 ADD =1,Y 22B9 54BB 22B5 0919  IJNE Q,$-4 22BA 9F76 22B1 0920 JMP *AR2RS 000F 0921 LPOOL 22BB 0612 SMSOT 22BC 2A81 CMDWD1 22BD 3164 XASPTC 22BE 2A2C BUFPTR0 22BF 2A2F BYTCNT 22C0 3093 TSTLST1 22C1 308A TSTLPT 22C2 28AC PAIOB 22C3 0091 CLOCK 22C4 2712 DOIT 22C5 0610 SMSIN 1PAGE 0039 MACRO (F510) NM-4 ASYNC COMM CONTROLLER (ACC) DIAGNOSTIC TEST 84-93860-10 A000 1984/06/29 14:35:16 ALIGNMENT/ROTATING TEST SUB 22C6 316C XASPTL 22C7 2A58 CHLLP 22C8 2A44 CHNLST 22C9 2A65 CHLCRT 1PAGE 0040 MACRO (F510) NM-4 ASYNC COMM CONTROLLER (ACC) DIAGNOSTIC TEST 84-93860-10 A000 1984/06/29 14:35:17 @  TEST C - ECHO TEST 0923 ****************************************************** 0924 * 0925 * TEST C-ECHO INPUT BUFFER TEST, THIS TEST WILL DO: 0926 * 0927  * 1. OUTPUT MESSAGE TO ALL TV 0928 * 2. COLLECT INPUT FROM ALL TV 0929 * 3. SET TIME FOR 60 SECONDS FOR TIME OUT 0930 * 4. ECHO BACK TO ALL TV WHICH HAS INPUT  0931 * 0932 ***************************************************** 0933 *  22CA 0E0D 0934 TESTC ENT 22CB 82F0 233C 0935 COPY =TSTC,A 22CC FF07 2254 0936 JSK MSG 22CD A2EF 233D 0937 COPY =EBUF0+1,X INDEX BEGIN OF EBUF S 22CE 08F9 0938  COPY =-7,A SET UP CONT 22CF 87EE 233E 0939 COPY A,CELLC 22D0 4926 0940 TESTC1 COPY =38,Q 22D1 08FF 0941 COPY =-1,A 22D2 8480 0000 0942 COPY A,0(X) 22D3 2B01 0943 ADD =1,X 22D4 55BD 22D2 0944 JNED Q,$-2 DO TILL 1 BUF CLEARED 22D5 DFE8 233E 0945 IMS CELLC 22D6 9E81 22D8 0946 JMP $+2 22D7 9E82 22DA 0947 JMP $+3 DONE, DO TEST 22D8 2B01 0948 ADD =1,X SKIP ONE WORD 22D9 9E76 22D0 0949 JMP TESTC1 DO NEXT EBUF 22DA 82E4 233F 0950 COPY =EBFMSPT,A 22DB 8762 22BE 0951 COPY A,BUFPTR0 SET UP XMT BUF PTR 22DC 825E 22BB 0952 COPY =SMSOT,A 22DD 875E 22BC 0953 COPY A,CMDWD1  SET UP XMT BUF CMD 22DE 092C 0954 COPY =44,A 22DF 875F 22BF 0955 COPY A,BYTCNT SET BYTE COUNT 22E0 825F 22C0 0956 COPY =TSTLST1,A 22E1 875F 22C1 0957 COPY A,TSTLPT SET TEST LIST ADDR PTR 22E2 8266 22C9 0958 COPY =CHLCRT,A GET CHAN LIST 22E3 87DC 2340 0959 COPY  A,CHLPTR PUT ITO POINTER 1PAGE 0041 MACRO (F510) NM-4 ASYNC COMM CONTROLLER (ACC) DIAGNOSTIC TEST 84-93860-10 A000 1984/06/29 14:35:18 TEST C - ECHO TEST 22E4 FF5D 22C2 0960 JSK PAIOB SET AIO BLOCKS 22E5 0900  0961 COPY =0,A 22E6 4902 0962 COPY =2,Q SET TIMEOUT=2 SECONDS 22E7 4700  0963 MUL =20,AQ 22E8 2341 22E9 4049 0964 COMP Q 22EA C758 22C3 0965  COPY Q,CLOCK 22EB FF58 22C4 0966 JSK DOIT SEND COMMANDS 0967 * 22EC 82D5 2342 0968 COPY =EBUFPTR,A 22ED 87D5 2343 0969 COPY A,BUFPTR1 SET UP RCV BUF PTR 22EE 82D5 2344 0970 COPY =SMSIN+ECHO+ESCD,A INPUT, ECHO & TERM ON CR 22EF 87D5 2345 0971 COPY A,CMDWD2 SET RCV BUF CMD 22F0 094C 0972 COPY =76,A 22F1 874D 22BF 0973 COPY A,BYTCNT SET BYTE COUNT 22F2 FFD3 2346 0974 JSK CLRSTA CLEAR RCV STATUS 22F3 82D3 2347 0975 COPY A  =TSTLST0,A 22F4 874C 22C1 0976 COPY A,TSTLPT SET TEST LIST PTR 22F5 8253 22C9 0977 COPY =CHLCRT,A 22F6 87C9 2340 0978 COPY A,CHLPTR ALSO CHAN LIST 22F7 FF4A 22C2 0979 JSK PAIOB SET AIO BLOCKS 22F8 C2CF 2348 0980 COPY =20*60,Q SET TIME OUT=60 SECONDS 22F9 4049 0981  COMP Q 22FA C748 22C3 0982 COPY Q,CLOCK 22FB FF48 22C4 0983 JSK DOIT SEND COMMANDS 0984 * 0985 * STORE BYTE PROCESSED COUNTS 22FC 08F9 0986  COPY =-7,A SET UP COUNT 22FD 87C0 233E 0987 COPY A,CELLC 22FE E3CA 2349 0988  COPY INTBAS,Y GET INT BASE ADDR 22FF A2CA 234A 0989 COPY =CELLCBC,X INDEX STORAGE ADDR 2300 8041 0001 0990 TESTC2 COPY 1(Y),A GET -VE BYTE COUNT 2301 BAC9 234B 0991 CSK A,=:8000 2302 0000  0992 NOP 2303 9E81 2305 0993 JMP $+2 2304 0900 0994 COPY  =0,A ZERO OUT 2305 48B4 0995 COPY =-76,Q 1PAGE 0042 MACRO (F510) NM-4 ASYNC COMM CONTROLLER (ACC) DIAGNOSTIC TEST 84-93860-10 A000 1984/06/29 14:35:19 TEST C - ECHO TEST 2306 4003 0996 SUB  A,Q CALCULATE BYTE PROCESSED 2307 4AFE 0997 ADD =-2,Q ADD 2 MORE AND 2308 C480 0000 0998 COPY Q,0(X) STORE -VE BYTE COUNT 2309 DFB4 233E 0999 IMS CELLC 230A 9E81 230C 1000 JMP $+2 230B 9E83 230F 1001 JMP TESTC3 DONE 230C 6B08 1002 ADD  =8,Y BUMP INT ADDR 230D 2B01 1003 ADD =1,X BUMP STORAGE PTR 230E 9E71 2300 1004  JMP TESTC2 230F 82BC 234C 1005 TESTC3 COPY =EBUFPTX,A 2310 872D 22BE 1006 COPY A,BUFPTR0 SET UP XMT BUF PTR 2311 8229 22BB 1007 COPY =SMSOT,A 2312 8729 22BC 1008 COPY A,CMDWD1  SET XMT BUF CMD 2313 094E 1009 COPY =78,A 2314 872A 22BF 1010 COPY A,BYTCNT SET MAX BYTE CNT (CHANGE LATER) 2315 FFB7 234D 1011 JSK CLXSTA CLEAR XMT STATUS 2316 8229 22C0 1012  COPY =TSTLST1,A 2317 8729 22C1 1013 COPY A,TSTLPT SET TEST LIST ADDR PTR 2318 8230 22C9 1014  COPY =CHLCRT,A 2319 87A6 2340 1015 COPY A,CHLPTR SET CHAN LIST PTR 231A FF27 22C2 1016 JSK PAIOB SET AIO BLOCKS 231B E3AD 2349 1017 COPY INTBAS,Y INDEX INT BASE ADDR  231C 6B40 1018 ADD =:40,Y BUMP TO HIGH ADDR FOR XMT 231D A2AC 234A 1019 COPY =CELLCBC,X INDEX STORAGE ADDR 231E 08F9 1020 COPY =-7,A SET UP COUNT 231F 879E 233E 1021  COPY A,CELLC 2320 8080 0000 1022 TESTC4 COPY 0(X),A RETRIVE STORED -VE BYTE COUNT 2321 8441 0001 1023  COPY A,1(Y) SAVE IN AIO BLOCK 2322 DF9B 233E 1024 IMS CELLC 2323 9E81 2325 1025 B  JMP $+2 2324 9E83 2328 1026 JMP TESTC5 DONE 2325 6B08 1027 ADD =8,Y  BUMP INT ADDR 2326 2B01 1028 ADD =1,X BUMP STORAGE PTR 2327 9E78 2320 1029 JMP TESTC4 DO AGAIN 2328 491E 1030 TESTC5 COPY =20*15/10,Q SET TIMEOUT=1.5 SECONDS 2329 4049 1031 COMP Q 232A C718 22C3 1032 COPY Q,CLOCK 1PAGE 0043 MACRO (F510) NM-4 ASYNC COMM CONTROLLER (ACC) DIAGNOSTIC TEST 84-93860-10 A000 1984/06/29 14:35:21 TEST C - ECHO TEST 232B FF18 22C4 1033 JSK  DOIT 232C 0E85 1034 TESTCND SBIT 8,S ENABLE CPU INT 232D C2A0 234E 1035 COPY =RESET,Q RESET CMD 232E E21A 22C9 1036 COPY =CHLCRT,Y INDEX CRT CHAN 232F A040 0000 1037 COPY  0(Y),X GET CHAN 2330 FF9E 234F 1038 TESTCND1 JSK DEVADR 2331 030A 1039 XNX A 2332 4201 1040 OUT Q,DAFC RESET CHAN 2333 6B01 1041 ADD =1,Y BUMP CHAN PTR  2334 A040 0000 1042 COPY 0(Y),X GET NXT CHAN 2335 33C1 2337 1043 JLT X,$+2 JMP IF DONE 2336 9E79 2330 1044 JMP TESTCND1 ELSE, REDO 2337 08FB 1045 COPY =-5,A  TIME FOR 5 COUNTS 2338 BF97 2350 1046 JST TIMER 2339 BF97 2351 1047 JST TIME 233A 9E7E 2339 1048 JMP $-1 233B 9F0E 22CA 1049 JMP *TESTC 0016 1050 LPOOL  233C 32BB TSTC 233D 2A85 233E 2A34 CELLC 233F 2BC1 EBFMSPT 2340 2A4D CHLPTR 2341 0014 2342 2B9C EBUFPTR 2343 2A2D BUFPTR1 2344 0E18 2345 2A82 CMDWD2  2346 26B1 CLRSTA 2347 308B TSTLST0 2348 04B0 2349 2BE3 INTBAS 234A 2A36 CELLCBC  234B 8000 234C 2BA3 EBUFPTX 234D 26BC CLXSTA 234E 0100 RESET 1PAGE 0044 MACRO (F510) NM-4 ASYNC COMM CONTROLLER (ACC) DIAGNOSTIC TEST 84-93860-10 A000 1984/06/29 14:35:22 TEST C - ECHO TEST 234F 2708 DEVADR 2350 293F TIMER 2351 2938 TIME 1PAGE 0045 MACRO (F510) NM-4 ASYNC COMM CONTROLLER (ACC) DIAGNOSTIC TEST 84-93860-10 A000 1984/06/29 14:35:22 TEST D - LOOP BACK TEST 1052 ****************************************************** 1053 * 1054 * TEST D-DATA LOCAL LOOP BACK TEST  1055 * 1056 * THIS TEST WILL DO THE FOLLOWING: 1057 * 1) DO A LOOP BACK DATA XMT & RCV ON SELECTED 1058 * CHANNELS WITH FULL DUPLEX 1059  * 2) CHECK FOR PROCESSED WORD COUNT AND EOB 1060 * CONDITIONS AND WILL REPORT ANY ERROR IF 1061 * ENCOUNTERED. 1062 * 1063 ****************************************************** 1064 * 2352 0E0D 1065 TESTD ENT 2353 82D4 2C 3A8 1066 COPY =TSTD,A PRINT ' TEST D' 2354 FFD4 23A9 1067 JSK MSG 2355 0900 1068  COPY =0,A 2356 87D3 23AA 1069 COPY A,ERORD CLEAR ERROR CNT CELL 2357 0903 1070  COPY =3,A 2358 87D2 23AB 1071 COPY A,EROTT SAVE OFFSET=3 FOR TALLY 00002359 1072 TESTD1 EQU $ 2359 82D2 23AC 1073 COPY =RBUFPTR,A 235A 8768 2343 1074 COPY A,BUFPTR1 SET UP RCV BUFFER PTR 235B 82D1 23AD 1075 COPY =XBUFPTR,A 235C 87D1 23AE 1076 COPY A,BUFPTR0 SET UP XMT BUFFER PTR 235D 82D1 23AF 1077 COPY =SMSOT,A 235E 87D1 23B0 1078 COPY A,CMDWD1  SET XMT BUFFER COMMAND 235F 82D1 23B1 1079 COPY =SMSIN,A 2360 8764 2345 1080 COPY A,CMDWD2  SET RCV BUFFER COMMAND 2361 826C 234E 1081 COPY =:100,A 2362 87CF 23B2 1082 COPY A,BYTCNT  SET BYTE COUNTS 2363 FFCF 23B3 1083 JSK CLRBUF CLEAR RCV BUFFERS 2364 FF61 2346 1084 JSK CLRSTA CLEAR RVX STATUS 2365 FF67 234D 1085 JSK CLXSTA CLEAR XMT STATUS 2366 82CD 23B4 1086 COPY =TSTLST2,A 2367 87CD 23B5 1087 COPY A,TSTLPT SET TEST LIST ADDR PTR  1088 * 1PAGE 0046 MACRO (F510) NM-4 ASYNC COMM CONTROLLER (ACC) DIAGNOSTIC TEST 84-93860-10 A000 1984/06/29 14:35:23 TEST D - LOOP BACK TEST 2368 0940 1089 COPY =64,A 2369 87CC 23B6 1090 COPY A,MODE SET 2ND VECTOR OFFSET FOR FULL DPX 236A 82CC 23B7 1091 COPY =CHLXCRT,A GET CHAN LIST AND 236B 8754 2340 1092 COPY A,CHLPTR PUT INTO POINTER 236C FFCB 23B8 1093 JSK PAIOB SET AUTO AIO BLOCKS 236D 0900 1094 COPY =0,A SET TIMEOUT = 3 SECONDS 236E 4903 1095 COPY  =3,Q 236F 4700 1096 MUL =20,AQ 2370 2341 2371 4049 1097 COMP Q  2372 C7C6 23B9 1098 COPY Q,CLOCK 2373 FFC6 23BA 1099 JSK DOIT SEND COMMANDS AND ...  1100 * 2374 82C6 23BB 1101 COPY =CHNLST,A GET CHAN LIST AND 2375 874A 2340 1102  COPY A,CHLPTR PUT INTO POINTER 00002376 1103 TESTD2 EQU $ 2376 A349 2340 1104 COPY  CHLPTR,X SET CHAN LIST ADDR PTR 2377 8080 0000 1105 COPY 0(X),A GET CHAN NO. 2378 13ED 23A6 1106 JLT A,TESTDND IF IT'S DONE, EXIT 2379 0900 1107 COPY =0,A 237A 4908 1108  COPY =8,Q 237B 4720 1109 MUL 0(X),AQ CALC AUTO I/O BLOCK ADDR 237C 0000  237D E34B 2349 1110 COPY INTBAS,Y GET INT VECTOR BASE ADDR 237E 6042 1111 ADD Q,Y 237F 8041 0001 1112 COPY 1(Y),A GET BYTE COUNT 2380 96BB 23BC 1113 AND =:7FFF,A MASK OUT BIT 15 2381 1161 23A3 1114 JEQ A,TESTD5 IF CNT IS 0, GO FOR NXT CHAN 2382 A080 0000 1115 D  COPY 0(X),X ELSE, SEE IF EOB 2383 E2B9 23BD 1116 COPY =RVXSTAT,Y GET RCV STATUS ADDR 2384 80C0 0000 1117 COPY 0(X,Y),A GET STATUS 2385 BAB8 23BE 1118 CSK A,=-1 2386 0000 1119 NOP 2387 9E8D 2395 1120 JMP TESTD3 IF EOB, ELSE.. 2388 83B6 23BF 1121 COPY ADBAS,A GET DEVICE ADDR 2389 0E31 1122 SHIFT A,LO,4 238A 2E01 1123  SHIFT X,LO,1 1PAGE 0047 MACRO (F510) NM-4 ASYNC COMM CONTROLLER (ACC) DIAGNOSTIC TEST 84-93860-10 A000 1984/06/29 14:35:24 TEST D - LOOP BACK TEST 238B 0027 1124 OR X,A 238C 030A 1125 XNX A  238D 0101 1126 IN DAFC,A READ IN STATUS 238E 2E09 1127 SHIFT X,RO,1 238F 84C0 0000 1128 COPY A,0(Y,X) SAVE STATUS 2390 0900 1129 COPY =0,A GET ERR #### 2391 87AE 23C0 1130 COPY A,ERNO 2392 FFAE 23C1 1131 JSK ERR 2393 9E85 2399 1132  JMP TESTD3+4 GO OUTPUT CHAN # & STATUS 2394 9E8E 23A3 1133 JMP TESTD5 GO NEXT CHAN IF NO REPORT WANTED 00002395 1134 TESTD3 EQU $ 2395 0901 1135 COPY =1,A GET ERR #### 2396 FFAA 23C1 1136 JSK ERR 2397 9E81 2399 1137 JMP $+2 2398 9E8A 23A3 1138 JMP  TESTD5 NEXT CHAN IF NO REPORT WANTED 2399 82A8 23C2 1139 COPY =CHANNO,A 239A FF8E 23A9 1140  JSK MSG OUTPUT ' CHANNEL NO: ' 239B 0020 1141 COPY X,A 239C FFA6 23C3 1142 JSK DECOUT AND THE NUMBER 239D 82A6 23C4 1143 COPY =CHANST,A 239E FF8A 23A9 1144 JSK  MSG OUTPUT ' CHANNEL STATUS: ' 239F 80C0 0000 1145 COPY 0(X,Y),A GET STATUS 23A0 FFA4 23C5 1146 JSK HEXOUT AND OUTPUT 23A1 FFA4 23C6 1147 JSK NEWLINE 23A2 9E80 23A3 1148  JMP TESTD5 GO FOR NXT CHAN 000023A3 1149 TESTD5 EQU $ 23A3 DF1C 2340 1150 IMS  CHLPTR 23A4 0000 1151 NOP 23A5 9E50 2376 1152 JMP TESTD2 GO NXT CHAN 000023A6 1153 TESTDND EQU $ 23A6 FFA0 23C7 1154 JSK EROTAL GO TALLY SUB 23A7 9F2A 2352 1155 JMP *TESTD RETURN TO EXEC 0021 1156 LPOOL 23A8 32C3 TSTD 23A9 2802 MSG 23AA 2BDE ERORD 23AB 2BDA EROTT 1PAGE 0048 MACRO (F510) NM-4 ASYNC COMM CONTROLLER (ACC) DIAGNOSTIC TEST 84-93860-10 A000 1984/06/29 14:35:25 TEST D - LOOP BACK TEST 23AC 3017 RBUFPTR 23AD 315C XBUFPTR 23AE 2A2C BUFPTR0 23AF 0612 SMSOT 23B0 2A81 CMDWD1 23B1 0610 SMSIN  23B2 2A2F BYTCNT 23B3 2697 CLRBUF 23B4 309B TSTLST2 23B5 308A TSTLPT 23B6 2BE5 MODE  23B7 2A78 CHLXCRT 23B8 28AC PAIOB 23B9 0091 CLOCK 23BA 2712 DOIT 23BB 2A44 CHNLST E 23BC 7FFF 23BD 2C0F RVXSTAT 23BE FFFF 23BF 2A29 ADBAS 23C0 2BD9 ERNO 23C1 2736 ERR 23C2 319F CHANNO 23C3 26ED DECOUT 23C4 31A6 CHANST 23C5 27CE HEXOUT 23C6 2810 NEWLINE 23C7 2763 EROTAL 23C8 1PAGE 0049 MACRO (F510) NM-4 ASYNC COMM CONTROLLER (ACC) DIAGNOSTIC TEST 84-93860-10 A000 1984/06/29 14:35:26 TEST E-UIS INSTRUCTION TEST 1158 ****************************************************** 1159 * 1160 * TEST E-UIS INSTRUCTION TEST  1161 * 1162 * THIS TEST WILL DO THE SAME THING AS IN TEST E 1163 *  EXCEPT THAT IT DISABLES AND REENABLE THE EOB 1164 * INTERRUPTS BY THE UIS INSTRUCTION AND VERIFIES 1165 * THE VELIDITY OF THE INSTRUCTION. 1166 * 1167 ****************************************************** 1168 * 23C9 0E0D 1169 TESTE ENT  23CA 82AE 23F9 1170 COPY =TSTE,A PRINT ' TEST E' 23CB FF5D 23A9 1171 JSK MSG 23CC 0900 1172 COPY =0,A 23CD 87AC 23FA 1173 COPY A,CELLE INITIALIZE COUNT CELL 23CE 87AC 23FB 1174 COPY A,CELLEE 23CF 87AC 23FC 1175 COPY A,ERORE CLEAR ERROR CNT CELL 23D0 0904 1176 COPY =4,A 23D1 8759 23AB 1177 COPY A,EROTT SAVE OFFSET=4 FOR TALLY USE 23D2 8259 23AC 1178 COPY =RBUFPTR,A 23D3 87A9 23FD 1179 COPY A,BUFPTR1 SET UP RCV BUFFER PTR 23D4 8258 23AD 1180 COPY =XBUFPTR,A 23D5 8758 23AE 1181 COPY A,BUFPTR0 SET UP XMT BUFFER PTR 23D6 8258 23AF 1182 COPY =SMSOT,A 23D7 8758 23B0 1183 COPY A,CMDWD1 SET XMT BUFFER COMMAND 23D8 8258 23B1 1184 COPY =SMSIN,A 23D9 87A4 23FE 1185 COPY A,CMDWD2 SET RCV BUFFER COMMAND 23DA 82A4 23FF 1186 COPY =:100,A 23DB 8756 23B2 1187 COPY A,BYTCNT SET BYTE COUNTS 23DC FF56 23B3 1188 JSK CLRBUF CLEAR RCV BUFFERS 23DD 8256 23B4 1189 COPY =TSTLST2,A 23DE 8756 23B5 1190 COPY A,TSTLPT SET TEST LIST ADDR PTR 1191 * 23DF 0940 1192 COPY =64,A 23E0 8755 23B6 1193 COPY A,MODE SET 2ND VECTOR OFFSET FOR FULL DPX 23E1 8255 23B7 1194 COPY =CHLXCRT,A GET CHAN LIST AND 1PAGE 0050 MACRO (F510) NM-4 ASYNC COMM CONTROLLER (ACC) DIAGNOSTIC TEST 84-93860-10 A000 1984/06/29 14:35:27 TEST E-UIS INSTRUCTION TEST 23E2 879D 2400 1195 COPY A,CHLPTR PUT INTO POINTER 23E3 FF54 23B8 1196 JSK PAIOB SET AUTO AIO BLOCKS 23E4 FF9C 2401 1197 JSK CLXSTA CLEAR XMT STATUS 23E5 FF9C 2402 1198 JSK CLRSTA CLEAR RCV STATUS 23E6 0E85 1199 SBIT 8,S ENABLE INTERRUPT 23E7 0EC5 1200 SBIT 12,S DISF ABLE EOB INT 23E8 0309 1201 UIS UPDATE STATUS 23E9 FF99 2403 1202 JSK OUTOP DO OPERATION 23EA 08FE 1203 COPY =-2,A 23EB BF98 2404 1204 JST TIMER SET UP TIMER FOR 2 COUNTS 23EC BF98 2405 1205 JST TIME 23ED 9E7E 23EC 1206 JMP $-1  TIME NOT EXPIRED YET 23EE 48F8 1207 COPY =-8,Q SET UP COUNT 23EF A24D 23BD 1208 COPY =RVXSTAT,X 000023F0 1209 TESTE2 EQU $ 23F0 8080 0000 1210 COPY 0(X),A 23F1 BA4C 23BE 1211 CSK A,=-1 23F2 0000 1212 NOP 23F3 9E94 2408 1213 JMP TESTE3 ERROR 23F4 4B01 1214 ADD =1,Q BUMP COUNTER 23F5 4C00 1215 CLSN  Q,=0 CNT EXPIRED? 23F6 9E95 240C 1216 JMP TESTE4 YES, GO CHECK XMT STATUS 23F7 2B01  1217 ADD =1,X BUMP POINTER 23F8 9E77 23F0 1218 JMP TESTE2 GO CHECK AGAIN  000F 1219 LPOOL 23F9 32CD TSTE 23FA 2A3D CELLE 23FB 2A3E CELLEE  23FC 2BDF ERORE 23FD 2A2D BUFPTR1 23FE 2A82 CMDWD2 23FF 0100 2400 2A4D CHLPTR 2401 26BC CLXSTA 2402 26B1 CLRSTA 2403 2880 OUTOP 2404 293F TIMER 1PAGE 0051 MACRO (F510) NM-4 ASYNC COMM CONTROLLER (ACC) DIAGNOSTIC TEST 84-93860-10 A000 1984/06/29 14:35:28 TEST E-UIS INSTRUCTION TEST 2405 2938 TIME 2406 2407 2408 0902 1220 TESTE3 COPY =2,A GET ERROR #### 2409 8736 23C0 1221 COPY A,ERNO AND SAVE 240A FF36 23C1 1222 JSK ERR  CALL ERROR ROUTINE 240B 0000 1223 NOP 0000240C 1224 TESTE4 EQU $ 240C 48F8 1225 COPY =-8,Q SET UP COUNT 240D A2CD 245B 1226 COPY =XMTSTAT,X 240E 8080 0000 1227 COPY 0(X),A 240F BA2E 23BE 1228 CSK A,=-1 2410 0000 1229 NOP  2411 9E85 2417 1230 JMP TESTE5 ERROR 2412 4B01 1231 ADD =1,Q  BUMP COUNT 2413 4C00 1232 CLSN Q,=0 COUNT EXPIRED? 2414 9E86 241B 1233 JMP TESTE6 YES, GO ON 2415 2B01 1234 ADD =1,X BUMP POINTER 2416 9E77 240E 1235 JMP TESTE4+2 AND CHECK AGAIN 2417 0903 1236 TESTE5 COPY =3,A GET ERROR #### 2418 8727 23C0 1237 COPY A,ERNO AND SAVE 2419 FF27 23C1 1238 JSK ERR 241A 0000 1239 NOP  AND GO ON 0000241B 1240 TESTE6 EQU $ 241B 0EC7 1241 RBIT 12,S  ENABLE EOB INT 241C 0309 1242 UIS 241D 08FF 1243 COPY =-1,A 241E BF65 2404 1244 JST TIMER SET UP TIMER FOR 1 COUNT 241F BF65 2405 1245 JST TIME 2420 G 9E7E 241F 1246 JMP $-1 TIME NOT YET EXPIRE 2421 48F8 1247 COPY =-8,Q SET UP COUNT 2422 A21A 23BD 1248 COPY =RVXSTAT,X 00002423 1249 TESTE7 EQU $ 2423 8080 0000 1250 COPY 0(X),A 2424 BA19 23BE 1251 CSK A,=-1 2425 0000 1252 NOP  2426 DF53 23FA 1253 IMS CELLE 1PAGE 0052 MACRO (F510) NM-4 ASYNC COMM CONTROLLER (ACC) DIAGNOSTIC TEST 84-93860-10 A000 1984/06/29 14:35:29 TEST E-UIS INSTRUCTION TEST 2427 4B01 1254 ADD =1,Q 2428 4C00 1255 CLSN Q,=0 COUNT EXPIRED? 2429 9E82 242C 1256 JMP TESTE8 YES, GO CHECK XMT STATUS 242A 2B01 1257 ADD =1,X ELSE BUMP POINTER 242B 9E77 2423 1258 JMP TESTE7 AND CHECK AGAIN 242C 48F8 1259 TESTE8 COPY =-8,Q 242D A2AD 245B 1260 COPY =XMTSTAT,X 242E 8080 0000 1261 COPY 0(X),A 242F BAAC 245C 1262 CSK A,=-1 2430 0000 1263 NOP 2431 DF48 23FA 1264 IMS CELLE 2432 4B01 1265 ADD =1,Q 2433 4C00 1266 CLSN Q,=0 COUNT EXPIRED? 2434 9E82 2437 1267 JMP $+3  YES, GO CHECK # OF INT 2435 2B01 1268 ADD =1,X ELSE BUMP PTR 2436 9E77 242E 1269 JMP TESTE8+2 AND CHECK AGAIN 2437 8342 23FA 1270 COPY CELLE,A GET # OF EOB 2438 0D00 1271 CSK A,=0 ANY EOB? 2439 0000 1272 NOP 243A 9E85 2440 1273  JMP TESTE9 YES, GO SEE HOW MANY 243B 0904 1274 COPY =4,A NO EOB, ERROR 243C 87A0 245D 1275 COPY A,ERNO ERR #### 243D FFA0 245E 1276 JSK ERR 243E 0000 1277  NOP 243F 9E99 2459 1278 JMP TESTEND GO END OF TEST 00002440 1279 TESTE9 EQU $ 2440 A29E 245F 1280 COPY =CHLXCRT,X INDEX TEST CHANS 2441 8080 0000 1281 COPY 0(X),A 2442 13C4 2447 1282 JLT A,TESTE9A JMP IF END TABLE 2443 DF37 23FB 1283 IMS CELLEE BUMP EXP EOB COUNT 2444 DF36 23FB 1284 IMS CELLEE FOR BOTH XMT & RCV 2445 2B01 1285 ADD =1,X BUMP POINTER 2446 9E7A 2441 1286 JMP TESTE9+1 COUNT AGAIN 2447 8332 23FA 1287 TESTE9A COPY CELLE,A GET ACT EOB CNT 2448 C332 23FB 1288 COPY CELLEE,Q GET EXP EOB CNT 2449 400A 1289 CSN A,Q SAME ? 244A 9E8E 2459 1290 JMP TESTEND YES, EXIT TEST 1PAGE 0053 MACRO (F510) NM-4 ASYNC COMM CONTROLLER (ACC) DIAGNOSTIC TEST 84-93860-10 A000 1984/06/29 14:35:31  TEST E-UIS INSTRUCTION TEST 244B 0905 1291 COPY =5,A ELSE, NOT ENOUGH EOB 244C 8790 245D 1292 COPY A,ERNO ERR #### 244D FF90 245E 1293 JSK ERR 244E 9E81 2450 1294 JMH P $+2 244F 9E89 2459 1295 JMP TESTEND EXIT IF NO REPORT WANTED 2450 828F 2460 1296 COPY =EOBEX,A 2451 FF8F 2461 1297 JSK MSG PRINT ' EXPECTED EOB: ' 2452 8328 23FB 1298 COPY CELLEE,A 2453 FF8E 2462 1299 JSK DECOUT 2454 828E 2463 1300 COPY =EOBACT,A 2455 FF8B 2461 1301 JSK MSG PRINT ' ACTUAL EOB: ' 2456 8323 23FA 1302 COPY CELLE,A GET ACTUAL # OF EOB 2457 FF8A 2462 1303 JSK DECOUT AND PRINT 2458 FF8B 2464 1304 JSK NEWLINE 00002459 1305 TESTEND EQU $ 2459 FF8B 2465 1306 JSK EROTAL GO TALLY SUB 245A 9F8B 2466 1307 JMP *TESTE EXIT 000C 1308 LPOOL 245B 30D4 XMTSTAT  245C FFFF 245D 2BD9 ERNO 245E 2736 ERR 245F 2A78 CHLXCRT 2460 31C5 EOBEX  2461 2802 MSG 2462 26ED DECOUT 2463 31CD EOBACT 2464 2810 NEWLINE 2465 2763 EROTAL  2466 A3C9 TESTE 1PAGE 0054 MACRO (F510) NM-4 ASYNC COMM CONTROLLER (ACC) DIAGNOSTIC TEST 84-93860-10 A000 1984/06/29 14:35:32 TEST D-SPECIAL CHARACTER DETECT 1310 *****************************************************  1311 * 1312 * TEST D-SPECIAL CHARACTER DETECT 1313 *  1314 * 1) THIS TEST WILL ISSUE & RECEIVE A PREDEFINED 1315 * SPECIAL CHARACTER THROUGH THE SAME CHANNEL 1316 * IN FULL DUPLEX MODE 1317 * 2) THEN, SPECIAL CHARACTER DETECT IS CHECKED 1318 * FOR EACH TESTED CHANNEL. 1319 *  3) DO CHANNEL RESET 1320 * 1321 * : ERROR WILL BE REPORTED AS SELECTED BY QUERY 1322 * 1323 ******************************************************  1324 * 2467 0E0D 1325 TESTF ENT 2468 82ED 24D6 1326 COPY =TSTF,A PRINT ' TEST F ' 2469 FF77 2461 1327 JSK MSG 246A 9F7C 2467 1328 JMP *TESTF 246B 0900 1329 COPY =0,A 246C 87EA 24D7 1330 COPY A,ERORF CLEAR ERR CNT CELL 246D 0905  1331 COPY =5,A 246E 87E9 24D8 1332 COPY A,EROTT SAVE OFFSET=5 FOR TALLY 246F 82E9 24D9 1333 COPY =LSC+SC,A GET LOAD SPECIAL CHAR CMD & SPEC CHAR 2470 87E9 24DA 1334 COPY A,CMDWD3 FOR INITIALIXATION 2471 82E9 24DB 1335 COPY =TSTLST3,A GET TEST LIST PTR 2472 87E9 24DC 1336  COPY A,TSTLPT AND SAVE IT 2473 0940 1337 COPY =64,A (MAY NOT NEED IT) 2474 87E8 24DD 1338 COPY A,MODE 2475 4904 1339 COPY =20*2/10,Q SET TIME =2/10 SECOND 2476 4049  1340 COMP Q 2477 C7E6 24DE 1341 COPY Q,CLOCK 2478 FFE6 24DF 1342 JSK DOIT I  SEND COMMANDS 2479 82E6 24E0 1343 COPY =SRBUFPTR,A 247A 87E6 24E1 1344 COPY A,BUFPTR1  SET UP RCV BUF PTR 247B 82E6 24E2 1345 COPY =SXBUFPTR,A 247C 87E6 24E3 1346 COPY A,BUFPTR0  SET UP XMT BUF PTR 1PAGE 0055 MACRO (F510) NM-4 ASYNC COMM CONTROLLER (ACC) DIAGNOSTIC TEST 84-93860-10 A000 1984/06/29  14:35:33 TEST D-SPECIAL CHARACTER DETECT 247D 82E6 24E4 1347 COPY =SMSOT+SSC,A 247E 87E6 24E5 1348  COPY A,CMDWD1 SET XMT BUF CMD 247F 82E6 24E6 1349 COPY =SMSIN+SSC+ESCD,A 2480 87E6 24E7 1350 COPY A,CMDWD2 SET RCV BUF CMD 2481 0910 1351 COPY =:10,A 2482 87E5 24E8 1352  COPY A,BYTCNT SET BYTE COUNTS 2483 FFE5 24E9 1353 JSK CLRBUF CLEAR RCV BUFFERS 2484 82E5 24EA 1354 COPY =TSTLST2,A 2485 87D6 24DC 1355 COPY A,TSTLPT SET TEST LIST ADDR PTR 2486 0940 1356 COPY =64,A 2487 87D5 24DD 1357 COPY A,MODE SET 2ND VECTOR OFFSET FOR FULL DPX 2488 8256 245F 1358 COPY =CHLXCRT,A GET CHAN LIST AND 2489 87E1 24EB 1359 COPY A,CHLPTR PUT INTO POINTER 248A FFE1 24EC 1360 JSK PAIOB SET AUTO AIO BLOCKS 248B 0900 1361  COPY =0,A 248C 493C 1362 COPY =20*3,Q SET TIMEOUT = 3 SECONDS 248D 4049 1363  COMP Q 248E C7CF 24DE 1364 COPY Q,CLOCK 248F FFCF 24DF 1365 JSK DOIT SEND COMMANDS 1366 * 2490 824E 245F 1367 COPY =CHLXCRT,A GET CHAN LIST 2491 87D9 24EB 1368  COPY A,CHLPTR PUT INTO POINTER 00002492 1369 TESTF1 EQU $ 2492 A3D8 24EB 1370 COPY CHLPTR,X SET CHAN LIST ADDR PTR 2493 8080 0000 1371 COPY 0(X),A GET CHAN NO. 2494 13F4 24C9 1372 JLT A,TESTFND IF DONE, EXIT 2495 0900 1373 COPY =0,A 2496 4908 1374  COPY =8,Q 2497 4720 1375 MUL 0(X),AQ CALC AUTO I/O BLOCK ADDR 2498 0000 2499 E3D3 24ED 1376 COPY INTBAS,Y GET INT. VECTOR BASE ADDR 249A 6042 1377 ADD Q,Y 249B 8041 0001 1378 COPY 1(Y),A GET BYTE COUNT 249C A080 0000 1379 COPY 0(X),X GET CHAN NO IN X 249D 96D0 24EE 1380 AND =:7FFF,A MASK OUT BIT 15 249E 11C5 24A4 1381 JNE A,TESTF2 IF CNT NE 0, GO CHECK IF EOB 249F 0906 1382 COPY =6,A ERR #### 1PAGE 0056 MACRO (F510) NM-4 ASYNC COMM CONTROLLER (ACC) DIAGNOSTIC TEST 84-93860-10 A000 1984/06/29 14:35:34 TEST D-SPECIAL CHARACTER DETECT 24A0 873C 245D 1383 COPY A,ERNO ERROR 6: FAILED SPEC CHAR DETECT 24A1 FF3C 245E 1384 JSK ERR 24A2 9E9A 24BD 1385 JMP TESTF4 GO OUTPUT CHAN # & STATUS 24A3 9EA2 24C6 1386 JMP TESTF5 GO NEXT CHAN IF NO REPORT WANTED 000024A4 1387 TESTF2 EQU $ 24A4 E2CA 24EF 1388 J  COPY =RVXSTAT,Y GET RCV STATUS ADDR 24A5 80C0 0000 1389 COPY 0(X,Y),A GET STATUS 24A6 BA35 245C 1390 CSK A,=-1 24A7 0000 1391 NOP 24A8 9E8D 24B6 1392 JMP TESTF3 IF EOB, CHECK STA WD, ELSE... 24A9 83C6 24F0 1393 COPY ADBAS,A GET DEVICE ADDR 24AA 0E31 1394 SHIFT A,LO,4 24AB 2E01 1395 SHIFT X,LO,1 24AC 0027 1396 OR  X,A 24AD 030A 1397 XNX A 24AE 0101 1398 IN DAFC,A READ IN STATUS 24AF 2E09 1399 SHIFT X,RO,1 24B0 84C0 0000 1400 COPY A,0(Y,X) SAVE STATUS 24B1 0907  1401 COPY =7,A GET ERR #### 24B2 872A 245D 1402 COPY A,ERNO 24B3 FF2A 245E 1403  JSK ERR 24B4 9E88 24BD 1404 JMP TESTF4 GO OUTPUT CHAN # & STAT 24B5 9E90 24C6 1405  JMP TESTF5 GO NEXT CHAN IF NO REPORT WANTED 000024B6 1406 TESTF3 EQU $ 24B6 18E0 1407 AND =:E0,A SAVE ERROR BITS 24B7 114E 24C6 1408 JEQ A,TESTF5 JMP IF NO ERROR, ELSE... 24B8 0908 1409 COPY =8,A ERR #### 24B9 8723 245D 1410 COPY A,ERNO ERROR 8: RCV/FRAM ERROR 24BA FF23 245E 1411 JSK ERR 24BB 9E81 24BD 1412 JMP TESTF4 24BC 9E89 24C6 1413 JMP TESTF5 000024BD 1414 TESTF4 EQU $ 24BD 82B3 24F1 1415 COPY =CHANNO,A 24BE FF22 2461 1416 JSK MSG OUTPUT ' CHANNEL NO: ' 24BF 0020 1417 COPY X,A 24C0 FF21 2462 1418 JSK DECOUT AND THE NUMBER 24C1 82B0 24F2 1419 COPY =CHANST,A 1PAGE 0057 MACRO (F510) NM-4 ASYNC COMM CONTROLLER (ACC) DIAGNOSTIC TEST 84-93860-10 A000 1984/06/29 14:35:36 TEST D-SPECIAL CHARACTER DETECT 24C2 FF1E 2461 1420 JSK MSG OUTPUT ' CHANNEL STATUS: ' 24C3 80C0 0000 1421 COPY 0(X,Y),A GET STATUS 24C4 FFAE 24F3 1422 JSK HEXOUT AND OUTPUT 24C5 FF1E 2464 1423 JSK NEWLINE 000024C6 1424 TESTF5 EQU $ 24C6 DFA4 24EB 1425 IMS CHLPTR  24C7 0000 1426 NOP 24C8 9E49 2492 1427 JMP TESTF1 GO NEXT CHANNEL  000024C9 1428 TESTFND EQU $ 24C9 FF1B 2465 1429 JSK EROTAL GO TALLY SUB 24CA 0E85  1430 SBIT 8,S ENABLE CPU INTERRUPT 24CB C2A8 24F4 1431 COPY =RESET,Q GET COMMAND 24CC E212 245F 1432 COPY =CHLXCRT,Y INDEX NON CRT TEST CHAN 24CD A040 0000 1433 COPY 0(Y),X GET CHANNEL 24CE FFA6 24F5 1434 TESTFND1 JSK DEVADR 24CF 030A 1435 XNX A 24D0 4201  1436 OUT Q,DAFC RESET CHAN 24D1 6B01 1437 ADD =1,Y BUMP CHAN PTR 24D2 A040 0000 1438 COPY 0(Y),X GET NEXT CHANNEL 24D3 33C1 24D5 1439 JLT X,$+2 JMPK  IF DONE 24D4 9E79 24CE 1440 JMP TESTFND1 ELSE, REDO 24D5 9F11 2467 1441 JMP *TESTF  EXIT 0020 1442 LPOOL 24D6 32D7 TSTF 24D7 2BE0 ERORF 24D8 2BDA EROTT 24D9 80AA 24DA 2A83 CMDWD3 24DB 30A3 TSTLST3 24DC 308A TSTLPT 24DD 2BE5 MODE 24DE 0091 CLOCK 24DF 2712 DOIT 24E0 3064 SRBUFPTR 24E1 2A2D BUFPTR1 24E2 3074 SXBUFPTR 24E3 2A2C BUFPTR0 1PAGE 0058 MACRO (F510) NM-4 ASYNC COMM CONTROLLER (ACC) DIAGNOSTIC TEST 84-93860-10 A000 1984/06/29 14:35:37 TEST D-SPECIAL CHARACTER DETECT 24E4 2612 24E5 2A81 CMDWD1 24E6 2E10  24E7 2A82 CMDWD2 24E8 2A2F BYTCNT 24E9 2697 CLRBUF 24EA 309B TSTLST2 24EB 2A4D CHLPTR  24EC 28AC PAIOB 24ED 2BE3 INTBAS 24EE 7FFF 24EF 2C0F RVXSTAT 24F0 2A29 ADBAS  24F1 319F CHANNO 24F2 31A6 CHANST 24F3 27CE HEXOUT 24F4 0100 RESET 24F5 2708 DEVADR 1PAGE 0059 MACRO (F510) NM-4 ASYNC COMM CONTROLLER (ACC) DIAGNOSTIC TEST 84-93860-10 A000 1984/06/29 14:35:37 TEST G-SIGNAL TEST 1444 ****************************************************** 1445 *  1446 * TEST G-SIGNAL TEST; THIS TEST WILL ISSUE FOUR SET MODE 1447 * COMMANDS TO NON-TV CHANNELS AND CHECK THEIR RESPONSE 1448 * SIGNALS. IF ANY OF THEM DOESN'T MATCH WITH THE  1449 * EXPECTED SIGNAL, ERROR REPORT WILL BE GENERATED. 1450 * 1451 * OUTPUT COMMANDS EXPECTED STATUS 1452 * --------------- ---------------  1453 * 1454 * :400 XXX0 1455 * :401  XXX5 1456 * :402 XXX0 1457 * :403  XXX5 1458 * REVISED FOR ACC 1459 ****************************************************** 1460 * 24F6 0E0D 1461 TESTG ENT 24F7 82C5 253D 1462  COPY =TSTG,A PRINT ' TEST G (NON-TV)' 24F8 FFC5 253E 1463 JSK MSG 24F9 0900 1464  COPY =0,A 24FA 87C4 253F 1465 COPY A,ERORG CLEAR CNT CELL 24FB 0906 1466 COPY =6,A 24FC 875B 24D8 1467 COPY A,EROTT SAVE OFFSET=6 FOR TALLY 24FD 82C2 2540 1468 COPY =CHLXCRT,A 24FE 87C2 2541 1469 COPY A,CHPTXCRT INITIALIZE CHANNEL PTR 000024FF 1470 TESTG1 EQU  $ 24FF 82C2 2542 1471 COPY =SIGEX,A 2500 87C2 2543 1472 COPY A,SIGPTR INITIALIZE EXPECTED SIGNAL PTR 2501 82C2 2544 1473 COPY =SIGASC,A 2502 87C2 2545 1474 COPY A,SIGASPTR INITIALIZE OUTPUT BUF PTR 2503 82C2 2546 1475 COPY =:400,A 2504 8755 24DA 1476 COPY A,CMDWD3 IL NITIALIZE SET MODE COMMAND 2505 08FC 1477 COPY =-4,A 2506 87C0 2547 1478 COPY A,CELLG  INITIALIZE COUNT 00002507 1479 TESTG2 EQU $ 2507 08FF 1480 COPY =-1,A 1PAGE 0060 MACRO (F510) NM-4 ASYNC COMM CONTROLLER (ACC) DIAGNOSTIC TEST 84-93860-10 A000 1984/06/29 14:35:38 TEST G-SIGNAL TEST 2508 87BF 2548 1481 COPY A,TC2 2509 0880 1482 COPY =-128,A 250A 87BE 2549 1483 COPY A,TC1 PREPARE FOR SOFT TIMMING 250B C34E 24DA 1484 COPY CMDWD3,Q GET SET MODE COMMAND 250C E3B4 2541 1485 COPY CHPTXCRT,Y INDEX CHAN NO. PTR 250D A040 0000 1486 COPY 0(Y),X GET CHAN NO. IN X-REG 250E 2C04 1487 CLSN X,=4 250F 9E96 2526 1488 JMP TESTG3A SKIP CHANNEL 4 2510 FF64 24F5 1489 JSK DEVADR CALL DEVICE ADDR 2511 030A 1490 XNX A 2512 4201 1491 OUT Q,DAFC SEND COMMAND 2513 BFB6 254A 1492 JST TIME  TIME FOR VERY LITTLE TIME 2514 9E7E 2513 1493 JMP $-1 2515 030A 1494 XNX A 2516 0101 1495 IN DAFC,A GET STATUS 2517 87B3 254B 1496 COPY A,SIGACT SAVE IT  2518 180F 1497 AND =:F,A MASK OUT UNWANTED BITS 2519 A3A9 2543 1498 COPY SIGPTR,X INDEX EXPECTED SIG PTR 251A C080 0000 1499 COPY 0(X),Q GET IT 251B 400A 1500 CSN A,Q CAT & CAT ? 251C 9E84 2521 1501 JMP TESTG3 YES, GOOD 251D 0909 1502  COPY =9,A GET ERR #### 251E 87AD 254C 1503 COPY A,ERNO 251F FFAD 254D 1504 JSK  ERR IF ERROR REPORT WANTED 2520 9E8B 252C 1505 JMP TESTG4 GO REPORT ERR, ELSE GOON 00002521 1506 TESTG3 EQU $ 2521 DFA1 2543 1507 IMS SIGPTR 2522 DFA2 2545 1508 IMS SIGASPTR 2523 DF36 24DA 1509 IMS CMDWD3 2524 DFA2 2547 1510 IMS CELLG 2525 9E61 2507 1511  JMP TESTG2 NEXT CMD IF NOT FINISHED 2526 DF9A 2541 1512 TESTG3A IMS CHPTXCRT BUMP CHAN PTR  2527 E399 2541 1513 COPY CHPTXCRT,Y INDEX 2528 8040 0000 1514 COPY 0(Y),A GET CHAN #40 COPY A,0(Y) CLEAR BUFFER 26A5 6B01 1941 ADD =1,Y INCREMENT BUFER ADDRESS 26A6 54BD 26A4 1942 IJNE Q,$-2 DO UNTIL DONE 26A7 DF86 26AE 1943 IMS CHLPTR1 26A8 OS4 MB084062914514250840629145142 840629145142 F86020 VOLSOURCE 84-93860-20