/ M4 DRIVE TEST / LAST EDIT: 31-JUL-1987 16:00:00 CJL / DEFINITIONS. INIOT= 72 /INPUT DEVICE CODE INCLR= INIOT^10+6002 /CLEAR INPUT FLAG, AC AND PULSE ACKNOWLEDGE INCLR0= INIOT^10+6000 /CLEAR INPUT FLAG ONLY **** PDP-8/E ONLY **** INIE= INIOT^10+6005 /SET/CLEAR INTERRUPT ENABLE PER AC[11] INRAW= INIOT^10+6004 /OR INPUT, DO NOT CLEAR FLAG OR PULSE ACKNOWLEDGE INREAD= INIOT^10+6006 /READ INPUT, CLEAR FLAG AND PULSE ACKNOWLEDGE INSKP= INIOT^10+6001 /SKIP ON INPUT FLAG OUTIOT= 73 /OUTPUT DEVICE CODE OUTCLR= OUTIOT^10+6002 /CLEAR OUTPUT FLAG OUTLOD= OUTIOT^10+6006 /LOAD OUTPUT BUFFER, CLEAR FLAG OUTRAW= OUTIOT^10+6004 /LOAD OUTPUT BUFFER, DO NOT CLEAR FLAG OUTSET= OUTIOT^10+6000 /SET OUTPUT FLAG **** PDP-8/E ONLY **** OUTSK= OUTIOT^10+6005 /SKIP ON (M8342 INTERRUPT ENABLE) .AND. /(INPUT FLAG .OR. OUTPUT FLAG) OUTSKP= OUTIOT^10+6001 /SKIP ON OUTPUT FLAG INIT, CAF /CLEAN UP INCLR /CLEAR INPUT FLAG ALSO PULSING ACKNOWLEDGE ISZ 0 /WASTE JMP .-1 /SOME TIME ISZ 0 /WASTE JMP .-1 /SOME TIME ISZ 0 /WASTE JMP .-1 /SOME TIME ISZ 0 /WASTE JMP .-1 /SOME TIME ISZ 0 /WASTE JMP .-1 /SOME TIME ISZ 0 /WASTE JMP .-1 /SOME TIME ISZ 0 /WASTE JMP .-1 /SOME TIME ISZ 0 /WASTE JMP .-1 /SOME TIME ISZ 0 /WASTE JMP .-1 /SOME TIME ISZ 0 /WASTE JMP .-1 /SOME TIME OUTSET /SET OUTPUT FLAG NOW CLA /CLEAN UP START, TAD ("P&37) /GET JMS SEND /SEND IT TAD ("4&177) /GET REWIND CODE JMS SEND /SEND IT JMS REC /GET FIRST STATUS BYTE DCA STAT1 /STASH IT JMS REC /GET SECOND STATUS BYTE DCA STAT2 /STASH IT TAD ("P&37) /GET JMS SEND /SEND IT TAD ("F&177) /GET READ CODE JMS SEND /SEND IT JMS REC /GET FIRST STATUS BYTE DCA STAT1 /STASH IT JMS REC /GET SECOND STATUS BYTE DCA STAT2 /STASH IT JMS REC /GET HIGH-ORDER COUNT AND (17) /JUST HIGH-ORDER WE CAN DEAL WITH CLL RTR;RTR;RAR /MOVE UP 8 BITS DCA TEMP /STASH THEM JMS REC /GET LOW-ORDER COUNT AND (377) /JUST 8 BITS TAD TEMP /ADD ON HIGH-ORDER COUNT CIA /INVERT FOR COUNTING DCA TEMP /STASH THE COUNT ISZ 0 JMP .-1 ISZ 0 JMP .-1 JMS RECKLU ISZ TEMP STA /0-1 DCA 10 DATLUP, JMS REC /GET A BYTE DCA DATA1 /SAVE IT IFZERO 1 < JMS REC /GET A BYTE DCA DATA2 /STORE IT JMS REC /GET A BYTE DCA DATA3 /STORE IT CDF 40 /GOTO DATA FIELD TAD DATA3 /GET THIRD BYTE AND (360) /ISOLATE CLL RTL;RTL /MOVE UP TAD DATA1 /ADD ON FIRST BYTE DCA I 10 /STORE A BYTE TAD DATA3 /GET IT AGAIN AND (17) /ISOLATE CLL RTR;RTR;RAR /MOVE UP TAD DATA2 /ADD ON SECOND BYTE DCA I 10 /STORE A WORD ISZ TEMP /SHOULD NOT SKIP SKP HLT ISZ TEMP /SHOULD NOT SKIP SKP HLT > ISZ TEMP /DONE ALL YET? JMP DATLUP /NO, KEEP GOING CDF 00 /BACK TO OUR FIELD TAD STAT2 /GET SECOND STATUS MQL /DISPLAY IT TAD STAT1 /GET FIRST STATUS KSF /WAIT JMP .-1 /FOR OPERATOR KRB CLA JMP I (7600) /GOODBYE STAT1, .-. /FIRST STATUS BYTE STAT2, .-. /SECOND STATUS BYTE TEMP, .-. /TEMPORARY DATA1, 0 DATA2, 0 DATA3, 0 / RECEIVE ROUTINE. REC, .-. /RECEIVE ROUTINE INSKP /FLAG UP? JMP .-1 /NO, WAIT FOR IT INREAD /YES, GET THE CHARACTER AND CLEAR THE FLAG CMA /INVERT THE DATA AND (377) /JUST EIGHT BITS JMP I REC /RETURN / KLUDGED RECEIVE ROUTINE. RECKLU, .-. /KLUDGED RECEIVE ROUTINE INREAD /JUST GET THE DATA CMA /INVERT IT AND (377) /JUST EIGHT BITS JMP I RECKLU /RETURN / SEND ROUTINE. SEND, .-. /SEND ROUTINE OUTSKP /FLAG UP? JMP .-1 /NO, WAIT FOR IT OUTLOD /YES, SEND THE VALUE NOW CLA /CLEAN UP JMP I SEND /RETURN $ /THAT'S ALL FOLK!