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