| 1 | FIELD1 PCHAR\r |
| 2 | JA #ST / JUMP TO FPP ROUTINE'S START\r |
| 3 | TEXT +PCHAR +\r |
| 4 | \r |
| 5 | EXTERN #RETRN / NEEDED FOR TRAP3 RETURN\r |
| 6 | EXTERN ONQI / FIDDLE SOMETHING INTO SKIP CHAIN\r |
| 7 | EXTERN #DISMS / DISMISS JUMP LIST\r |
| 8 | EXTERN #HANG / HANG ROUTINE\r |
| 9 | \r |
| 10 | TOCHR=4 / LOCATION OF TTY STATUS WORD\r |
| 11 | / POSITIVE=CHARACTER IN QUEUE\r |
| 12 | / NEGATIVE=BUSY\r |
| 13 | / ZERO=IDLE\r |
| 14 | \r |
| 15 | TCF=6042 / CLEAR TELEPRINTER FLAG\r |
| 16 | TSF=6041 / TEST TELEPRINTER FLAG\r |
| 17 | \r |
| 18 | / **************************************************************\r |
| 19 | / PDP-8 CODE\r |
| 20 | \r |
| 21 | PC8, CLA CLL\r |
| 22 | \r |
| 23 | CDF 0 \r |
| 24 | SWAIT, CLA CLL / WAIT FOR SYSTEM TO BE DONE WITH TTY\r |
| 25 | TAD% PTOCHR / TELEPRINTER STATUS\r |
| 26 | SZA\r |
| 27 | JMP SWAIT / KEEP ON WAITING\r |
| 28 | CDF 10 / BACK TO DATA FIELD 1\r |
| 29 | \r |
| 30 | TAD FIRST / FIRST CALL?\r |
| 31 | SZA \r |
| 32 | JMP NOTFST\r |
| 33 | \r |
| 34 | ISZ FIRST\r |
| 35 | \r |
| 36 | JMS% PONQI+1 / REGISTER OUR ROUTINE TO SKIP CHAIN\r |
| 37 | TSF / SKIP TO BE USED\r |
| 38 | ADDR HANDLE / POINTER TO OUR HANDLER \r |
| 39 | \r |
| 40 | TAD DISMIS+1 / SET UP TO CALL HANG\r |
| 41 | DCA HLOC\r |
| 42 | \r |
| 43 | \r |
| 44 | NOTFST, IOF / THIS SHOULD BE DONE WITHOUT INTERRUPT!\r |
| 45 | \r |
| 46 | TAD CHAR / LOAD CHARACTER TO PRINT\r |
| 47 | TLS / AND PRINT IT\r |
| 48 | \r |
| 49 | ISZ ACTIVE / ENABLE OUR INT HANDLER\r |
| 50 | \r |
| 51 | CIF 0 / #HANG IS IN FIELD 0\r |
| 52 | JMS% HANG+1\r |
| 53 | HLOC, 0 / LOCATION WHERE #HANG COUPLES INTO\r |
| 54 | \r |
| 55 | ION / INTERRUPT BACK ON\r |
| 56 | \r |
| 57 | CIF CDF 0\r |
| 58 | JMP% RET+1 / GO HOME TO FPP LAND\r |
| 59 | \r |
| 60 | /***************\r |
| 61 | \r |
| 62 | HANDLE, 0 / OUR INTERRUPT HANDLER, CALLED FROM FIELD 1\r |
| 63 | CLA CLL\r |
| 64 | TAD ACTIVE\r |
| 65 | SNA / ACTIVE FLAG?\r |
| 66 | JMP% HANDLE / NOT ACTIVE, LEAVE INTERRUPT UNPROCESSED\r |
| 67 | CLA\r |
| 68 | DCA ACTIVE / NOW INACTIVE\r |
| 69 | TCF / CLEAR TTY FLAG\r |
| 70 | CIF CDF 0\r |
| 71 | JMP% DISMIS+1 / INT PROCESSED\r |
| 72 | \r |
| 73 | /***************\r |
| 74 | \r |
| 75 | \r |
| 76 | RET, ADDR #RETRN\r |
| 77 | PONQI, ADDR ONQI / PUT SOMETHING ONTO SKIP CHAIN\r |
| 78 | HANG, ADDR #HANG\r |
| 79 | DISMIS, ADDR #DISMS\r |
| 80 | \r |
| 81 | PTOCHR, TOCHR\r |
| 82 | FIRST, 0 / FLAG FOR INITAL SETUP\r |
| 83 | ACTIVE, 0 / FLAG TO INACTIVATE INT HANDLER\r |
| 84 | #CHAR, 0;0 / HERE GOES THE 3-WORD FROM FPP\r |
| 85 | CHAR, 0 / THAT'S WHAT WE PRINT\r |
| 86 | \r |
| 87 | \r |
| 88 | \r |
| 89 | / **************************************************************\r |
| 90 | / FPP-12 CODE\r |
| 91 | \r |
| 92 | BASE 0 / STAY ON THE CALLER'S BASE\r |
| 93 | #PCBAS, ORG .+3 / OUR BASE PAGE \r |
| 94 | #PTR, ORG .+3 / POINTER\r |
| 95 | #ARGP1, ORG .+3\r |
| 96 | #XR, ORG .+10 / INDEX REGISTERS\r |
| 97 | \r |
| 98 | #ST, / START OF FPP ROUTINE\r |
| 99 | STARTD / 24 BIT DATA ONLY\r |
| 100 | \r |
| 101 | 0210 /FLDA 30 / GET RETURN JA\r |
| 102 | FSTA# #GOBAK / PUT TO RETURN LOCATION\r |
| 103 | \r |
| 104 | 0200 /FLDA 0 / JA AROUND ARGUMENTS\r |
| 105 | \r |
| 106 | BASE #PCBAS\r |
| 107 | SETX #XR / USE OWN INDEX REGISTERS\r |
| 108 | SETB #PCBAS / OUR BASE\r |
| 109 | \r |
| 110 | FSTA #PTR / TO POINTER\r |
| 111 | \r |
| 112 | LDX 0,1 / 0 TO INDEX REG 1\r |
| 113 | \r |
| 114 | FLDA% #PTR,1+ / LOAD FROM (#PTR)+INDEX1 \r |
| 115 | FSTA #ARGP1 / FIRST ARGUMENT POINTER\r |
| 116 | \r |
| 117 | STARTF / BACK TO FLOATING POINT MODE\r |
| 118 | FLDA% #ARGP1 / LOAD THE ACTUAL ARGUMENT TO FAC.\r |
| 119 | ALN 0 / MAKE INTEGER OF IT\r |
| 120 | FSTA CHAR / STORE INTO PDP-8 ROUTINE'S BUFFER\r |
| 121 | \r |
| 122 | TRAP3 PC8 / FIRE UP PDP-8\r |
| 123 | \r |
| 124 | STARTF / BACK TO 3-WORD MODE (STILL NEEDED?)\r |
| 125 | #GOBAK, 0;0 / RETURN JUMP (FILLED IN ABOVE) \r |
| 126 | \r |
| 127 | END\r |