FIELD1 PCHAR JA #ST / JUMP TO FPP ROUTINE'S START TEXT +PCHAR + EXTERN #RETRN / NEEDED FOR TRAP3 RETURN EXTERN ONQI / FIDDLE SOMETHING INTO SKIP CHAIN EXTERN #DISMS / DISMISS JUMP LIST EXTERN #HANG / HANG ROUTINE TOCHR=4 / LOCATION OF TTY STATUS WORD / POSITIVE=CHARACTER IN QUEUE / NEGATIVE=BUSY / ZERO=IDLE TCF=6042 / CLEAR TELEPRINTER FLAG TSF=6041 / TEST TELEPRINTER FLAG / ************************************************************** / PDP-8 CODE PC8, CLA CLL CDF 0 SWAIT, CLA CLL / WAIT FOR SYSTEM TO BE DONE WITH TTY TAD% PTOCHR / TELEPRINTER STATUS SZA JMP SWAIT / KEEP ON WAITING CDF 10 / BACK TO DATA FIELD 1 TAD FIRST / FIRST CALL? SZA JMP NOTFST ISZ FIRST JMS% PONQI+1 / REGISTER OUR ROUTINE TO SKIP CHAIN TSF / SKIP TO BE USED ADDR HANDLE / POINTER TO OUR HANDLER TAD DISMIS+1 / SET UP TO CALL HANG DCA HLOC NOTFST, IOF / THIS SHOULD BE DONE WITHOUT INTERRUPT! TAD CHAR / LOAD CHARACTER TO PRINT TLS / AND PRINT IT ISZ ACTIVE / ENABLE OUR INT HANDLER CIF 0 / #HANG IS IN FIELD 0 JMS% HANG+1 HLOC, 0 / LOCATION WHERE #HANG COUPLES INTO ION / INTERRUPT BACK ON CIF CDF 0 JMP% RET+1 / GO HOME TO FPP LAND /*************** HANDLE, 0 / OUR INTERRUPT HANDLER, CALLED FROM FIELD 1 CLA CLL TAD ACTIVE SNA / ACTIVE FLAG? JMP% HANDLE / NOT ACTIVE, LEAVE INTERRUPT UNPROCESSED CLA DCA ACTIVE / NOW INACTIVE TCF / CLEAR TTY FLAG CIF CDF 0 JMP% DISMIS+1 / INT PROCESSED /*************** RET, ADDR #RETRN PONQI, ADDR ONQI / PUT SOMETHING ONTO SKIP CHAIN HANG, ADDR #HANG DISMIS, ADDR #DISMS PTOCHR, TOCHR FIRST, 0 / FLAG FOR INITAL SETUP ACTIVE, 0 / FLAG TO INACTIVATE INT HANDLER #CHAR, 0;0 / HERE GOES THE 3-WORD FROM FPP CHAR, 0 / THAT'S WHAT WE PRINT / ************************************************************** / FPP-12 CODE BASE 0 / STAY ON THE CALLER'S BASE #PCBAS, ORG .+3 / OUR BASE PAGE #PTR, ORG .+3 / POINTER #ARGP1, ORG .+3 #XR, ORG .+10 / INDEX REGISTERS #ST, / START OF FPP ROUTINE STARTD / 24 BIT DATA ONLY 0210 /FLDA 30 / GET RETURN JA FSTA# #GOBAK / PUT TO RETURN LOCATION 0200 /FLDA 0 / JA AROUND ARGUMENTS BASE #PCBAS SETX #XR / USE OWN INDEX REGISTERS SETB #PCBAS / OUR BASE FSTA #PTR / TO POINTER LDX 0,1 / 0 TO INDEX REG 1 FLDA% #PTR,1+ / LOAD FROM (#PTR)+INDEX1 FSTA #ARGP1 / FIRST ARGUMENT POINTER STARTF / BACK TO FLOATING POINT MODE FLDA% #ARGP1 / LOAD THE ACTUAL ARGUMENT TO FAC. ALN 0 / MAKE INTEGER OF IT FSTA CHAR / STORE INTO PDP-8 ROUTINE'S BUFFER TRAP3 PC8 / FIRE UP PDP-8 STARTF / BACK TO 3-WORD MODE (STILL NEEDED?) #GOBAK, 0;0 / RETURN JUMP (FILLED IN ABOVE) END