ASM1130 CROSS ASSEMBLER V1.22 -- V2M12 -- Sun Nov 1 19:25:11 2020
Source File: \v1plotx.asm
PLOTX, FORTRAN PLOTTING I/O SUBR
2 | *************************************************** V1L00020
3 | *STATUS - VERSION 2, MODIFICATION 7 * V1L00030
4 | *SUBROUTINE REWRITTEN IN MOD 7 * V1L00040
5 | * * V1L00050
6 | *SUBROUTINE NAME - * V1L00060
7 | * FULL NAME - IBM 1627 PLOTTER I/O SUBROUTINE * V1L00070
8 | * FOR USE INDIRECTLY FROM FORTRAN * V1L00080
9 | * CODE NAME - PLOTX * V1L00090
10 | * * V1L00100
11 | *PURPOSE - * V1L00110
12 | * THIS ISS SUBROUTINE DRIVES THE IBM 1627 * V1L00120
13 | * PLOTTER. * V1L00130
14 | * * V1L00140
15 | *METHOD - * V1L00150
16 | * PLOTX MAINTAINS A CIRCULAR BUFFER TO * V1L00160
17 | * ACCUMULATE PLOTTER COMMANDS. PIN IS THE * V1L00170
18 | * ADDRESS OF THE NEXT WORD TO RECEIVE A COMMAND * V1L00180
19 | * AND POUT IS THE ADDRESS OF THE NEXT COMMAND * V1L00190
20 | * TO BE OUTPUT TO THE PLOTTER. * V1L00200
21 | * IF PIN = POUT, THEN THE BUFFER IS EMPTY. * V1L00210
22 | * ALTHOUGH ALL WORDS OF THE BUFFER ARE USED, AT * V1L00220
23 | * LEAST 1 WORD MUST BE UNUSED AT ANY TIME (OR * V1L00230
24 | * ELSE THE BUFFER WOULD APPEAR TO BE EMPTY WHEN * V1L00240
25 | * PIN CIRCLES AROUND AND CATCHES UP WITH POUT). * V1L00250
26 | * THE MAINLINE AND INTERRUPT PORTIONS OF THIS * V1L00260
27 | * SUBROUTINE WORK ASYNCHRONOUSLY. IF ALL * V1L00270
28 | * PREVIOUS ACTION IN THE INTERRUPT PORTION HAS * V1L00280
29 | * CEASED, THEN THE MAINLINE ENTERS THE INTERRUPT* V1L00290
30 | * PORTION AND INITIATES THE FIRST NEW PLOTTER * V1L00300
31 | * COMMAND. * V1L00310
32 | * * V1L00320
33 | *CAPABILITIES AND LIMITATIONS - * V1L00330
34 | * VALID ARGUMENTS - * V1L00340
35 | * ANY NUMBER FROM 0 TO 9 IN BITS 12-15. * V1L00350
36 | * ANY OTHER NUMBER IS COMPLETELY IGNORED. * V1L00360
37 | * * V1L00370
38 | *SPECIAL FEATURES - * V1L00380
39 | * INTERNAL CIRCULAR BUFFER THAT SAVES DATA FROM * V1L00390
40 | * MANY CALLS AND SO SMOOTHS OPERATION OF PLOTTER* V1L00400
41 | * * V1L00410
42 | *EXTERNAL REFERENCES - * V1L00420
43 | * $IOCT * V1L00430
44 | * $PRET * V1L00440
45 | * $PST3 * V1L00450
46 | * * V1L00460
47 | *ADDITIONAL INFORMATION - * V1L00470
48 | * ERROR PROCEDURES - * V1L00480
49 | * BRANCH TO $PRET OR $PST3 IF PLOTTER * V1L00490
50 | * NOT READY * V1L00500
51 | * CALLING SEQUENCE - * V1L00510
52 | * LIBF PLOTX SUBROUTINE CALL * V1L00520
53 | * DC /XXXD D IS 0 TO 9, X IS IGNORED * V1L00530
54 | *************************************************** V1L00540
55 | * EJCT BLK REMOVED V1L00550
56 | LIBR V1L00560
0000 57 | 1130 ISS 07 PLOTX 3 V1L00570
0028 58 | $PRET EQU /0028 PRE-OP ERROR TRAP V1L00580
0032 59 | $IOCT EQU /0032 MONITOR I/O COUNTER V1L00590
0089 60 | $PST3 EQU /0089 LEVEL 3 ERROR TRAP V1L00600
61 | * V1L00610
0000 6911 62 | PLOTX STX 1 XR1+1 LIBF ENTRANCE V1L00620
0001 6580 0000 63 | LDX I1 *-* LIBF+1 INTO XR1 V1L00630
0003 7002 64 | MDX START V1L00640
0004 0000 65 | INT DC *-* INTERRUPT ENTRANCE V1L00650
0005 7029 66 | MDX INTR BRANCH TO HANDLE INTERRUPT V1L00660
67 | * V1L00670
68 | * V1L00680
69 | *************************************************** V1L00690
70 | * V1L00700
71 | * PERFORM HOUSEKEEPING AND ACCEPT V1L00710
72 | * INPUT PARAMETER V1L00720
73 | * V1L00730
74 | *************************************************** V1L00740
75 | * V1L00750
76 | * V1L00760
0006 280C 77 | START STS XR1+2 SAVE STATUS V1L00770
0007 D054 78 | STO SAVA SAVE ACCUMULATOR V1L00780
79 | * V1L00790
0008 7101 80 | MDX 1 1 V1L00800
0009 690B 81 | STX 1 RETML+1 STORE RETURN ADDRESS V1L00810
82 | * V1L00820
000A C1FF 83 | LD 1 -1 LOAD INPUT PARAMETER V1L00830
000B E058 84 | AND H000F IGNORE 1ST 12 BITS V1L00840
85 | * V1L00850
000C D051 86 | STO PARA STORE PARAMETER V1L00860
000D 9055 87 | S H0009 IS IT LEGAL V1L00870
000E 4C08 0016R 88 | BSC L PUT,+ YES, BRANCH V1L00880
89 | * V1L00890
90 | * V1L00900
91 | *************************************************** V1L00910
92 | * V1L00920
93 | * EXIT ROUTINE V1L00930
94 | * V1L00940
95 | *************************************************** V1L00950
96 | * V1L00960
97 | * V1L00970
0010 C04B 98 | EXITM LD SAVA RESTORE ACCUMULATOR V1L00980
0011 6500 0000 99 | XR1 LDX L1 *-* RESTORE XR1 V1L00990
0013 2000 100 | LDS 0 RESTORE STATUS V1L01000
0014 4C00 0000 101 | RETML BSC L *-* RETURN TO CALLER V1L01010
102 | * V1L01020
103 | * V1L01030
104 | *************************************************** V1L01040
105 | * V1L01050
106 | * MAINLINE OF PLOTX V1L01060
107 | * V1L01070
108 | *************************************************** V1L01080
109 | * V1L01090
110 | * V1L01100
0016 C052 111 | PUT LD PIN SET PIN TEMPORARY V1L01110
0017 804A 112 | A H0001 *TO V1L01120
0018 D04E 113 | STO PINT *PIN + 1 V1L01130
114 | * V1L01140
0019 9051 115 | S PEND IS PINT BEYOND END OF V1L01150
001A 4C08 001ER 116 | BSC L FULL,+ *BUFFER, BR IF NOT V1L01160
117 | * V1L01170
001C C04B 118 | LD PSTRT SET PINT TO ADDR OF V1L01180
001D D049 119 | STO PINT *START OF I/O BUFFER V1L01190
120 | * V1L01200
001E C048 121 | FULL LD PINT IS CIRCULAR BUFFER V1L01210
001F 904A 122 | S POUT *ALREADY FULL V1L01220
0020 4C18 001ER 123 | BSC L FULL,+- YES, BR TO WAIT FOR ROOM V1L01230
124 | * V1L01240
0022 C03B 125 | LD PARA GET 1627 PLOTTER V1L01250
0023 8053 126 | A TABLE *CONTROL WORD V1L01260
0024 D001 127 | STO *+1 *CORRESPONDING TO V1L01270
0025 C400 0000 128 | LD L *-* *ARGUMENT DIGIT V1L01280
0027 D480 0069R 129 | STO I PIN STORE IN BUFFER AT PIN ADDR V1L01290
130 | * V1L01300
0029 C03D 131 | LD PINT ADVACE PIN ADDR TO SHOW NEW V1L01310
002A D03E 132 | STO PIN *DATA NOW IN BUFFER V1L01320
133 | * V1L01330
002B 7400 0060R 134 | MDX L0 BUSY,0 IS THIS SUBROUTINE BUSY V1L01340
002D 70E2 135 | MDX EXITM YES, BR TO RETURN V1L01350
002E 700B 136 | MDX SCAN NO, BR TO INITIATE I/O V1L01360
137 | * V1L01370
138 | * V1L01380
139 | *************************************************** V1L01390
140 | * V1L01400
141 | * INTERRUPT SERVICING ROUTINE V1L01410
142 | * V1L01420
143 | *************************************************** V1L01430
144 | * V1L01440
145 | * V1L01450
002F 1810 146 | INTR SRA 16 RESET THIS SUBROUTINE BUSY V1L01460
0030 D02F 147 | STO BUSY *INDICATOR TO 0 V1L01470
148 | * V1L01480
0031 082C 149 | XIO SENSR-1 SENSE PLOTTER DSW RESET V1L01490
0032 D033 150 | STO INTER SET INTERRUPT ENTRY INDR V1L01500
151 | * V1L01510
0033 74FF 0032 152 | MDX L $IOCT,-1 DECREMENT MONITOR I/O CNT V1L01520
0035 1000 153 | NOP MAY SKIP V1L01530
154 | * V1L01540
0036 C033 155 | LD POUT IS BUFFER V1L01550
0037 9031 156 | S PIN *EMPTY V1L01560
0038 4C18 004AR 157 | BSC L CONT,+- YES, BR TO RETURN V1L01570
158 | * V1L01580
003A C02F 159 | SCAN LD POUT SAVE OLD POUT ADDR WHICH V1L01590
003B D024 160 | STO WRITE *ALSO SETS SUBR BUSY ON V1L01600
161 | * V1L01610
003C 8025 162 | A H0001 INCREMENT POUT ADDR V1L01620
003D D02C 163 | STO POUT *BY 1 V1L01630
164 | * V1L01640
003E 902C 165 | S PEND POUT ADDY BEYOND END BUFFER V1L01650
003F 4C08 0043R 166 | BSC L LOOPS,+ NO, BR TO CONTINUE V1L01660
167 | * V1L01670
0041 C026 168 | LD PSTRT RESET POUT ADDR TO START V1L01680
0042 D027 169 | STO POUT *OF CIRCULAR BUFFER V1L01690
170 | * V1L01700
0043 0818 171 | LOOPS XIO SENSE-1 SENSE PLOTTER DSW V1L01710
0044 4C04 0051R 172 | BSC L NTRDY,E BR IF NOT READY V1L01720
173 | * V1L01730
0046 7401 0032 174 | MDX L0 $IOCT,1 INCREMENT MONITOR I/O CNT V1L01740
0048 1000 175 | NOP MAY SKIP IF VALUE INVALID V1L01750
176 | * V1L01760
0049 0816 177 | XIO WRITE EXECUTE PLOTTING COMMAND V1L01770
178 | * V1L01780
004A C01B 179 | CONT LD INTER IS THIS INTERRUPT ENTRY V1L01790
004B 4C18 0010R 180 | BSC L EXITM,+- NO, BR TO MAINLINE RETURN V1L01800
181 | * V1L01810
004D 1810 182 | SRA 16 RESET INTERRUPT ENTRY V1L01820
004E D017 183 | STO INTER *INDICATOR V1L01830
184 | * V1L01840
004F 4C80 0004R 185 | BSC I INT RETURN FROM INTERRUPT V1L01850
186 | * V1L01860
0051 C014 187 | NTRDY LD INTER IS THIS INTERRUPT ENTRY V1L01870
0052 4C18 0058R 188 | BSC L PREOP,+- NO, BR TO MAINLINE TRAP V1L01880
189 | * V1L01890
0054 C010 190 | LD H7000 LOAD NOT READY ERROR CODE V1L01900
0055 4400 0089 191 | BSI L $PST3 BR TO POST-OP ERROR TRAP V1L01910
0057 70EB 192 | MDX LOOPS BR TO TRY AGAIN V1L01920
193 | * V1L01930
0058 C00C 194 | PREOP LD H7000 LOAD NOT READY ERROR CODE V1L01940
0059 4400 0028 195 | BSI L $PRET BR TO PRE-OP ERROR TRAP V1L01950
005B 70E7 196 | MDX LOOPS BR TO TRY AGAIN V1L01960
197 | * V1L01970
198 | * V1L01980
199 | *************************************************** V1L01990
200 | * V1L02000
201 | * CONSTANTS AND WORKING STORAGE V1L02010
202 | * V1L02020
203 | *************************************************** V1L02030
204 | * V1L02040
205 | * V1L02050
005C 206 | BSS E 0 V1L02060
005C 0000 207 | SAVA DC 0 HOLDS SAVED ACCUMULATOR V1L02070
005D 2F00 208 | SENSE DC /2F00 SENSE PLOTTER IOCC V1L02080
005E 0000 209 | PARA DC *-* HOLDS PARAMETER V1L02090
005F 2F01 210 | SENSR DC /2F01 SENSE PLOTTER DSW RESET V1L02100
0060 0000 211 | WRITE DC *-* PUT POUT IN HERE V1L02110
0060R 212 | BUSY EQU *-1 THIS SUBROUTINE BUSY INDR V1L02120
0061 2900 213 | DC /2900 WRITE PLOTTER IOCC V1L02130
0062 0001 214 | H0001 DC /0001 CONSTANT V1L02140
0063 0009 215 | H0009 DC /0009 CONSTANT V1L02150
0064 000F 216 | H000F DC /000F CONSTANT V1L02160
0065 7000 217 | H7000 DC /7000 PLOTTER NOT READY CODE V1L02170
0066 0000 218 | INTER DC *-* INTERRUPT ENTRY INDICATOR V1L02180
219 | * V1L02190
000B 220 | CNT EQU 11 SIZE OF BUFFER V1L02200
0067 0000 221 | PINT DC *-* PIN TEMPORARY STORAGE V1L02210
0068 006CR 222 | PSTRT DC BUF ADDR START OF BUFFER V1L02220
0069 006CR 223 | PIN DC BUF ADDR NEXT WORD INPUT V1L02230
006A 006CR 224 | POUT DC BUF ADDR NEXT WORD OUTPUT V1L02240
006B 0076R 225 | PEND DC BUF+CNT-1 ADDR LAST WORD OF BUFFER V1L02250
006C 226 | BUF BSS CNT CIRCULAR I/O BUFFER V1L02260
227 | * V1L02270
228 | * CONTROL CODES FOR PLOTTER V1L02280
229 | * V1L02290
0077 0078R 230 | TABLE DC CNTRL BASE ADDR TO CONTROL TABLE V1L02300
0078 8000 231 | CNTRL DC /8000 0 PEN DOWN V1L02310
0079 0800 232 | DC /0800 1 +Y V1L02320
007A 4800 233 | DC /4800 2 +X +Y V1L02330
007B 4000 234 | DC /4000 3 +X V1L02340
007C 5000 235 | DC /5000 4 +X -Y V1L02350
007D 1000 236 | DC /1000 5 -Y V1L02360
007E 3000 237 | DC /3000 6 -X -Y V1L02370
007F 2000 238 | DC /2000 7 -X V1L02380
0080 2800 239 | DC /2800 8 -X +Y V1L02390
0081 0400 240 | DC /0400 9 PEN UP V1L02400
0082 241 | END V1L02410
There were no errors in this assembly
=== CROSS REFERENCES ==========================================================
Name Val Defd Referenced
$IOCT 0032 59 152 174
$PRET 0028 58 195
$PST3 0089 60 191
BUF 006CR 226 222 223 224 225
BUSY 0060R 212 134 147
CNT 000B 220 225 226
CNTRL 0078R 231 230
CONT 004AR 179 157
EXITM 0010R 98 135 180
FULL 001ER 121 116 123
H0001 0062R 214 112 162
H0009 0063R 215 87
H000F 0064R 216 84
H7000 0065R 217 190 194
INT 0004R 65 185
INTER 0066R 218 150 179 183 187
INTR 002FR 146 66
LOOPS 0043R 171 166 192 196
NTRDY 0051R 187 172
PARA 005ER 209 86 125
PEND 006BR 225 115 165
PIN 0069R 223 111 129 132 156
PINT 0067R 221 113 119 121 131
PLOTX 0000R 62
POUT 006AR 224 122 155 159 163 169
PREOP 0058R 194 188
PSTRT 0068R 222 118 168
PUT 0016R 111 88
RETML 0014R 101 81
SAVA 005CR 207 78 98
SCAN 003AR 159 136
SENSE 005DR 208 171
SENSR 005FR 210 149
START 0006R 77 64
TABLE 0077R 230 126
WRITE 0060R 211 160 177
XR1 0011R 99 62 77