| 1 | SECT PCHAR \r |
| 2 | JA #ST / JUMP IN\r |
| 3 | TEXT +PCHAR +\r |
| 4 | \r |
| 5 | SECT8 MUH\r |
| 6 | FNOP\r |
| 7 | TEXT +PCHAR8+\r |
| 8 | \r |
| 9 | EXTERN #RETRN\r |
| 10 | \r |
| 11 | \r |
| 12 | / PDP-8 SUBROUTINE!\r |
| 13 | \r |
| 14 | TCF=6042 / CLEAR TELEPRINTER FLAG\r |
| 15 | TOCHR, 4 / LOCATION OF TTY STATUS\r |
| 16 | / POSITIVE=CHARACTER IN QUEUE\r |
| 17 | / NEGATIVE=BUSY\r |
| 18 | / ZERO=IDLE\r |
| 19 | \r |
| 20 | PC8, CLA CLL\r |
| 21 | \r |
| 22 | RDF\r |
| 23 | DCA DFIELD / SAVE DATA FIELD\r |
| 24 | \r |
| 25 | CDF 0 \r |
| 26 | BLOOP, CLA CLL\r |
| 27 | TAD% TOCHR / TELEPRINTER STATUS\r |
| 28 | SZA\r |
| 29 | JMP BLOOP \r |
| 30 | CLA CLL CML RAR\r |
| 31 | DCA% TOCHR / SET BUSY\r |
| 32 | \r |
| 33 | TAD DFIELD / DATA FIELD RESTORATION\r |
| 34 | TAD CDFXX\r |
| 35 | DCA .+1\r |
| 36 | CDF 0 / WILL BE OVERWRITTEN\r |
| 37 | \r |
| 38 | TAD CHAR2 / LOAD CHARACTER TO PRINT\r |
| 39 | \r |
| 40 | TLS / OUT!\r |
| 41 | \r |
| 42 | / TSF\r |
| 43 | / JMP .-1 / WAIT TO BE DONE WITH CHARACTER\r |
| 44 | \r |
| 45 | \r |
| 46 | CIF CDF 0\r |
| 47 | JMP% RETURN+1\r |
| 48 | \r |
| 49 | DFIELD, 0\r |
| 50 | CDFXX, CDF 0 / INSTRUCTION TEMPLATE\r |
| 51 | RETURN, ADDR #RETRN\r |
| 52 | CHAR, 1234\r |
| 53 | CHAR1, 4321\r |
| 54 | CHAR2, 1234\r |
| 55 | 0;0;0;0;0;0;0;0\r |
| 56 | \r |
| 57 | \r |
| 58 | /FPP code here; using the rest of the SECT8 page.\r |
| 59 | \r |
| 60 | \r |
| 61 | \r |
| 62 | / **************************************************************\r |
| 63 | \r |
| 64 | BASE 0\r |
| 65 | \r |
| 66 | / PCHAR(CHAR)\r |
| 67 | \r |
| 68 | \r |
| 69 | #PCBAS, 7007\r |
| 70 | 7017\r |
| 71 | 7027\r |
| 72 | B1, 7107\r |
| 73 | 7117\r |
| 74 | 7127\r |
| 75 | B2, 7207\r |
| 76 | 7217\r |
| 77 | 7227\r |
| 78 | B3, 7307\r |
| 79 | 7317\r |
| 80 | 7327\r |
| 81 | B4, 7407\r |
| 82 | 7417\r |
| 83 | 7427\r |
| 84 | B5, 7507\r |
| 85 | 7517\r |
| 86 | 7527\r |
| 87 | PTR,\r |
| 88 | B6, 7607\r |
| 89 | 7617\r |
| 90 | 7627\r |
| 91 | ARGP1,\r |
| 92 | B7, 7607\r |
| 93 | 7617\r |
| 94 | 7627\r |
| 95 | \r |
| 96 | XR, ORG .+30\r |
| 97 | \r |
| 98 | \r |
| 99 | #ST, / START OF FPP ROUTINE\r |
| 100 | STARTD / 24 BIT DATA ONLY\r |
| 101 | \r |
| 102 | 0210 /FLDA 30 / GET RETURN JA\r |
| 103 | FSTA #GOBAK / PUT TO RETURN LOCATION\r |
| 104 | \r |
| 105 | 0200 /FLDA 0 / JA AROUND ARGUMENTS\r |
| 106 | \r |
| 107 | BASE #PCBAS\r |
| 108 | SETX XR / USE OWN INDEX REGISTERS\r |
| 109 | SETB #PCBAS / OUR BASE\r |
| 110 | \r |
| 111 | FSTA #PCBAS / TO POINTER\r |
| 112 | \r |
| 113 | LDX 0,1 / 0 TO INDEX REG 1\r |
| 114 | \r |
| 115 | FLDA% #PCBAS,1+ / LOAD FROM #PCBAS+INDEX1 \r |
| 116 | FSTA ARGP1 / ADDRESS OF ARGUMENT 1\r |
| 117 | \r |
| 118 | STARTF \r |
| 119 | FLDA% ARGP1 / NOW WE HAVE ARGUMENT 1\r |
| 120 | ALN 0 / MAKE INTEGER OF IT\r |
| 121 | FSTA CHAR\r |
| 122 | \r |
| 123 | TRAP3 PC8\r |
| 124 | \r |
| 125 | STARTF / BACK TO 3-WORD MODE\r |
| 126 | JA #GOBAK / RETURN JUMP\r |
| 127 | #GOBAK, 0;0 / RETURN JUMP TARGET \r |
| 128 | \r |
| 129 | \r |
| 130 | \r |
| 131 | \r |
| 132 | END\r |