V1PLOTX

Table Of Contents
  • [00004] PLOTX, FORTRAN PLOTTING I/O SUBR
v1plotx.lst
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