ZBIOD DEF *+1 DEF ZBS21 DEF ZBS22 DEF ZBS23 DEF ZBS24 DEF ZBS25 DEF ZBS26 DEF ZBS27 DEF ZBS31 DEF ZBS32 DEF ZBS33 DEF ZBS41 DEF ZBS42 DEF ZBS51 DEF ZBS52 DEF ZBS53 DEF ZBS61 DEF ZBS62 DEF ZBS63 DEF ZBS64 DEF ZBS65 DEF ZBS66 DEF ZBS71 DEF ZBS72 DEC -1 * HED CONFIGURE THE READER INSTRUCTIONS CONFG NOP CLC INTP,C TURN I/O SYSTEM OFF LIA SW GET SELECT CODES ALF,ALF POSITION RAL,RAL FOR READER SELECT CODE AND Z.77 AND CONFIGURE LDB A CMB,INB ADB Z.7 SSB JMP *+3 HLT 73B JMP SETUP CRASH $$$***$$$ TRY AGAIN LDB XCONF JSB ZISC JMP CONFG,I EXIT BACK TO CALLE * XCONF DEF IODR * * * * * * * * * * HED BASIC I/O ON READER * * * TEST 01 * * THE MESSAGE "H055 B-IO ON READER" IS * PRINTED ON THE CONSOLE * * * NEXT, TCP IS CALLED, AND RUNS BASIC * I/O AGAIN, BUT THIS TIME, USING THE * SELECT CODE OF THE READER INTERFACE * BOARD. * * * OTHER THAN THE -H055 B-IO ON READER * MESSAGE, INFORMATION MESSAGES AND * ERROR HALTS AND MESSAGES ARE THE SAME * AS THOSE USED TO DESCRIBE ANY ERROR * DETECTED IN TEST 0. * * * * * SPC 5 TST01 EQU * SPC 1 NOP JSB RSCHK CHECK FOR RDR CONFIGURATION JSB MSGC,I REPORT TO CONSOLE DEF T1MSG B-IO ON READER LDA RDCHN GET READER SELECT CODE JSB ZBIO JMP TST01,I BACK TO EXEC * * * * * HED PUNCH ALL CHARACTER COMBINITIONS * * * TEST 02 * * THE IDENTIFICATION MESSAGE "H051 ALL * CHARACTER COMBINATIONS - PUNCH ONLY" * IS PRINTED ON THE CONSOLE. * * WHEN RUN IS PRESSED, A 60 CHARACTER * ALL ZEROS LEADER IS PUNCHED. NEXT, * AN ALL ONES CHARACTER IS PUNCHED, * REVERSED E.G. BIT0 BECOMES BIT7, BIT1 * BECOMES BIT6 ETC, AND PUNCHED AGAIN * THEN THE ORIGINAL CHARACTER IS * DECREMENTED AND OUTPUT TO THE PUNCH * AGAIN. THIS CONTINUES UNTIL AN ALL * ZEROS CHARACTER IS OUTPUT. THEN * THE CHARACTER IS INCREMENTED AND * REVERSED UNTIL THE ORIGINAL ALL ONES * CHARACTER IS AGAIN PUNCHED. FINALLY, * A TRAILING ALL ZEROS PATTERN IS OUTPUT, * AND THE ROUTINE TERMINATES. * * VARIABLE RECORD LENGTH OUTPUT CAN BE * SELECTED BY SETTING SWITCH REGISTER * BIT3 TO A ONE * * * * * SKP TST02 EQU * SPC 1 NOP JSB PSCHK CHECK FOR PUNCH CONFIG. JSB MSGH,I GIVE THE OPERATOR DEF T3MSG THE INSTRUCTIONS. JSB PUSET JSB LEADR PUNCH A LEADER CCA T.RY3 AND M.377 LOWER EIGHT BITS ONLY STA SPADH STORE IN HOLDING LOCATION JSB OUTPU AND PUNCH IT JSB FLOPP FLIP-FLOP THE CHARACTER JSB OUTPU AND PUNCH IT LDA SPADH GET THE CHARACTER ADA NEG.1 SUBTRACT A ONE SZA FULLY DECREMENTED? JMP T.RY3 NO, RUN THRU AGAIN STA SPADH YES, STORE CHARACTER AND START TRY3. JSB OUTPU INCREMENTING - PUNCH JSB FLOPP - FLOP JSB OUTPU - PUNCH LDA SPADH GET THE UN-FLOPPED CHARACTER CPA M.377 INCREMENTED TO 377? JMP .DONE YES, GET READY TO EXIT INA NO, INCREMENT THE CHARACTER STA SPADH PUT BACK IN HOLDING LOCATION JMP TRY3. AND DO IT AGAIN SPC 1 .DONE NOP JSB LEADR PUNCH A 60 FEED HOLE LEADER JMP TST02,I SPC 1 * SPC 1 OUTPU NOP OUTPUT TO PUNCH ROUTINE STA OUTP1 SAVE THE A AND B STB OUTP2 REGISTER CONTENTS LDB BIT03 SWR CHECK JSB SWRT,I JMP IF SET JSB PUSSR DO START-STOP ROUTINE LDB OUTP1 LDB WITH (AREG) JSB PUDVR AND PUNCH THE CHARPCTER LDA OUTP1 RESTORE THE A AND B LDB OUTP2 REGISTER CONTENTS JMP OUTPU,I * OUTP1 OCT 3 OUTP2 OCT 0 BIT03 OCT 10 * * * * SKP REST8 NOP RESET THE 8 TIME THRU COUNTER LDA ND008 RESET THE STA SPADJ TIMES 8 COUNTER JMP REST8,I AND EXIT SPC 1 * SPC 1 FLOPP NOP FLIP-FLOP AREG BITS 0-7 JSB REST8 INITIALIZE X-8 COUNTER LDA SPADH ERA FLIP FLOP THE LOWER ELB EIGHT AREG BITS ISZ SPADJ THEN JMP *-3 EXIT LDA B PUT IN AREG AND M.377 FOR AND INSTRUCTION JMP FLOPP,I * SPADH BSS 1 SPADJ BSS 1 * * * * * HED READ ALL CHARACTER COMBINATIONS * * * TEST 03 * * TEST 03 STARTS WITH THE IDENTIFICATION * AND INSTRUCTION MESSAGES: * H052 ALL CHARACTER COMBINATIONS - VERIFY * TEAR TAPE AT PUNCH, PLACE IN * READER, PRESS RUN * * USING AN INTERRUPT TYPE DRIVER FOR * READ OPERATION, THE TEST 02 GENERATED * TAPE IS READ AND PROPER PUNCHING * OPERATION IS VERIFIED. * * NO DATA BUFFER IS EMPLOYED BY TEST02 * OR TEST03, ALL THE WORK IN CHANGING * THE DATA PATTERN IS DONE BY THE SUB- * ROUTINE NAMED FLOPP WHICH USES THE * A,B,AND EXTEND REGISTERS. * * IF AN ERROR IS FOUND, THE OPERATOR MAY * CHOOSE TO ABORT THE ROUTINE. THIS CAN BE * DONE BY SETTING BIT1 TO A 1. * * * SKP TST03 EQU * SPC 1 NOP JSB BPRCK RDR AND PUNCH PRESENT? JSB MSGH,I DEF T4MSS LDA RDJSB STA RDRSC,I JSB SYNC RETURN W 1.BYTE STORED @ FIBYT & A-REG CPA M.377 COMPARE EXPECTED W ACTUAL BYTE JMP *+4 COMPARE OK. LDB M.377 LOAD EXPECTED BYTE STB SPADH & STORE IN BUFFER JSB T4ERR REPORT ERROR SPC 1 LDA M.377 HERE4 STA SPADH INITIALIZE THE HOLDING BUFFER JSB INTRD READ ROUTINE CPA SPADH VALID CHARACTER READ? JMP *+2 YES, JUMP OVER ERROR JSB JSB T4ERR NO, REPORT TO TCP JSB FLOPP FLIP-FLOP THE WORD STA SPADX AND STORE IT JSB INTRD READ ROUTINE CPA SPADX VALID READ? JMP *+2 YES, OVER ERROR JSB T4ERR NO, REPORT ERROR LDA SPADH GET UNFLOPPED CHARACTER ADA NEG.1 SUBTRACT A ONE SZA,RSS DECREMENTED TO ZERO? JMP RVRSE YES, REVERSE THE PATTERN NOW AND M.377 NO, STRIP OFF UNNECESSARY BITS JMP HERE4 AND DO AGAIN SPC 1 RVRSE STA SPADH INITIALIZE REVERSE ROUTINE JSB INTRD READ ROUTINE CPA SPADH RIGHT ONE? JMP *+2 RIGHT ON JSB T4ERR NO, REPORT ERROR JSB FLOPP FLIP-FLOP THE WORD STA SPADX SAVE THE FLOPEE JSB INTRD READ ROUTINE CPA SPADX CHARACTER READ=FLOPEE? JMP *+2 YES, JUMP OVER ERROR JSB T4ERR NO, ERROR LDA SPADH GET THE UNFLOPPED CHARACTER INA BUMP CHARACTER CPA M.377 BACK TO STARTING PATTERN? JMP *+2 JMP RVRSE NO, BACK FOR MORE CLF 0 JMP TST03,I SKP T4ERR NOP ERROR REPORT FOR THIS TEST STA TEMP4 SAVE (AREG) LDB BAD. CALLING JSB MKBUF SEQUENCE LDA SPADH AND SETUP TO MAKE LDB GOOD. AN ASCII JSB MKBUF BUFFER FOR REPORT LDB SPADH RESTORE A AND B REGISTER LDA TEMP4 CONTENTS CLF 0 INTRPT SYS OFF JSB ERMS,I REPORT TO TCP DEF ABBGM A=BAD B=GOOD MESSAGE POINTER LDB .BIT1 GIVE UP JSB SWRT,I AFTER ERROR? JMP *+2 YES, DO A P+2 JMP T4ERR,I NO, TRY AGAIN CLF 0 TURN OFF THE INTERRUPT SYSTEM JMP TST03,I AND EXIT TEST 3 * BAD. DEF ARB10 GOOD. DEF BRB10 SPC 1 * SPC 1 INTRD NOP INTERRUPT METHOD READ ROUTINE STF 0 INTERRUPT SYSTEM ON RDVR1 STC RDR,C TELL READER TO GO LDA RDRTC AND START A JSB TMRR,I TIME OUT ROUTINE CLF 0 JSB ERMS,I TIMED OUT, REPORT DEF IRDTO INT. RDR DRIVER TIME OUT JMP INTRD,I SPC 1 * SPC 1 RDDVR NOP INTERRUPTED TO HERE RDVR2 LIA RDR JMP INTRD,I EXIT * RDRTC OCT 1000 RDRSC EQU * NOP RDJSB JSB RDLNK,I * * * * * HED READ TAPE LOOP W/ DELAYS * * * TEST 04 * * TEST 04 USES A CONTINUOUS LOOP FOR * AN INPUT. THE INSTRUCTION MESSAGE * "H054 PLACE LOOP IN READER - ....." * IS OUTPUT, AND THEN THE ROUTINE WAITS * FOR THE OPERATOR TO PRESS RUN * * * WHEN THE OPERATOR STARTS THE TEST, * DELAYS BETWEEN READS CAN BE STARTED * BY SETTING BIT4 TO A 1. * * IN THE EVENT OF AN ERROR, THE TAPE * LOOP CAN BE SYNCHRONIZED TO THE * DATA BUFFER POINTER BY SETTING SWR * BIT2 TO A 1. * * THIS WILL CAUSE THE MESSAGE "H043 * RESYNC" TO BE PRINTED ON THE CONSOLE * AND THE RESYNC OPERATION WILL OCCUR. * THEN SWITCH REGISTER BIT2 SHOULD BE * RESET. * * TO EXIT TEST 04, SWITCH REGISIER * BIT0 MUST BE SET BACK TO 0. * * SKP ORG 4000B TST04 EQU * SPC 1 NOP JSB RSCHK CHECK FOR RDR CONFG. JSB MSGH,I OUTPUT MESSAGE W O HALT DEF INMS1 "PLACE LOOP IN READ, PRESS RUN" LDB BIT.0 B=000001 JSB SWRT,I JMP *+2 BIT0 NOW IS = 1 JMP *-3 STILL=0, WAIT SOME MORE JSB RESYN SET UP FOR SYNC SPC 1 RONLY NOP INITIALIZE POINTERS & COUNTERS: LDA NEG.5 SET BLOCK READ COUNTER TO -5 STA SPADC LDA TMCST SET UP DELAY TIME STA SPADB LDA .BUFR INITIALIZE DATA POINTER TO STA SPADA IN1. LOCATION IN BUFFER JSB SYNC SYNCH.TAPE TO 1. BYTE SPC 1 NOP READS AND VERIFIES DATA LDB .SWR4 CHECK S-REG BIT 4 FOR JSB SWRT,I DESIRED DELAY JSB TIMER LDA FIBYT COMPARE FIBYT READ OF 2. BLOCK CPA SPADA,I AGAINST 1. LOC. IN BUFFER JMP *+2 JSB ERROR ISZ SPADA INCREMENT DATA BUFFER ADDRESS LDA NEG.5 STA SPADC LDA TMCST STA SPADB LDA .BUFE STA SPADA RHERE NOP LDB .SWR4 DELAY JSB SWRT,I DESIRED? JSB TIMER * TIMERS ARE INITIATED BETWEEN JSB READ * READS. IF NOT DESIRED, CPA SPADA,I * NO TIME DELAYS BETWEEN READS JMP *+2 * * JSB ERROR ISZ SPADA * * LDB .END * * CPB SPADA * * JSB SMWHR EXIT WHEN 1. LEADER AFTER BLOCK IS READ JMP RHERE RETURN WHEN READING INSIDE ANY BLOCKS JMP RHERE-2 NOP NOP SKP TIMER NOP IF CALLED, CAUSES A DELAY LDA SPADB,I GET TIMING CONSTANT JSB DELAY AND CAUSE A DELAY JMP TIMER,I THEN EXIT SPC 1 DELAY NOP STA CLOCK * THIS ISZ CLOCK * IS JMP *-1 * THE JMP DELAY,I * CLOCK SPC 1 SMWHR NOP CHECK XTHRU AND TIME TO EXIT ISZ SPADC JMP BSMF LDB BIT.0 CHECK S-REG AFTER EVERY 5 BLOCKS FOR JSB SWRT,I EXIT FORM TEST 04 JMP RONLY JMP TST04,I YES, FINISH SPC 1 BSMF ISZ SPADB NEXT TIMING CONSTANT JSB SYNC TAKE UP THE LEADER ISZ SMWHR SET UP RETURN ADDRESS JMP SMWHR,I AND RETURN TO CALLER SPC 1 * SPC 1 ERROR NOP LDB .BAD POINTER TO BAD BITS 0&1 JSB MKBUF GO MAKE AN ASCII BUFFER LDA SPADA,I LDB .GOOD POINTER TO GOOD BITS JSB MKBUF MAKE THE GOOD MESSAGE BUFFER RDRLA LIA RDR GET THE BAD CHARACTER AGAIN LDB SPADA,I GET THE GOOD CHARACTER JSB ERMS,I OUTPUT THE MESSAGE DEF ABBGM POINTER FOR TCP LDB .SWR2 RESYNC? JSB SWRT,I JMP RSYNC JMP ERROR,I NO, EXIT SPC 1 * SPC 1 RSYNC NOP JSB MSGC,I DEF RSMSG JSB READ GET A CHARACTER SZA ZERO? JMP *-2 JSB READ YES, LOOK FOR NEXT ZERO SZA ZERO? JMP *-2 JMP RONLY * SKP .BAD DEF ARB10 .GOOD DEF BRB10 NEG.5 DEC -5 SPADC BSS 1 .BUFR DEF BUFER .BUFE DEF BUFER+1 SPADA BSS 1 SPADB BSS 1 TMCST DEF DL001 BIT.4 OCT 20 .END DEF BUFER+55 TMEND DEF DL005 CLOCK BSS 1 DL001 DEC -100 DEC -1500 DEC -500 DEC -1000 DL005 DEC -2000 .SWR2 OCT 4 .SWR4 OCT 20 BUFER OCT 377,201,125,252,333,155,066,033 OCT 204,037,340,377,127,201,102,145 OCT 132,347,030,377,132,245,030,102 OCT 044,030,201,245,102,044,030,231 OCT 044,102,201,377,252,125,250,377 OCT 000,347,122,255,211,152,235,052 OCT 367,010,167,030,245,044,333,000 * * * * * * * * HED READ TAPE LOOP - VARIABLE RECORD LENGTHS * * * TEST 05 * * TEST 05 IS SIMILIAR TO TEST 04. THE * SAME TAPE LOOP IS USED FOR READ/VERIFY * AND THE ROUTINES SHARE MANY COMMON * SUBROUTINES. * * THE MAIN DIFFERENCE IS THAT VARIABLE * RECORD LENGTHS ARE USED FOR THIS TEST * ERROR HANDLING ROUTINES AND THE * RESYNC ROUTINE ARE IDENTICAL. * * * * * SKP TST05 EQU * SPC 1 NOP JSB RSCHK CHECK FOR RDR CONFG. JSB MSGH,I DEF INMS1 TAPE LOOP IN RDR LDB BIT.0 GET A JSB SWRT,I BIT0=1 YET JMP *+2 YES, GO ON JMP *-3 NO, WAIT SOME MORE JSB RESYN RESYNC TAPE TO FEEDHOLES JSB SYNC SYNC TAPE TO FIRST BYTE LDA .BUFR INITIALIZE THE DATA STA SPADA BUFFER POINTER LDA TMCST SET UP DELAY TIME STA SPADB SPC 1 EMSM2 LDA NEG16 INITIATE COUNTER FOR TOTAL STA BLK BLOCK LENGTH LDA LPTR. INITIATE LENGTH COUNTER OF STA PTSTR SEGMENT INSIDE BLOCK SPC 1 NBLOK LDA FIBYT BRING BACK READ BYTE LDB PTSTR,I SET UP POINTER TO STRING LENGTH STB EMSMW JSB READR COMPARE AGAINST BUFFER LDB .SWR4 CHECK S-REG TO TEST IF JSB SWRT,I DELAY IS DESIRED JSB TIMER YES, DELAY JSB READ RETURN WITH BYTE IN A-REG ISZ EMSMW INCREMENT VARIABLE REC. LENGTH COUNT JMP *-6 STA FIBYT STORE READ BYTE AWAY ISZ PTSTR INCREMENT LENTH POINTER NOP LDA BIT06 SET UP FOR 100 JSB TMRR,I MILLISECOND DELAY NOP ISZ BLK INCREM. BLOCK LENGTH COUNTER JMP NBLOK DO AGAIN JMP EMSM2 SPC 1 * SPC 1 READR NOP CPA SPADA,I AND COMPARE JMP *+2 GOOD JSB ERROR ERROR ISZ SPADA BUMP BUFFER POINTER LDA .END CHECK FOR CPA SPADA END OF BUFFER JMP RESTR END, RESET JMP READR,I NOT END, EXIT SPC 1 RESTR LDA .BUFR RESET STA SPADA BUFFER POINTER JSB SYNC TAKE UP LDB BIT.0 DONE JSB SWRT,I YES? JMP NBLOK NO, REPEAT JMP TST05,I YES, EXIT TEST SPC 1 * SPC 1 NEG16 DEC -16 BLK OCT 0 EMSMW OCT 0 LPTR. DEF N.PTR PTSTR DEF N.PTR N.PTR DEC -5 DEC -22 DEC -13 DEC -35 DEC -17 DEC -26 DEC -4 DEC -32 DEC -10 DEC -16 DEC -23 DEC -15 DEC -24 DEC -13 DEC -19 N.LST DEC -7 * * * * * * * * HED READ-PUNCH * * * TEST 06 * * INSTRUCTION MESSAGE "H056 TURN PUNCH * ON, PRESS RUN. TO BEGIN READ, SET * BIT0 TO A 1, TO TERMINATE, SET BIT0 * TO 0" IS PRINTED ON THE CONSOLE, AND * THE ROUTINE HALTS THE COMPUTER. * * WHEN RUN IS PRESSED, THE SWITCH REGISTER * IS CHECKED TO INSURE BIT0 IS A 0. THIS IS * DONE TO PREVENT THE READ OPERATION FROM * STARTING BEFORE THE OPERATOR CAN PLACE * THE PUNCHED TAPE IN THE READER * * WHEN THE OPERATOR CHANGES SWITCH * REGISTER BIT 0 TO A 1, THE * PUNCH THEN BEGINS AN ALTERNATE SIO AND * INTERRUPT PUNCH OPERATION. THE READER * OPERATION IS SIO. * * THIS OPERATION WILL CONTINUE UNTIL BIT0 * IS RESET. THEN THE PUNCH OPERATION * CONTINUES UNTIL THE ENTIRE BUFFER IS * OUTPUT, THE MESSAGE "H057 TO COMPLETE, * TEAR TAPE - PRESS RUN" IS OUTPUT ON THE * CONSOLE, AND THE COMPUTER HALTS. THE * OPERATOR MAY THEN COMPLETE THIS ROUTINE * BY FOLLOWING THE ABOVE INSTRUCTIONS. * * * * * * * SKP TST06 EQU * SPC 1 NOP SPC 1 JSB BPRCK MAKE SURE OF PROPER CONF. JSB MSGH,I GIVE THE OPERATING DEF POMSG INSTRUCTIONS... LDA PUJSB INITIALIZE THE STA T5PSC,I PUNCH TRAP CELL CLA NOP THE STA T5RSC,I READER TRAP CELL NOP DEBUG LDB BIT.0 BIT 0 MUST JSB SWRT,I BE A ZERO OR ELSE JSB T5IEH TELL OPERATOR TO CLEAR BIT0 SPC 1 S0JMP JSB RESET JSB LEADR JSB PNCH1 OUTPUT ONE BUFFER LDB BIT.0 BEGIN READ? JSB SWRT,I IS SO, DO JMP *+2 ARROW JMP S0JMP IF NOT, TRY AGAIN SPC 1 ARROW JSB LEADR LDB SPAD1,I SET UP FOR INTERRUPT ISZ SPAD1 PUMTB OTB PUNCH RTSTR STF 0 AND GO INTO INTERRUPT INTPU STC PUNCH,C MODE OF PUNCHING NOP JSB SYNC TAKE UP THE LEADER JSB READ1 AND BEGIN READ OPERATION T5RDR CLC RDR LDA D1000 FINISH ROUTINE JSB TMRR,I OR ELSE NOP CLF 0 TURN OFF INTERRUPT SYSTEM JSB ERMS,I AND REPORT THAT THE PUNCH DEF P.TOM ROUTINE DID NOT FINISH. NOP DEBUG JMP TST06,I EXIT * * SKP