cdc:nos2.source:opl.opl871:deck:keyex
Deck KEYEX
Library Member Format: MODIFY
Source
Seq # *Modification Id* Act ----------------------------+ 00001 M00S00001.keyex +++| PROGRAM KEYEX(TAPE1=100,OUTPUT=100,TTFILE=100 00002 M00S00002.keyex +++| . ,INPUT=100, KEYPRNT=100, TAPE6 = KEYPRNT 00003 M00S00003.keyex +++| . ,TAPE2=OUTPUT,TAPE3=TTFILE,TAPE5=INPUT) 00004 M00S00004.keyex +++| 00005 M00S00005.keyex +++|*** KEY DEFINITION UTILITY.
Line S00001 Modification History | |
---|---|
M01 (Added by) | 281l803 |
Seq # *Modification Id* Act ----------------------------+ 00006 M01S00001.281l803 +++|* 00007 M01S00002.281l803 +++|* COPYRIGHT CONTROL DATA SYSTEMS INC. 1992. 00008 M00S00006.keyex +++|* 00009 M00S00007.keyex +++|* THE *KEY* COMMAND WAS DESIGNED TO BE USED ONLY ON THE VIKING 721 00010 M00S00008.keyex +++|* TERMINAL. IT MAKES USE OF THE PROGRAMMABLE FUNCTION KEYS ON THE 00011 M00S00009.keyex +++|* VIKING 721. YOU CAN CREATE OR EDIT DEFINITIONS FOR FUNCTION 00012 M00S00010.keyex +++|* KEYS AND SET TERMINAL CHARACTERISTICS. 00013 M00S00011.keyex +++|* 00014 M00S00012.keyex +++|* W. F. ANSLEY 83/06/01. CYBER INTERFACE AND PANELS. 00015 M00S00013.keyex +++|* S. L. KSANDER 83/06/01. 721 INTERFACE AND Z80 CODE. 00016 M00S00014.keyex +++|* 83/11/07. UPDATED TO INCLUDE THE CHECK AND PRINT 00017 M00S00015.keyex +++|* COMMANDS. 00018 M00S00016.keyex +++|* 84/02/29. UPDATE TO INCLUDE THE PF COMMANDS. 00019 M00S00017.keyex +++|* M. D. LEMBCKE 84/10/30. REVISED AND STANDARDIZED. 00020 M00S00018.keyex +++|* M. L. SWANSON 85/02/05. 00021 M00S00019.keyex +++| 00022 M00S00020.keyex +++|*** THE COMMAND FORMATS ARE: KEY,OPTION. OR 00023 M00S00021.keyex +++|* KEY(OPTION,FILENAME) 00024 M00S00022.keyex +++|* 00025 M00S00023.keyex +++|* WHERE OPTION CAN BE ONE OF THE FOLLOWING: 00026 M00S00024.keyex +++|* 00027 M00S00025.keyex +++|* HELP GIVES THE USER COMPLETE INFORMATION ON THE *KEY* 00028 M00S00026.keyex +++|* COMMAND AND ITS USE. *FILENAME* IS IGNORED WITH 00029 M00S00027.keyex +++|* THIS OPTION. 00030 M00S00028.keyex +++|* 00031 M00S00029.keyex +++|* CHECK CHECKS TO SEE IF THE FUNCTION KEYS ARE ALREADY 00032 M00S00030.keyex +++|* LOADED. IF NOT, A LOAD WILL BE EXECUTED. THIS 00033 M00S00031.keyex +++|* WILL SAVE TIME FOR THE USER OPERATING AT A LOW 00034 M00S00032.keyex +++|* BAUD RATE. 00035 M00S00033.keyex +++|* 00036 M00S00034.keyex +++|* NOTE: A GOOD USE FOR THIS OPTION IS IN A PROLOGUE 00037 M00S00035.keyex +++|* AT LOGIN TIME (REFER TO THE UPROC COMMAND). 00038 M00S00036.keyex +++|* 00039 M00S00037.keyex +++|* DISPLAY DISPLAYS THE FIRST SIXTEEN FUNCTION KEY LABELS THAT 00040 M00S00038.keyex +++|* ARE CURRENTLY STORED IN THE 721. 00041 M00S00039.keyex +++|* 00042 M00S00040.keyex +++|* DEFAULT SETS THE KEY DEFINITIONS FOR THE HELP, EDIT AND STOP 00043 M00S00041.keyex +++|* KEY TO THE NOS SYSTEM DEFAULTS. *FILENAME* IS IGNORED 00044 M00S00042.keyex +++|* FOR THIS OPTION. THE DEFAULTS SET ARE: HELP KEY = 00045 M00S00043.keyex +++|* HELP. EDIT KEY = FSE. STOP KEY = CTRL T/NEXT. 00046 M00S00044.keyex +++|* 00047 M00S00045.keyex +++|* EDIT ALLOWS THE USER TO UPDATE THEIR EXISTING KEY 00048 M00S00046.keyex +++|* DEFINITIONS ON *FILENAME*. IF *FILENAME* IS 00049 M00S00047.keyex +++|* NOT SPECIFIED, A FILE NAMED *KEYDEFS* WILL 00050 M00S00048.keyex +++|* BE CREATED AND SAVED UNDER THE USER'S USERNAME. 00051 M00S00049.keyex +++|* 00052 M00S00050.keyex +++|* LOAD THIS WILL DOWNLINE LOAD THE KEY DEFINITIONS FROM THE 00053 M00S00051.keyex +++|* SPECIFIED FILE INTO THE TERMINAL WITHOUT ANY USER 00054 M00S00052.keyex +++|* INTERACTION. IF NO FILE IS SPECIFIED, THE DEFAULT 00055 M00S00053.keyex +++|* FILE *KEYDEFS* WILL BE USED. 00056 M00S00054.keyex +++|* 00057 M00S00055.keyex +++|* PRINT THIS WILL LIST ONLY THE KEYS THAT ARE DEFINED ON THE 00058 M00S00056.keyex +++|* SPECIFIED FILE. THE OUTPUT WILL BE PLACED ON THE 00059 M00S00057.keyex +++|* LOCAL FILE *KEYPRNT*. IF NO FILE IS SPECIFIED, 00060 M00S00058.keyex +++|* *KEYDEFS* IS USED. THIS DOES NOT NECESSARILY LIST 00061 M00S00059.keyex +++|* THE KEY DEFINITIONS THAT ARE CURRENTLY LOADED INTO 00062 M00S00060.keyex +++|* THE TERMINAL, JUST THOSE THAT ARE ON THE SPECIFIED 00063 M00S00061.keyex +++|* FILE. 00064 M00S00062.keyex +++|* 00065 M00S00063.keyex +++|* FILENAME THE DEFAULT FILE NAME IS *KEYDEFS*. 00066 M00S00064.keyex +++| 00067 M00S00065.keyex +++|*** ERROR MESSAGES. 00068 M00S00066.keyex +++|* 00069 M00S00067.keyex +++|* * PLEASE ENTER THE SYSTEM COMMAND SCREEN(721) 00070 M00S00068.keyex +++|* AND RE-ENTER THE KEY COMMAND.* 00071 M00S00069.keyex +++|* THE PROGRAM HAS DETECTED THE TERMINAL MODEL NAME DOES 00072 M00S00070.keyex +++|* NOT BEGIN WITH THE PREFIX "721" AND HENCE THE TERMINAL 00073 M00S00071.keyex +++|* HAS NOT BEEN RECOGNIZED AS A VIKING X. NO PROCESSING 00074 M00S00072.keyex +++|* OCCURS IN THIS CASE. 00075 M00S00073.keyex +++| 00076 M00S00074.keyex +++|*** MESSAGES. 00077 M00S00075.keyex +++|* 00078 M00S00076.keyex +++|* * FUNCTION KEYS ARE ALREADY LOADED.* 00079 M00S00077.keyex +++|* OUTPUT BY ROUTINE *CHECK* TO SIGNIFY NO LOAD WAS 00080 M00S00078.keyex +++|* PROCESSED. 00081 M00S00079.keyex +++|* 00082 M00S00080.keyex +++|* * FUNCTION KEYS ARE NOT LOADED.* 00083 M00S00081.keyex +++|* OUTPUT BY ROUTINE *DISPLAY* IF FUNCTION KEYS HAVE NOT 00084 M00S00082.keyex +++|* BEEN DEFINED. 00085 M00S00083.keyex +++|* 00086 M00S00084.keyex +++|* * FUNCTION KEYS HAVE BEEN LOADED.* 00087 M00S00085.keyex +++|* OUTPUT BY ROUTINE *LOAD* IF FUNCTION KEYS WERE LOADED. 00088 M00S00086.keyex +++|* 00089 M00S00087.keyex +++|* * THE FUNCTION KEYS *EDIT*, *HELP*, AND *STOP* HAVE BEEN LOADED.* 00090 M00S00088.keyex +++|* OUTPUT BY ROUTINE *DEFAULT* IF *EDIT*, *HELP*, *STOP* 00091 M00S00089.keyex +++|* KEYS WERE LOADED. 00092 M00S00090.keyex +++|* 00093 M00S00091.keyex +++|* * THE KEY DEFINITIONS FILE HAS BEEN REPLACED.* 00094 M00S00092.keyex +++|* OUTPUT BY ROUTINE *EDIT* IF KEY DEFINITIONS FILE IS 00095 M00S00093.keyex +++|* REPLACED. 00096 M00S00094.keyex +++|* 00097 M00S00095.keyex +++|* * THE LIST OF DEFINED FUNCTION KEYS IS ON THE LOCAL FILE 00098 M00S00096.keyex +++|* *KEYPRNT*.* - OUTPUT BY ROUTINE *PRINT* AS AN INFORM- 00099 M00S00097.keyex +++|* ATIVE MESSAGE TO THE USER. 00100 M00S00098.keyex +++| 00101 M00S00099.keyex +++|*** *KEY* FILES. 00102 M00S00100.keyex +++|* 00103 M00S00101.keyex +++|* THE FOLLOWING DECKS/FILES ARE ASSOCIATED WITH THE *KEY* UTILITY. 00104 M00S00102.keyex +++|* 00105 M00S00103.keyex +++|* PROCEDURES: 00106 M00S00104.keyex +++|* KEY *CCL* PROCEDURE. 00107 M00S00105.keyex +++|* 00108 M00S00106.keyex +++|* CODE: 00109 M00S00107.keyex +++|* KEYEX KEY EXECUTIVE PROGRAM. 00110 M00S00108.keyex +++|* KEYPANS SCREEN FORMATTING PANELS. 00111 M00S00109.keyex +++|* KEYUTIL Z80 SOURCE CODE. 00112 M00S00110.keyex +++| 00113 M00S00111.keyex +++| 00114 M00S00112.keyex +++| 00115 M00S00113.keyex +++| 00116 M00S00114.keyex +++|** MAIN PROGRAM. 00117 M00S00115.keyex +++| 00118 M00S00116.keyex +++|** KEYEX - EXECUTIVE PROGRAM FOR *KEY* UTILITY. 00119 M00S00117.keyex +++|* 00120 M00S00118.keyex +++|* *KEYEX* SETS UP DEFAULTS IN COMMON BLOCK *INFO*, CRACKS 00121 M00S00119.keyex +++|* COMMAND PARAMETERS, AND PROCESSES USER SPECIFIED OPTIONS. 00122 M00S00120.keyex +++|* 00123 M00S00121.keyex +++|* KEYEX(OPTION, FILENAME) 00124 M00S00122.keyex +++|* 00125 M00S00123.keyex +++|* ENTRY OPTION - USER SPECIFIED OPTION. 00126 M00S00124.keyex +++|* FILENAME - OPTIONAL FILE NAME. 00127 M00S00125.keyex +++|* 00128 M00S00126.keyex +++|* EXIT *CCL* GLOBAL VARIABLE *R1* = 1 IF TERMINAL TYPE IS 00129 M00S00127.keyex +++|* INCORRECT. 00130 M00S00128.keyex +++|* 00131 M00S00129.keyex +++|* CALLS CHECK, CHKTERM, DEFAULT, DISPLAY, EDIT, HELP, LOAD, 00132 M00S00130.keyex +++|* PRINT, SYSKEYS. 00133 M00S00131.keyex +++| 00134 M00S00132.keyex +++| 00135 M00S00133.keyex +++| IMPLICIT INTEGER (A - Z) 00136 M00S00134.keyex +++| 00137 M00S00135.keyex +++| PARAMETER (NKEYS = 45) 00138 M00S00136.keyex +++|* NUMBER OF DEFINABLE FUNCTION KEYS 00139 M00S00137.keyex +++| 00140 M00S00138.keyex +++| CHARACTER*7 OPTION 00141 M00S00139.keyex +++|* OPTION SPECIFIED BY THE USER 00142 M00S00140.keyex +++| CHARACTER*7 FILENM 00143 M00S00141.keyex +++|* KEY DEFINITIONS FILE 00144 M00S00142.keyex +++| CHARACTER*67 KEYS(NKEYS) 00145 M00S00143.keyex +++|* FUNCTION KEY DEFINITIONS 00146 M00S00144.keyex +++|* 7/ KEY LABEL, 60/ KEY DEFINITION 00147 M00S00145.keyex +++| CHARACTER*7 PARM 00148 M00S00146.keyex +++|* PARAMETER NAME 00149 M00S00147.keyex +++| CHARACTER*7 SETDATA(3) 00150 M00S00148.keyex +++|* SETUP TERMINAL CHARACTERISTICS 00151 M00S00149.keyex +++| 00152 M00S00150.keyex +++| COMMON / INFO / KEYS, FILENM, SETDATA 00153 M00S00151.keyex +++| 00154 M00S00152.keyex +++| 00155 M00S00153.keyex +++|* SET UP DEFAULTS IN COMMON BLOCK AND GET INPUT PARAMETERS. 00156 M00S00154.keyex +++| 00157 M00S00155.keyex +++| CALL SYSKEYS 00158 M00S00156.keyex +++| CALL GETPARM(PARM,OPTION,I) 00159 M00S00157.keyex +++| CALL GETPARM(PARM,FILENM,I) 00160 M00S00158.keyex +++| 00161 M00S00159.keyex +++|* CHECK TERMINAL TYPE AND PROCESS OPTION SPECIFIED BY THE USER. 00162 M00S00160.keyex +++| 00163 M00S00161.keyex +++| CALL CHKTERM 00164 M00S00162.keyex +++| IF(OPTION .EQ. 'CHECK ') THEN 00165 M00S00163.keyex +++| CALL CHECK 00166 M00S00164.keyex +++| ELSE IF(OPTION .EQ. 'DEFAULT') THEN 00167 M00S00165.keyex +++| CALL DEFAULT 00168 M00S00166.keyex +++| ELSE IF(OPTION .EQ. 'DISPLAY') THEN 00169 M00S00167.keyex +++| CALL DISPLAY 00170 M00S00168.keyex +++| ELSE IF(OPTION .EQ. 'EDIT ') THEN 00171 M00S00169.keyex +++| CALL EDIT 00172 M00S00170.keyex +++| ELSE IF(OPTION .EQ. 'HELP ') THEN 00173 M00S00171.keyex +++| CALL HELP 00174 M00S00172.keyex +++| ELSE IF(OPTION .EQ. 'LOAD ') THEN 00175 M00S00173.keyex +++| CALL LOAD 00176 M00S00174.keyex +++| ELSE IF(OPTION .EQ. 'PRINT ') THEN 00177 M00S00175.keyex +++| CALL PRINT 00178 M00S00176.keyex +++| ENDIF 00179 M00S00177.keyex +++| CLOSE(1,STATUS='DELETE') 00180 M00S00178.keyex +++| CLOSE(3,STATUS='DELETE') 00181 M00S00179.keyex +++| END 00182 M00S00180.keyex +++| 00183 M00S00181.keyex +++| 00184 M00S00182.keyex +++| SUBROUTINE BYTE (CHAR, UBYTE, LBYTE) 00185 M00S00183.keyex +++| 00186 M00S00184.keyex +++|** BYTE - CONVERT ADDRESS TO Z80 FORMAT. 00187 M00S00185.keyex +++|* 00188 M00S00186.keyex +++|* *BYTE* TAKES *CHAR* AND DIVIDES IT, CHANGING THE ADDRESS INTO 00189 M00S00187.keyex +++|* 721 Z80 FORMAT AND RETURNS THE RESULT IN *UBYTE* AND *LBYTE*. 00190 M00S00188.keyex +++|* 00191 M00S00189.keyex +++|* CALL BYTE(CHAR, UBYTE, LBYTE) 00192 M00S00190.keyex +++|* 00193 M00S00191.keyex +++|* ENTRY CHAR - CHARACTER BYTE ADDRESS. 00194 M00S00192.keyex +++|* 00195 M00S00193.keyex +++|* EXIT UBYTE - THE UPPER HALF ADDRESS WITH THE PREFIX *60*. 00196 M00S00194.keyex +++|* LBYTE - THE LOWER HALF ADDRESS WITH THE PREFIX *20*. 00197 M00S00195.keyex +++|* 00198 M00S00196.keyex +++|* NOTE THE Z80 MICRO REQUIRES A 16 BIT ADDRESS WITH THE UPPER 00199 M00S00197.keyex +++|* BYTE BEFORE THE LOWER BYTE. 00200 M00S00198.keyex +++| 00201 M00S00199.keyex +++| 00202 M00S00200.keyex +++| IMPLICIT INTEGER (A - Z) 00203 M00S00201.keyex +++| 00204 M00S00202.keyex +++| BOOLEAN ZPREFIX 00205 M00S00203.keyex +++|* Z80 CODE PREFIX 00206 M00S00204.keyex +++| BOOLEAN Z20CODE 00207 M00S00205.keyex +++|* *20* PREFIX FOR Z80 ADDRESS 00208 M00S00206.keyex +++| BOOLEAN Z60CODE 00209 M00S00207.keyex +++|* *60* PREFIX FOR Z80 ADDRESS 00210 M00S00208.keyex +++| 00211 M00S00209.keyex +++| DATA ZPREFIX / Z"800" / 00212 M00S00210.keyex +++| DATA Z20CODE / Z"20" / 00213 M00S00211.keyex +++| DATA Z60CODE / Z"60" / 00214 M00S00212.keyex +++| 00215 M00S00213.keyex +++| C = AND(CHAR, Z"F0") 00216 M00S00214.keyex +++| UBYTE = SHIFT(C, -4) + Z20CODE + ZPREFIX 00217 M00S00215.keyex +++| LBYTE = AND(CHAR, Z"0F") + Z60CODE + ZPREFIX 00218 M00S00216.keyex +++| RETURN 00219 M00S00217.keyex +++| END 00220 M00S00218.keyex +++| 00221 M00S00219.keyex +++| 00222 M00S00220.keyex +++| SUBROUTINE CHECK 00223 M00S00221.keyex +++| 00224 M00S00222.keyex +++|** CHECK - CHECK IF FUNCTION KEYS HAVE BEEN LOADED. 00225 M00S00223.keyex +++|* 00226 M00S00224.keyex +++|* *CHECK* QUERIES THE TERMINAL TO DETERMINE IF Z80 CONTROLWARE 00227 M00S00225.keyex +++|* AND KEY DEFINITIONS ARE LOADED INTO THE TERMINAL. 00228 M00S00226.keyex +++|* 00229 M00S00227.keyex +++|* CALL CHECK 00230 M00S00228.keyex +++|* 00231 M00S00229.keyex +++|* CALLS LOAD, VERLOAD. 00232 M00S00230.keyex +++|* 00233 M00S00231.keyex +++|* MESSAGES 00234 M00S00232.keyex +++|* FUNCTION KEYS HAVE BEEN LOADED. 00235 M00S00233.keyex +++| 00236 M00S00234.keyex +++| 00237 M00S00235.keyex +++| IMPLICIT INTEGER (A - Z) 00238 M00S00236.keyex +++| 00239 M00S00237.keyex +++| LOGICAL LOADED 00240 M00S00238.keyex +++|* CONTROLWARE LOADED FLAG 00241 M00S00239.keyex +++| 00242 M00S00240.keyex +++| DATA LOADED / .FALSE. / 00243 M00S00241.keyex +++| 00244 M00S00242.keyex +++|10 FORMAT('FUNCTION KEYS ARE ALREADY LOADED.') 00245 M00S00243.keyex +++| 00246 M00S00244.keyex +++| CALL VERLOAD(LOADED) 00247 M00S00245.keyex +++| 00248 M00S00246.keyex +++| IF (.NOT.LOADED) THEN 00249 M00S00247.keyex +++| CALL LOAD 00250 M00S00248.keyex +++| ELSE 00251 M00S00249.keyex +++| WRITE(2,10) 00252 M00S00250.keyex +++| ENDFILE 2 00253 M00S00251.keyex +++| ENDIF 00254 M00S00252.keyex +++| RETURN 00255 M00S00253.keyex +++| END 00256 M00S00254.keyex +++| 00257 M00S00255.keyex +++| 00258 M00S00256.keyex +++| SUBROUTINE CHKTERM 00259 M00S00257.keyex +++| 00260 M00S00258.keyex +++|** CHKTERM - CHECK TERMINAL MODEL NAME. 00261 M00S00259.keyex +++|* 00262 M00S00260.keyex +++|* *CHKTERM* VERIFIES THAT THE FIRST THREE CHARACTERS OF THE 00263 M00S00261.keyex +++|* TERMINAL MODEL NAME SPECIFIED TO THE SCREEN OR LINE COMMAND 00264 M00S00262.keyex +++|* WAS "721". 00265 M00S00263.keyex +++|* 00266 M00S00264.keyex +++|* CALL CHKTERM 00267 M00S00265.keyex +++|* 00268 M00S00266.keyex +++|* ERROR *ERR* IS CALLED IF THE TERMINAL MODEL IS NOT PREFIXED 00269 M00S00267.keyex +++|* BY "721". 00270 M00S00268.keyex +++|* 00271 M00S00269.keyex +++|* CALLS ERR, SFGETN. 00272 M00S00270.keyex +++|* 00273 M00S00271.keyex +++|* MESSAGES 00274 M00S00272.keyex +++|* PLEASE ENTER THE SYSTEM COMMAND: SCREEN,721. 00275 M00S00273.keyex +++|* AND RE-ENTER THE KEY COMMAND. 00276 M00S00274.keyex +++|* STOP. FIX ERROR. 00277 M00S00275.keyex +++| 00278 M00S00276.keyex +++| 00279 M00S00277.keyex +++| IMPLICIT INTEGER (A - Z) 00280 M00S00278.keyex +++| 00281 M00S00279.keyex +++| CHARACTER*7 MODNAME 00282 M00S00280.keyex +++|* TERMINAL MODEL NAME. 00283 M00S00281.keyex +++| CHARACTER*3 PREFIX 00284 M00S00282.keyex +++|* THREE CHARACTER PREFIX 00285 M00S00283.keyex +++| CHARACTER*3 PRE721 00286 M00S00284.keyex +++|* CHARACTER STRING PREFIX FOR 721 00287 M00S00285.keyex +++| 00288 M00S00286.keyex +++| EQUIVALENCE (MODNAME, PREFIX) 00289 M00S00287.keyex +++| 00290 M00S00288.keyex +++| DATA PRE721 / '721' / 00291 M00S00289.keyex +++| 00292 M00S00290.keyex +++|10 FORMAT(' PLEASE ENTER THE SYSTEM COMMAND: SCREEN,721.', 00293 M00S00291.keyex +++| ./' AND RE-ENTER THE KEY COMMAND.') 00294 M00S00292.keyex +++| 00295 M00S00293.keyex +++|* GET TERMINAL MODEL NAME. 00296 M00S00294.keyex +++| 00297 M00S00295.keyex +++| CALL SFGETN(MODNAME) 00298 M00S00296.keyex +++| 00299 M00S00297.keyex +++|* IF PREFIX IS NOT '721', NOTIFY USER OF ERROR. 00300 M00S00298.keyex +++| 00301 M00S00299.keyex +++| IF (PREFIX .NE. PRE721) THEN 00302 M00S00300.keyex +++| WRITE(2,10) 00303 M00S00301.keyex +++| CALL ERR 00304 M00S00302.keyex +++| STOP 'FIX ERROR.' 00305 M00S00303.keyex +++| ENDIF 00306 M00S00304.keyex +++| RETURN 00307 M00S00305.keyex +++| END 00308 M00S00306.keyex +++| 00309 M00S00307.keyex +++| 00310 M00S00308.keyex +++| SUBROUTINE CLEAR 00311 M00S00309.keyex +++| 00312 M00S00310.keyex +++|** CLEAR - CLEAR THE USER DEFINED FUNCTION KEYS IN THE TERMINAL. 00313 M00S00311.keyex +++|* 00314 M00S00312.keyex +++|* *CLEAR* CLEARS THE FUNCTION KEY DEFINITIONS WITHIN THE 00315 M00S00313.keyex +++|* TERMINAL BY EXECUTING A HOST-LOADED CONTROLWARE ROUTINE 00316 M00S00314.keyex +++|* THAT REINITIALIZES THE TERMINALS KEY DEFINITION TABLE. 00317 M00S00315.keyex +++|* 00318 M00S00316.keyex +++|* CALL CLEAR 00319 M00S00317.keyex +++|* 00320 M00S00318.keyex +++|* CALLS PACK, SEQPACK. 00321 M00S00319.keyex +++| 00322 M00S00320.keyex +++| 00323 M00S00321.keyex +++| IMPLICIT INTEGER (A - Z) 00324 M00S00322.keyex +++| 00325 M00S00323.keyex +++| 00326 M00S00324.keyex +++| BOOLEAN ZCARRET(1) 00327 M00S00325.keyex +++|* HEX CODE FOR CARRIAGE RETURN 00328 M00S00326.keyex +++| BOOLEAN ZRESETR(3) 00329 M00S00327.keyex +++|* HEX SEQUENCE TO INVOKE RESET ROUTINE 00330 M00S00328.keyex +++| 00331 M00S00329.keyex +++| 00332 M00S00330.keyex +++| DATA ZCARRET / Z"0D" / 00333 M00S00331.keyex +++| DATA ZRESETR / Z"1E", Z"12", Z"72" / 00334 M00S00332.keyex +++| 00335 M00S00333.keyex +++|* RESET KEYS TO THE DEFAULT 721 SETTINGS BY DOING A HOST EXECUTE 00336 M00S00334.keyex +++|* OF THE HOST LOADED Z80 CONTROLWARE ROUTINE *RESET*. 00337 M00S00335.keyex +++| 00338 M00S00336.keyex +++| CALL PACK(1, 0) 00339 M00S00337.keyex +++| CALL SEQPACK(ZRESETR,3) 00340 M00S00338.keyex +++| CALL SEQPACK(ZCARRET,1) 00341 M00S00339.keyex +++| CALL PACK(3, 1) 00342 M00S00340.keyex +++| RETURN 00343 M00S00341.keyex +++| END 00344 M00S00342.keyex +++| 00345 M00S00343.keyex +++| 00346 M00S00344.keyex +++| SUBROUTINE DEFAULT 00347 M00S00345.keyex +++| 00348 M00S00346.keyex +++|** DEFAULT - LOAD DEFAULT FUNCTION KEYS. 00349 M00S00347.keyex +++|* 00350 M00S00348.keyex +++|* *DEFAULT* LOADS THE *EDIT*, *HELP*, AND *STOP* FUNCTION KEYS. 00351 M00S00349.keyex +++|* 00352 M00S00350.keyex +++|* CALL DEFAULT 00353 M00S00351.keyex +++|* 00354 M00S00352.keyex +++|* EXIT *KEYS* AND *SETDATA* ARE SET TO DEFAULT VALUES. 00355 M00S00353.keyex +++|* 00356 M00S00354.keyex +++|* CALLS CLEAR, SEND. 00357 M00S00355.keyex +++|* 00358 M00S00356.keyex +++|* MESSAGES 00359 M00S00357.keyex +++|* THE FUNCTION KEYS *EDIT*, *HELP*, AND *STOP* HAVE BEEN 00360 M00S00358.keyex +++|* LOADED. 00361 M00S00359.keyex +++| 00362 M00S00360.keyex +++| 00363 M00S00361.keyex +++| IMPLICIT INTEGER (A - Z) 00364 M00S00362.keyex +++| 00365 M00S00363.keyex +++|10 FORMAT(' THE FUNCTION KEYS *EDIT*, *HELP*, AND *STOP* HAVE ', 00366 M00S00364.keyex +++| .'BEEN LOADED.') 00367 M00S00365.keyex +++| 00368 M00S00366.keyex +++|* CLEAR THE CURRENT FUNCTION KEY DEFINITIONS. 00369 M00S00367.keyex +++| 00370 M00S00368.keyex +++| CALL CLEAR 00371 M00S00369.keyex +++| 00372 M00S00370.keyex +++|* SEND DEFAULT DEFINITIONS TO TERMINAL. 00373 M00S00371.keyex +++| 00374 M00S00372.keyex +++| CALL SEND 00375 M00S00373.keyex +++| WRITE(2,10) 00376 M00S00374.keyex +++| ENDFILE 2 00377 M00S00375.keyex +++| RETURN 00378 M00S00376.keyex +++| END 00379 M00S00377.keyex +++| 00380 M00S00378.keyex +++| 00381 M00S00379.keyex +++| SUBROUTINE DISPLAY 00382 M00S00380.keyex +++| 00383 M00S00381.keyex +++|** DISPLAY - DISPLAY FUNCTION KEYS. 00384 M00S00382.keyex +++|* 00385 M00S00383.keyex +++|* *DISPLAY* DISPLAYS THE FIRST SIXTEEN FUNCTION KEY LABELS THAT 00386 M00S00384.keyex +++|* ARE CURRENTLY LOADED IN THE TERMINAL. 00387 M00S00385.keyex +++|* 00388 M00S00386.keyex +++|* CALL DISPLAY 00389 M00S00387.keyex +++|* 00390 M00S00388.keyex +++|* EXIT THE FIRST SIXTEEN KEY LABELS DISPLAYED USING 00391 M00S00389.keyex +++|* A SCREEN FORMATTING PANEL. 00392 M00S00390.keyex +++|* 00393 M00S00391.keyex +++|* CALLS ERR, PACK, RDSORC, SEQPACK, SFCLOS, SFOPEN, SFSSHO, 00394 M00S00392.keyex +++|* VERLOAD. 00395 M00S00393.keyex +++|* 00396 M00S00394.keyex +++|* MESSAGES 00397 M00S00395.keyex +++|* FUNCTION KEYS ARE NOT LOADED. 00398 M00S00396.keyex +++|* 00399 M00S00397.keyex +++|* PLEASE ENTER THE SYSTEM COMMAND: SCREEN,721. 00400 M00S00398.keyex +++|* AND RE-ENTER THE KEY COMMAND. 00401 M00S00399.keyex +++|* STOP. FIX ERROR. 00402 M00S00400.keyex +++| 00403 M00S00401.keyex +++| 00404 M00S00402.keyex +++| IMPLICIT INTEGER (A - Z) 00405 M00S00403.keyex +++| 00406 M00S00404.keyex +++| PARAMETER (NKEYS = 45) 00407 M00S00405.keyex +++|* NUMBER OF DEFINABLE FUNCTION KEYS 00408 M00S00406.keyex +++| 00409 M00S00407.keyex +++| BOOLEAN ZDISKEY(3) 00410 M00S00408.keyex +++|* HEX SEQUENCE TO DISABLE KEYBOARD ENTRY 00411 M00S00409.keyex +++| BOOLEAN ZENKEYB(3) 00412 M00S00410.keyex +++|* HEX SEQUENCE TO ENABLE KEYBOARD ENTRY 00413 M00S00411.keyex +++| BOOLEAN ZHOSTLC(3) 00414 M00S00412.keyex +++|* HEX SEQUENCE FOR HOST LOADED CONTROLWARE 00415 M00S00413.keyex +++| BOOLEAN ZMCUR80(3) 00416 M00S00414.keyex +++|* HEX SEQUENCE TO MOVE CURSOR FOR 80 COLUMN 00417 M00S00415.keyex +++| BOOLEAN ZMCUR32(5) 00418 M00S00416.keyex +++|* HEX SEQUENCE TO MOVE CURSOR FOR 132 COLUMN 00419 M00S00417.keyex +++| CHARACTER*7 FILENM 00420 M00S00418.keyex +++|* KEY DEFINITIONS FILE 00421 M00S00419.keyex +++| CHARACTER*67 KEYS(NKEYS) 00422 M00S00420.keyex +++|* FUNCTION KEY DEFINITIONS 00423 M00S00421.keyex +++| CHARACTER*112 OPRAM4 00424 M00S00422.keyex +++|* STRING OF USER LABELS 00425 M00S00423.keyex +++| CHARACTER*7 PANEL 00426 M00S00424.keyex +++|* TEMPORARY PANEL NAME 00427 M00S00425.keyex +++| CHARACTER*7 PANEL7 00428 M00S00426.keyex +++|* DISPLAY PANEL FOR 80 CHARACTERS/LINE 00429 M00S00427.keyex +++| CHARACTER*7 PANEL8 00430 M00S00428.keyex +++|* DISPLAY PANEL FOR 132 CHARACTERS/LINE 00431 M00S00429.keyex +++| CHARACTER*7 SETDATA(3) 00432 M00S00430.keyex +++|* TERMINAL CHARACTERISTICS 00433 M00S00431.keyex +++| CHARACTER*7 STR80 00434 M00S00432.keyex +++|* 80 CHARACTERS STRING 00435 M00S00433.keyex +++| CHARACTER*7 STR132 00436 M00S00434.keyex +++|* 132 CHARACTERS STRING 00437 M00S00435.keyex +++| LOGICAL LOADED 00438 M00S00436.keyex +++|* CONTROLWARE LOADED FLAG 00439 M00S00437.keyex +++| 00440 M00S00438.keyex +++| COMMON / INFO / KEYS, FILENM, SETDATA 00441 M00S00439.keyex +++| 00442 M00S00440.keyex +++| DATA OPRAM4 / ' ' / 00443 M00S00441.keyex +++| DATA PANEL7 / 'KEYPAN7' / 00444 M00S00442.keyex +++| DATA PANEL8 / 'KEYPAN8' / 00445 M00S00443.keyex +++| DATA ZDISKEY / Z"1E", Z"12", Z"4D" / 00446 M00S00444.keyex +++| DATA ZENKEYB / Z"1E", Z"12", Z"4E" / 00447 M00S00445.keyex +++| DATA ZHOSTLC / Z"1E", Z"12", Z"73" / 00448 M00S00446.keyex +++| DATA ZMCUR80 / Z"02", Z"20", Z"23"/ 00449 M00S00447.keyex +++| DATA ZMCUR32 / Z"02", Z"7E", Z"20", Z"20", Z"23" / 00450 M00S00448.keyex +++| DATA STR80 / '80 ' / 00451 M00S00449.keyex +++| DATA STR132 / '132 ' / 00452 M00S00450.keyex +++| DATA LOADED / .FALSE. / 00453 M00S00451.keyex +++| 00454 M00S00452.keyex +++|12 FORMAT(A112) 00455 M00S00453.keyex +++|13 FORMAT(' FUNCTION KEYS ARE NOT LOADED.') 00456 M00S00454.keyex +++|14 FORMAT(' PLEASE ENTER THE SYSTEM COMMAND: SCREEN,721.', 00457 M00S00455.keyex +++| ./' AND RE-ENTER THE KEY COMMAND.') 00458 M00S00456.keyex +++| 00459 M00S00457.keyex +++| 00460 M00S00458.keyex +++| CALL VERLOAD(LOADED) 00461 M00S00459.keyex +++| 00462 M00S00460.keyex +++| IF (.NOT.LOADED) THEN 00463 M00S00461.keyex +++| CALL PACK(1, 0) 00464 M00S00462.keyex +++| WRITE(2,13) 00465 M00S00463.keyex +++| ELSE 00466 M00S00464.keyex +++| CALL RDSORC 00467 M00S00465.keyex +++| CALL PACK(1, 0) 00468 M00S00466.keyex +++| CALL SEQPACK(ZHOSTLC,3) 00469 M00S00467.keyex +++| CALL PACK(3, 1) 00470 M00S00468.keyex +++| 00471 M00S00469.keyex +++|* READ THE 721 LABELS FROM THE TERMINAL. 00472 M00S00470.keyex +++| 00473 M00S00471.keyex +++| READ(5, 12) OPRAM4 00474 M00S00472.keyex +++| 00475 M00S00473.keyex +++|* DISPLAY THE LABELS USING THE CORRECT SIZE PANEL. 00476 M00S00474.keyex +++| 00477 M00S00475.keyex +++| IF(SETDATA(3) .EQ. STR132) THEN 00478 M00S00476.keyex +++| PANEL = PANEL8 00479 M00S00477.keyex +++| ELSE 00480 M00S00478.keyex +++| PANEL = PANEL7 00481 M00S00479.keyex +++| ENDIF 00482 M00S00480.keyex +++| 00483 M00S00481.keyex +++| CALL SFOPEN(PANEL, STAT) 00484 M00S00482.keyex +++| IF (STAT .NE. 0) THEN 00485 M00S00483.keyex +++| CALL ERR 00486 M00S00484.keyex +++| STOP 'SF ERROR.' 00487 M00S00485.keyex +++| ELSE 00488 M00S00486.keyex +++| CALL SFSWRI(PANEL, OPRAM4) 00489 M00S00487.keyex +++| CALL SFCLOS(PANEL, 2) 00490 M00S00488.keyex +++| 00491 M00S00489.keyex +++|* POSITION CURSOR UNDER THE DISPLAY OF LABELS. 00492 M00S00490.keyex +++| 00493 M00S00491.keyex +++| CALL PACK(1, 0) 00494 M00S00492.keyex +++| IF(SETDATA(3) .EQ. STR80) THEN 00495 M00S00493.keyex +++| CALL SEQPACK(ZMCUR80,3) 00496 M00S00494.keyex +++| ELSE 00497 M00S00495.keyex +++| CALL SEQPACK(ZMCUR32,5) 00498 M00S00496.keyex +++| ENDIF 00499 M00S00497.keyex +++| 00500 M00S00498.keyex +++| ENDIF 00501 M00S00499.keyex +++| 00502 M00S00500.keyex +++| ENDIF 00503 M00S00501.keyex +++| CALL SEQPACK(ZENKEYB,3) 00504 M00S00502.keyex +++| CALL PACK(3, 1) 00505 M00S00503.keyex +++| RETURN 00506 M00S00504.keyex +++| END 00507 M00S00505.keyex +++| 00508 M00S00506.keyex +++| 00509 M00S00507.keyex +++| SUBROUTINE EDIT 00510 M00S00508.keyex +++| 00511 M00S00509.keyex +++|** EDIT - EDIT FUNCTION KEYS. 00512 M00S00510.keyex +++|* 00513 M00S00511.keyex +++|* *EDIT* ALLOWS THE USER TO DEFINE AND LOAD FUNCTION KEYS 00514 M00S00512.keyex +++|* AND SET TERMINAL CHARACTERISTICS. 00515 M00S00513.keyex +++|* 00516 M00S00514.keyex +++|* CALL EDIT 00517 M00S00515.keyex +++|* 00518 M00S00516.keyex +++|* EXIT *PARM* AND *SETDATA* MAY BE MODIFIED. 00519 M00S00517.keyex +++|* 00520 M00S00518.keyex +++|* CALLS EDSETUP, ERR, LDSETUP, LOAD, RDSORC, SFCLOS, SFGETK, 00521 M00S00519.keyex +++|* SFOPEN, SFSSHO, SYSKEYS, WRSORC. 00522 M00S00520.keyex +++|* 00523 M00S00521.keyex +++|* MESSAGES 00524 M00S00522.keyex +++|* THE KEY DEFINITIONS FILE HAS BEEN REPLACED. 00525 M00S00523.keyex +++|* 00526 M00S00524.keyex +++|* FUNCTION KEYS HAVE BEEN LOADED. 00527 M00S00525.keyex +++| 00528 M00S00526.keyex +++| IMPLICIT INTEGER (A - Z) 00529 M00S00527.keyex +++| 00530 M00S00528.keyex +++| PARAMETER (ORDHELP = 3) 00531 M00S00529.keyex +++|* ORDINAL FOR THE HELP KEY 00532 M00S00530.keyex +++| PARAMETER (ORDBKW = 8) 00533 M00S00531.keyex +++|* ORDINAL FOR THE BKW FUNCTION KEY 00534 M00S00532.keyex +++| PARAMETER (ORDFWD = 7) 00535 M00S00533.keyex +++|* ORDINAL FOR THE FWD FUNCTION KEY 00536 M00S00534.keyex +++| PARAMETER (ORDSTOP = 4) 00537 M00S00535.keyex +++|* ORDINAL FOR THE STOP FUNCTION KEY 00538 M00S00536.keyex +++| PARAMETER (NKEYS = 45) 00539 M00S00537.keyex +++|* NUMBER OF DEFINABLE FUNCTION KEYS 00540 M00S00538.keyex +++| PARAMETER (NPAN = 3) 00541 M00S00539.keyex +++|* NUMBER OF EDIT PANELS 00542 M00S00540.keyex +++| PARAMETER (NKEYSPP = 15) 00543 M00S00541.keyex +++|* NUMBER OF KEYS DEFINABLE PER PANEL 00544 M00S00542.keyex +++| 00545 M00S00543.keyex +++| DIMENSION BASE(NPAN) 00546 M00S00544.keyex +++|* FUNCTION KEYS DIVIDED IN THREE GROUPS 00547 M00S00545.keyex +++| CHARACTER*1 PAGE(NPAN) 00548 M00S00546.keyex +++|* PAGE NUMBER OF PANEL 00549 M00S00547.keyex +++| CHARACTER*7 FILENM 00550 M00S00548.keyex +++|* FILE NAME 00551 M00S00549.keyex +++| CHARACTER*67 KEYS(NKEYS) 00552 M00S00550.keyex +++|* FUNCTION KEY DEFINITIONS 00553 M00S00551.keyex +++| CHARACTER*5 LABELS(NPAN, NKEYSPP) 00554 M00S00552.keyex +++|* FUNCTION KEY LABELS 00555 M00S00553.keyex +++| CHARACTER*7 P1 00556 M00S00554.keyex +++|* BASIC INPUT PANEL 00557 M00S00555.keyex +++| CHARACTER*7 P2 00558 M00S00556.keyex +++|* HELP PANEL 00559 M00S00557.keyex +++| CHARACTER*7 P3 00560 M00S00558.keyex +++|* ASCII-HEX PANEL 00561 M00S00559.keyex +++| CHARACTER*1081 P1IVAR 00562 M00S00560.keyex +++|* INPUT STRING FROM THE PANEL 00563 M00S00561.keyex +++| CHARACTER*1081 P1OVAR 00564 M00S00562.keyex +++|* OUTPUT STRING FOR THE PANEL 00565 M00S00563.keyex +++| CHARACTER*72 P1I(NKEYSPP) 00566 M00S00564.keyex +++|* INPUT STRING FROM THE PANEL 00567 M00S00565.keyex +++| CHARACTER*72 P1O(NKEYSPP) 00568 M00S00566.keyex +++|* OUTPUT STRING FOR THE PANEL 00569 M00S00567.keyex +++| CHARACTER*1 P2VAR 00570 M00S00568.keyex +++|* BLANK OUTPUT STRING 00571 M00S00569.keyex +++| CHARACTER*7 SETDATA(3) 00572 M00S00570.keyex +++|* SETUP DATA. 00573 M00S00571.keyex +++| INTEGER ORDINAL 00574 M00S00572.keyex +++|* FUNCTION KEY VALUE 00575 M00S00573.keyex +++| INTEGER TYPE 00576 M00S00574.keyex +++|* TYPE OF FUNCTION KEY 00577 M00S00575.keyex +++|* 0 = PROGRAMMABLE FUNCTION KEY 00578 M00S00576.keyex +++|* 1 = LABELED FUNCTION KEY 00579 M00S00577.keyex +++| 00580 M00S00578.keyex +++| EQUIVALENCE (P1I(1), P1IVAR(2:2)) 00581 M00S00579.keyex +++| EQUIVALENCE (P1O(1), P1OVAR(2:2)) 00582 M00S00580.keyex +++| 00583 M00S00581.keyex +++| COMMON / INFO / KEYS, FILENM, SETDATA 00584 M00S00582.keyex +++| 00585 M00S00583.keyex +++| DATA PAGE / '1', '2', '3' / 00586 M00S00584.keyex +++| DATA P1 / 'KEYPAN4' / 00587 M00S00585.keyex +++| DATA P2 / 'KEYPAN3' / 00588 M00S00586.keyex +++| DATA P3 / 'KEYPAN6' / 00589 M00S00587.keyex +++| DATA BASE / 0, 15, 30 / 00590 M00S00588.keyex +++| DATA P1I / 15* ' ' / 00591 M00S00589.keyex +++| DATA P1O / 15* ' ' / 00592 M00S00590.keyex +++| DATA P2VAR / ' ' / 00593 M00S00591.keyex +++| DATA (LABELS(1, I), I = 1, NKEYSPP) / 00594 M00S00592.keyex +++| . 'F1 ', 'F2 ', 'F3 ', 'F4 ', 'F5 ' 00595 M00S00593.keyex +++| ., 'F6 ', 'F7 ', 'F8 ', 'F9 ', 'F10 ' 00596 M00S00594.keyex +++| ., 'F11 ', 'F12 ', 'F13 ', 'F14 ', 'F15 ' 00597 M00S00595.keyex +++| ./ 00598 M00S00596.keyex +++| DATA (LABELS(2, I), I = 1, NKEYSPP) / 00599 M00S00597.keyex +++| . 'RTAB ', 'LTAB ', 'NEXT ', 'DOWN ', 'UP ' 00600 M00S00598.keyex +++| ., 'FWD ', 'BKW ', 'HELP ', 'ERASE ', 'EDIT ' 00601 M00S00599.keyex +++| ., 'BACK ', 'LAB ', 'DATA ', 'STOP ', 'INSRT ' 00602 M00S00600.keyex +++| ./ 00603 M00S00601.keyex +++| DATA (LABELS(3, I), I = 1, NKEYSPP) / 00604 M00S00602.keyex +++| . 'DLETE', 'CLEAR', 'PRINT', 'PAD 1 ', 'PAD 2 ' 00605 M00S00603.keyex +++| ., 'PAD 3', 'PAD 4', 'PAD 5', 'PAD 6 ', 'PAD 7 ' 00606 M00S00604.keyex +++| ., 'PAD 8', 'PAD 9', 'PAD 0', 'PAD , ', 'PAD . ' 00607 M00S00605.keyex +++| ./ 00608 M00S00606.keyex +++| 00609 M00S00607.keyex +++|11 FORMAT(' THE KEY DEFINITIONS FILE HAS BEEN REPLACED.') 00610 M00S00608.keyex +++|12 FORMAT(' PLEASE ENTER THE SYSTEM COMMAND: SCREEN,721.', 00611 M00S00609.keyex +++| ./' AND RE-ENTER THE KEY COMMAND.') 00612 M00S00610.keyex +++| 00613 M00S00611.keyex +++| 00614 M00S00612.keyex +++|* READ USER DEFINITIONS FROM SOURCE FILE, IF ANY. 00615 M00S00613.keyex +++| 00616 M00S00614.keyex +++| CALL RDSORC 00617 M00S00615.keyex +++| 00618 M00S00616.keyex +++| CALL SFOPEN(P1, STAT) 00619 M00S00617.keyex +++| IF (STAT .NE. 0) THEN 00620 M00S00618.keyex +++| CALL ERR 00621 M00S00619.keyex +++| STOP 'SF ERROR.' 00622 M00S00620.keyex +++| ENDIF 00623 M00S00621.keyex +++| 00624 M00S00622.keyex +++|100 PANEL = 1 00625 M00S00623.keyex +++| 00626 M00S00624.keyex +++|* LOAD THE OUTPUT STRING VARIABLE FOR THE PANEL. THE OUTPUT STRING 00627 M00S00625.keyex +++|* IS COMPRISED OF THE KEY NAME, LABEL, AND DEFINITION. 00628 M00S00626.keyex +++| 00629 M00S00627.keyex +++|110 P1OVAR(1:1) = PAGE(PANEL) 00630 M00S00628.keyex +++| 00631 M00S00629.keyex +++| DO 120 I = 1, NKEYSPP 00632 M00S00630.keyex +++| P1O(I)(01:05) = LABELS(PANEL, I) 00633 M00S00631.keyex +++| P1O(I)(06:12) = KEYS(BASE(PANEL) + I)(1:07) 00634 M00S00632.keyex +++| P1O(I)(13:72) = KEYS(BASE(PANEL) + I)(8:67) 00635 M00S00633.keyex +++|120 CONTINUE 00636 M00S00634.keyex +++| 00637 M00S00635.keyex +++|* SHOW KEY DEFINITION PANEL. 00638 M00S00636.keyex +++| 00639 M00S00637.keyex +++| CALL SFSSHO(P1, P1OVAR, P1IVAR) 00640 M00S00638.keyex +++| 00641 M00S00639.keyex +++| DO 130 I = 1, NKEYSPP 00642 M00S00640.keyex +++| KEYS(BASE(PANEL) + I)(1:07) = P1I(I)(06:12) 00643 M00S00641.keyex +++| KEYS(BASE(PANEL) + I)(8:67) = P1I(I)(13:72) 00644 M00S00642.keyex +++|130 CONTINUE 00645 M00S00643.keyex +++| 00646 M00S00644.keyex +++|* CHECK FOR THE LABELED KEYS *FWD*, *BKW*, AND *HELP*, IGNORING OTHERS. 00647 M00S00645.keyex +++| 00648 M00S00646.keyex +++| CALL SFGETK(TYPE, ORDINAL) 00649 M00S00647.keyex +++| IF(TYPE .EQ. 0) GOTO 140 00650 M00S00648.keyex +++| IF(ORDINAL .EQ. ORDFWD) GOTO 150 00651 M00S00649.keyex +++| IF(ORDINAL .EQ. ORDBKW) GOTO 160 00652 M00S00650.keyex +++| IF(ORDINAL .EQ. ORDHELP) GOTO 190 00653 M00S00651.keyex +++| IF (ORDINAL .EQ. ORDSTOP) GOTO 200 00654 M00S00652.keyex +++| GOTO 110 00655 M00S00653.keyex +++| 00656 M00S00654.keyex +++|* CHECK FOR APPLICATION KEYS F1, F2, F3, F4, F5, F6, F7, F8, F9. 00657 M00S00655.keyex +++| 00658 M00S00656.keyex +++|140 GOTO (150,160,170,180,190,200,210,220,230) ORDINAL 00659 M00S00657.keyex +++| GOTO 110 00660 M00S00658.keyex +++| 00661 M00S00659.keyex +++|* F1 KEY: FWD TO NEXT PANEL. 00662 M00S00660.keyex +++| 00663 M00S00661.keyex +++|150 PANEL = PANEL + 1 00664 M00S00662.keyex +++| IF (PANEL .EQ. NPAN+1) PANEL = 1 00665 M00S00663.keyex +++| GOTO 110 00666 M00S00664.keyex +++| 00667 M00S00665.keyex +++|* F2 KEY: BKW TO LAST PANEL. 00668 M00S00666.keyex +++| 00669 M00S00667.keyex +++|160 PANEL = PANEL - 1 00670 M00S00668.keyex +++| IF (PANEL .LT. 1) PANEL = 3 00671 M00S00669.keyex +++| GOTO 110 00672 M00S00670.keyex +++| 00673 M00S00671.keyex +++|* F3 KEY: UNDO ALL CHANGES AND RESTART. 00674 M00S00672.keyex +++|* REINITIALIZE *KEYS* AND *SETDATA*, AND GET USER DEFINITIONS IF ANY. 00675 M00S00673.keyex +++| 00676 M00S00674.keyex +++|170 CALL SYSKEYS 00677 M00S00675.keyex +++| CALL RDSORC 00678 M00S00676.keyex +++| GOTO 100 00679 M00S00677.keyex +++| 00680 M00S00678.keyex +++|* F4 KEY: LOAD. 00681 M00S00679.keyex +++| 00682 M00S00680.keyex +++|180 CALL SFCLOS(P1, 1) 00683 M00S00681.keyex +++| CALL WRSORC 00684 M00S00682.keyex +++| CALL LOAD 00685 M00S00683.keyex +++| RETURN 00686 M00S00684.keyex +++| 00687 M00S00685.keyex +++|* F5 KEY: SHOW HELP PANELS. 00688 M00S00686.keyex +++| 00689 M00S00687.keyex +++|190 CALL SFOPEN(P2,STAT) 00690 M00S00688.keyex +++| IF (STAT .NE. 0) THEN 00691 M00S00689.keyex +++| CALL ERR 00692 M00S00690.keyex +++| STOP 'SF ERROR.' 00693 M00S00691.keyex +++| ENDIF 00694 M00S00692.keyex +++| CALL SFSSHO(P2,P2VAR,P2VAR) 00695 M00S00693.keyex +++| CALL SFGETK(TYPE, ORDINAL) 00696 M00S00694.keyex +++| CALL SFCLOS(P2,0) 00697 M00S00695.keyex +++| IF ((TYPE .EQ. 1) .AND. (ORDINAL .EQ. ORDSTOP)) GOTO 200 00698 M00S00696.keyex +++| GOTO 110 00699 M00S00697.keyex +++| 00700 M00S00698.keyex +++|* F6 KEY: QUIT. 00701 M00S00699.keyex +++| 00702 M00S00700.keyex +++|200 CALL SFCLOS(P1,1) 00703 M00S00701.keyex +++| RETURN 00704 M00S00702.keyex +++| 00705 M00S00703.keyex +++|* F7 KEY: QUIT AND REPLACE FILE. 00706 M00S00704.keyex +++| 00707 M00S00705.keyex +++|210 CALL SFCLOS(P1,1) 00708 M00S00706.keyex +++| CALL WRSORC 00709 M00S00707.keyex +++| CALL LDSETUP 00710 M00S00708.keyex +++| WRITE(2,11) 00711 M00S00709.keyex +++| RETURN 00712 M00S00710.keyex +++| 00713 M00S00711.keyex +++|* F8 KEY: DISPLAY ASCII-HEX CHART. 00714 M00S00712.keyex +++| 00715 M00S00713.keyex +++|220 CALL SFOPEN(P3,STAT) 00716 M00S00714.keyex +++| IF (STAT .NE. 0) THEN 00717 M00S00715.keyex +++| CALL ERR 00718 M00S00716.keyex +++| STOP 'SF ERROR.' 00719 M00S00717.keyex +++| ENDIF 00720 M00S00718.keyex +++| CALL SFSREA(P3,P2VAR) 00721 M00S00719.keyex +++| CALL SFCLOS(P3,0) 00722 M00S00720.keyex +++| GOTO 110 00723 M00S00721.keyex +++| 00724 M00S00722.keyex +++|* F9 KEY: SET UP TERMINAL CHARACTERISTICS. 00725 M00S00723.keyex +++| 00726 M00S00724.keyex +++|230 CALL EDSETUP 00727 M00S00725.keyex +++| GOTO 110 00728 M00S00726.keyex +++| 00729 M00S00727.keyex +++| END 00730 M00S00728.keyex +++| 00731 M00S00729.keyex +++| 00732 M00S00730.keyex +++| SUBROUTINE EDSETUP 00733 M00S00731.keyex +++| 00734 M00S00732.keyex +++|** EDSETUP - EDIT THE SETUP TERMINAL CHARACTERISTICS. 00735 M00S00733.keyex +++|* 00736 M00S00734.keyex +++|* *EDSETUP* IS CALLED BY *EDIT* AND ALLOWS THE USER TO SET UP THE 00737 M00S00735.keyex +++|* TERMINAL CHARACTERISTICS FOR THE NUMBER PAD, SCREEN MODE, AND THE 00738 M00S00736.keyex +++|* NUMBER OF CHARACTERS PER LINE. 00739 M00S00737.keyex +++|* 00740 M00S00738.keyex +++|* CALL EDSETUP 00741 M00S00739.keyex +++|* 00742 M00S00740.keyex +++|* CALLS SFCLOS, SFGETK, SFOPEN, SFSSHO. 00743 M00S00741.keyex +++| 00744 M00S00742.keyex +++| 00745 M00S00743.keyex +++| IMPLICIT INTEGER (A - Z) 00746 M00S00744.keyex +++| 00747 M00S00745.keyex +++| PARAMETER (NKEYS = 45) 00748 M00S00746.keyex +++|* NUMBER OF DEFINABLE KEYS 00749 M00S00747.keyex +++| PARAMETER (ORDFWD = 7) 00750 M00S00748.keyex +++|* ORDINAL FOR THE FWD KEY 00751 M00S00749.keyex +++| PARAMETER (ORDBKW = 1) 00752 M00S00750.keyex +++|* ORDINAL FOR THE BKW KEY 00753 M00S00751.keyex +++| PARAMETER (ORDSTOP = 4) 00754 M00S00752.keyex +++|* ORDINAL FOR THE STOP KEY 00755 M00S00753.keyex +++| 00756 M00S00754.keyex +++| CHARACTER*7 FILENM 00757 M00S00755.keyex +++|* KEY DEFINITIONS FILE 00758 M00S00756.keyex +++| CHARACTER*67 KEYS(NKEYS) 00759 M00S00757.keyex +++|* FUNCTION KEY DEFINITIONS 00760 M00S00758.keyex +++| CHARACTER*7 PANEL4 00761 M00S00759.keyex +++|* DISPLAY PANEL FOR *EDIT* 00762 M00S00760.keyex +++| CHARACTER*7 PANEL5 00763 M00S00761.keyex +++|* DISPLAY PANEL FOR SETUP 00764 M00S00762.keyex +++| CHARACTER*7 SETDATA(3) 00765 M00S00763.keyex +++|* SETUP TERMINAL CHARACTERISTICS 00766 M00S00764.keyex +++| CHARACTER*7 STRDEF 00767 M00S00765.keyex +++|* DEFAULT STRING 00768 M00S00766.keyex +++| CHARACTER*21 PANELIO 00769 M00S00767.keyex +++|* INPUT/OUTPUT STRING FROM THE PANEL 00770 M00S00768.keyex +++| CHARACTER*21 TEMPSTR 00771 M00S00769.keyex +++|* TEMPORARY TERMINAL CHARACTERISTICS 00772 M00S00770.keyex +++| INTEGER ORDINAL 00773 M00S00771.keyex +++|* FUNCTION KEY VALUE 00774 M00S00772.keyex +++| INTEGER TYPE 00775 M00S00773.keyex +++|* TYPE OF FUNCTION KEY 00776 M00S00774.keyex +++|* 0 = PROGRAMMABLE FUNCTION KEY 00777 M00S00775.keyex +++|* 1 = LABELED FUNCTION KEY 00778 M00S00776.keyex +++| 00779 M00S00777.keyex +++| EQUIVALENCE (SETDATA(1), TEMPSTR(1:1)) 00780 M00S00778.keyex +++| 00781 M00S00779.keyex +++| COMMON / INFO / KEYS, FILENM, SETDATA 00782 M00S00780.keyex +++| 00783 M00S00781.keyex +++| DATA PANEL5 / 'KEYPAN5' / 00784 M00S00782.keyex +++| DATA PANEL4 / 'KEYPAN4' / 00785 M00S00783.keyex +++| DATA STRDEF / 'DEFAULT' / 00786 M00S00784.keyex +++| 00787 M00S00785.keyex +++| 00788 M00S00786.keyex +++|* CLOSE CURRENT *EDIT* PANEL. 00789 M00S00787.keyex +++| 00790 M00S00788.keyex +++| CALL SFCLOS(PANEL4,0) 00791 M00S00789.keyex +++| 00792 M00S00790.keyex +++|* SHOW KEY DEFINITION PANEL. 00793 M00S00791.keyex +++| 00794 M00S00792.keyex +++| CALL SFOPEN(PANEL5, STAT) 00795 M00S00793.keyex +++| IF (STAT .NE. 0) THEN 00796 M00S00794.keyex +++| CALL ERR 00797 M00S00795.keyex +++| STOP 'SF ERROR.' 00798 M00S00796.keyex +++| ENDIF 00799 M00S00797.keyex +++| PANELIO = STRDEF // STRDEF // STRDEF 00800 M00S00798.keyex +++| CALL SFSSHO(PANEL5, PANELIO, PANELIO) 00801 M00S00799.keyex +++| CALL SFGETK(TYPE, ORDINAL) 00802 M00S00800.keyex +++| CALL SFCLOS(PANEL5, 0) 00803 M00S00801.keyex +++| 00804 M00S00802.keyex +++| IF (.NOT.((TYPE .EQ. 1) .AND. (ORDINAL .EQ. ORDSTOP))) THEN 00805 M00S00803.keyex +++| CALL WRSORC 00806 M00S00804.keyex +++| TEMPSTR = PANELIO 00807 M00S00805.keyex +++| ENDIF 00808 M00S00806.keyex +++| 00809 M00S00807.keyex +++| CALL SFOPEN(PANEL4, STAT) 00810 M00S00808.keyex +++| IF (STAT .NE. 0) THEN 00811 M00S00809.keyex +++| CALL ERR 00812 M00S00810.keyex +++| STOP 'SF ERROR.' 00813 M00S00811.keyex +++| ENDIF 00814 M00S00812.keyex +++| RETURN 00815 M00S00813.keyex +++| END 00816 M00S00814.keyex +++| 00817 M00S00815.keyex +++| 00818 M00S00816.keyex +++| SUBROUTINE RDSORC 00819 M00S00817.keyex +++| 00820 M00S00818.keyex +++|** RDSORC - READ KEY DEFINITIONS FROM THE SOURCE FILE. 00821 M00S00819.keyex +++|* 00822 M00S00820.keyex +++|* *RDSORC* READS THE KEY DEFINITIONS FROM THE DEFINITION 00823 M00S00821.keyex +++|* SOURCE FILE. 00824 M00S00822.keyex +++|* 00825 M00S00823.keyex +++|* CALL RDSORC 00826 M00S00824.keyex +++|* 00827 M00S00825.keyex +++|* USES KEYS, SETDATA. 00828 M00S00826.keyex +++|* 00829 M00S00827.keyex +++|* CALLS PF. 00830 M00S00828.keyex +++| 00831 M00S00829.keyex +++| 00832 M00S00830.keyex +++| IMPLICIT INTEGER (A - Z) 00833 M00S00831.keyex +++| 00834 M00S00832.keyex +++| PARAMETER (NKEYS = 45) 00835 M00S00833.keyex +++|* NUMBER OF DEFINABLE FUNCTION KEYS 00836 M00S00834.keyex +++| 00837 M00S00835.keyex +++| CHARACTER*7 FILENM 00838 M00S00836.keyex +++|* KEY DEFINITIONS FILE 00839 M00S00837.keyex +++| CHARACTER*60 KEYDEF 00840 M00S00838.keyex +++|* FUNCTION KEY DEFINITION 00841 M00S00839.keyex +++| CHARACTER*67 KEYS(NKEYS) 00842 M00S00840.keyex +++|* LABEL AND KEYDEF 00843 M00S00841.keyex +++| CHARACTER*7 LABEL 00844 M00S00842.keyex +++|* FUNCTION KEY LABEL 00845 M00S00843.keyex +++| CHARACTER*7 SETDATA(3) 00846 M00S00844.keyex +++|* SETUP TERMINAL CHARACTERISTICS 00847 M00S00845.keyex +++| 00848 M00S00846.keyex +++| COMMON / INFO / KEYS, FILENM, SETDATA 00849 M00S00847.keyex +++| 00850 M00S00848.keyex +++|10 FORMAT(A7, 1X, A60) 00851 M00S00849.keyex +++|20 FORMAT(A7) 00852 M00S00850.keyex +++| 00853 M00S00851.keyex +++|* READ USER KEY DEFINITION FILE, IF ANY. 00854 M00S00852.keyex +++| 00855 M00S00853.keyex +++| CALL PF('GET', 'TAPE1', FILENM, 'NA', IGNORE) 00856 M00S00854.keyex +++| 00857 M00S00855.keyex +++|* SOURCE FILE CONSISTS OF FUNCTION KEY LABELS, 00858 M00S00856.keyex +++|* KEY DEFINITIONS, AND THE TERMINAL'S SETUP DATA. 00859 M00S00857.keyex +++| 00860 M00S00858.keyex +++| DO 110 I = 1, NKEYS 00861 M00S00859.keyex +++| READ(1, 10, END=130) LABEL, KEYDEF 00862 M00S00860.keyex +++| IF(KEYDEF .NE. ' ') THEN 00863 M00S00861.keyex +++| KEYS(I)(1:07) = LABEL 00864 M00S00862.keyex +++| KEYS(I)(8:67) = KEYDEF 00865 M00S00863.keyex +++| ENDIF 00866 M00S00864.keyex +++|110 CONTINUE 00867 M00S00865.keyex +++| 00868 M00S00866.keyex +++| DO 120 I = 1, 3 00869 M00S00867.keyex +++| READ(1, 20, END=130) SETDATA(I) 00870 M00S00868.keyex +++|120 CONTINUE 00871 M00S00869.keyex +++| 00872 M00S00870.keyex +++|130 REWIND 1 00873 M00S00871.keyex +++| RETURN 00874 M00S00872.keyex +++| END 00875 M00S00873.keyex +++| 00876 M00S00874.keyex +++| 00877 M00S00875.keyex +++| 00878 M00S00876.keyex +++| SUBROUTINE HELP 00879 M00S00877.keyex +++| 00880 M00S00878.keyex +++|** HELP - PROVIDE HELP INFORMATION FOR THE *KEY* UTILITY. 00881 M00S00879.keyex +++|* 00882 M00S00880.keyex +++|* *HELP* GIVES THE USER INFORMATION ON THE *KEY* UTILITY, 00883 M00S00881.keyex +++|* USING SCREEN FORMATTING DISPLAY PANELS. 00884 M00S00882.keyex +++|* 00885 M00S00883.keyex +++|* CALL HELP 00886 M00S00884.keyex +++|* 00887 M00S00885.keyex +++|* CALLS ERR, SFCLOS, SFOPEN, SFSSHO. 00888 M00S00886.keyex +++|* 00889 M00S00887.keyex +++|* MESSAGES 00890 M00S00888.keyex +++|* PLEASE ENTER THE SYSTEM COMMAND: SCREEN,721. 00891 M00S00889.keyex +++|* AND RE-ENTER THE KEY COMMAND. 00892 M00S00890.keyex +++|* STOP. FIX ERROR. 00893 M00S00891.keyex +++| 00894 M00S00892.keyex +++| 00895 M00S00893.keyex +++| IMPLICIT INTEGER (A - Z) 00896 M00S00894.keyex +++| 00897 M00S00895.keyex +++| PARAMETER (ORDBKW = 8) 00898 M00S00896.keyex +++|* ORDINAL FOR THE BKW KEY 00899 M00S00897.keyex +++| PARAMETER (ORDSTOP = 4) 00900 M00S00898.keyex +++|* ORDINAL FOR THE STOP KEY 00901 M00S00899.keyex +++| 00902 M00S00900.keyex +++| CHARACTER*7 PANEL1 00903 M00S00901.keyex +++|* FIRST HELP PANEL 00904 M00S00902.keyex +++| CHARACTER*7 PANEL2 00905 M00S00903.keyex +++|* SECOND HELP PANEL 00906 M00S00904.keyex +++| CHARACTER*1 PANELIO 00907 M00S00905.keyex +++|* OUTPUT STRING FOR THE PANEL 00908 M00S00906.keyex +++| INTEGER ORDINAL 00909 M00S00907.keyex +++|* SCREEN FORMATTING KEY ORDINAL 00910 M00S00908.keyex +++| INTEGER STAT 00911 M00S00909.keyex +++|* *SFOPEN* RETURN STATUS 00912 M00S00910.keyex +++| INTEGER TYPE 00913 M00S00911.keyex +++|* SCREEN FORMATTING KEY TYPE 00914 M00S00912.keyex +++| 00915 M00S00913.keyex +++| DATA PANEL1 / 'KEYPAN1' / 00916 M00S00914.keyex +++| DATA PANEL2 / 'KEYPAN2' / 00917 M00S00915.keyex +++| 00918 M00S00916.keyex +++|10 FORMAT(' PLEASE ENTER THE SYSTEM COMMAND: SCREEN,721.', 00919 M00S00917.keyex +++| ./' AND RE-ENTER THE KEY COMMAND.') 00920 M00S00918.keyex +++| 00921 M00S00919.keyex +++| 00922 M00S00920.keyex +++|* SHOW HELP PANELS. 00923 M00S00921.keyex +++| 00924 M00S00922.keyex +++| 100 CALL SFOPEN(PANEL1, STAT) 00925 M00S00923.keyex +++| IF (STAT .NE. 0) THEN 00926 M00S00924.keyex +++| WRITE(2,10) 00927 M00S00925.keyex +++| CALL ERR 00928 M00S00926.keyex +++| STOP 'SF ERROR.' 00929 M00S00927.keyex +++| ENDIF 00930 M00S00928.keyex +++| CALL SFSSHO(PANEL1, PANELIO,PANELIO) 00931 M00S00929.keyex +++| CALL SFGETK(TYPE,ORDINAL) 00932 M00S00930.keyex +++| CALL SFCLOS(PANEL1, 0) 00933 M00S00931.keyex +++| IF ((TYPE .EQ. 1) .AND. (ORDINAL .EQ. ORDSTOP)) RETURN 00934 M00S00932.keyex +++| CALL SFOPEN(PANEL2, STAT) 00935 M00S00933.keyex +++| IF (STAT .NE. 0) THEN 00936 M00S00934.keyex +++| WRITE(2,10) 00937 M00S00935.keyex +++| CALL ERR 00938 M00S00936.keyex +++| STOP 'SF ERROR.' 00939 M00S00937.keyex +++| ENDIF 00940 M00S00938.keyex +++| CALL SFSSHO(PANEL2, PANELIO,PANELIO) 00941 M00S00939.keyex +++| CALL SFCLOS(PANEL2, 1) 00942 M00S00940.keyex +++| CALL SFGETK(TYPE,ORDINAL) 00943 M00S00941.keyex +++| CALL SFCLOS(PANEL2, 0) 00944 M00S00942.keyex +++| IF ((TYPE .EQ. 1) .AND. (ORDINAL .EQ. ORDBKW)) GOTO 100 00945 M00S00943.keyex +++| RETURN 00946 M00S00944.keyex +++| END 00947 M00S00945.keyex +++| 00948 M00S00946.keyex +++| 00949 M00S00947.keyex +++| SUBROUTINE LDSETUP 00950 M00S00948.keyex +++| 00951 M00S00949.keyex +++|** LDSETUP - SET UP TERMINAL CHARACTERISTICS. 00952 M00S00950.keyex +++|* 00953 M00S00951.keyex +++|* *LDSETUP* SETS THE TERMINAL CHARACTERISTICS FOR THE NUMBER PAD, 00954 M00S00952.keyex +++|* SCREEN MODE, AND THE NUMBER OF CHARACTERS PER LINE. 00955 M00S00953.keyex +++|* 00956 M00S00954.keyex +++|* CALL LDSETUP 00957 M00S00955.keyex +++|* 00958 M00S00956.keyex +++|* CALLS PACK, SEQPACK. 00959 M00S00957.keyex +++|* 00960 M00S00958.keyex +++|* NOTE *RDSORC* MUST BE CALLED BEFORE THIS CODE IS PROCESSED TO 00961 M00S00959.keyex +++|* ENSURE THAT THE PROPER TERMINAL DEFINITIONS ARE LOADED. 00962 M00S00960.keyex +++| 00963 M00S00961.keyex +++| 00964 M00S00962.keyex +++| IMPLICIT INTEGER (A - Z) 00965 M00S00963.keyex +++| 00966 M00S00964.keyex +++| PARAMETER (KEYL = 45) 00967 M00S00965.keyex +++|* NUMBER OF PROGRAMMABLE FUNCTION KEYS 00968 M00S00966.keyex +++| 00969 M00S00967.keyex +++| BOOLEAN ZCARRET 00970 M00S00968.keyex +++|* HEX CODE FOR CARRIAGE RETURN 00971 M00S00969.keyex +++| BOOLEAN ZNUMCHR(3) 00972 M00S00970.keyex +++|* HEX SEQUENCE FOR CHARACTERS PER LINE 00973 M00S00971.keyex +++| BOOLEAN ZNUMPAD(3) 00974 M00S00972.keyex +++|* HEX SEQUENCE FOR NUMBER PAD CONDITION 00975 M00S00973.keyex +++| BOOLEAN ZOFFSET 00976 M00S00974.keyex +++|* HEX CODE FOR ADDRESS OFFSET 00977 M00S00975.keyex +++| BOOLEAN ZMODE 00978 M00S00976.keyex +++|* HEX CODE FOR SCREEN MODE 00979 M00S00977.keyex +++| BOOLEAN ZROLL 00980 M00S00978.keyex +++|* HEX CODE FOR ROLL PAGE MODE 00981 M00S00979.keyex +++| BOOLEAN ZSHIFT 00982 M00S00980.keyex +++|* HEX CODE FOR SHIFTED NUMERIC PAD CODE 00983 M00S00981.keyex +++| BOOLEAN Z132 00984 M00S00982.keyex +++|* HEX CODE FOR 132 CHARACTERS PER LINE 00985 M00S00983.keyex +++| CHARACTER*7 FILENM 00986 M00S00984.keyex +++|* FILE NAME OF KEY DEFINITIONS 00987 M00S00985.keyex +++| CHARACTER*67 KEYS(KEYL) 00988 M00S00986.keyex +++|* FUNCTION KEY DEFINTIONS 00989 M00S00987.keyex +++| CHARACTER*7 SETDATA(3) 00990 M00S00988.keyex +++|* TERMINAL SETUP DATA 00991 M00S00989.keyex +++| CHARACTER*7 STRDEF 00992 M00S00990.keyex +++|* DEFAULT STRING 00993 M00S00991.keyex +++| CHARACTER*7 STRROL 00994 M00S00992.keyex +++|* ROLL STRING 00995 M00S00993.keyex +++| CHARACTER*7 STRSHI 00996 M00S00994.keyex +++|* SHIFTED STRING 00997 M00S00995.keyex +++| CHARACTER*7 STR132 00998 M00S00996.keyex +++|* 132 STRING 00999 M00S00997.keyex +++| LOGICAL DEFNCHR 01000 M00S00998.keyex +++|* DEFAULT NUMBER OF CHARACTERS PER LINE 01001 M00S00999.keyex +++| LOGICAL DEFNPAD 01002 M00S01000.keyex +++|* DEFAULT NUMERIC PAD SETTING 01003 M00S01001.keyex +++| LOGICAL DEFPAGE 01004 M00S01002.keyex +++|* DEFAULT PAGINATION SETTING 01005 M00S01003.keyex +++| 01006 M00S01004.keyex +++| COMMON / INFO / KEYS, FILENM, SETDATA 01007 M00S01005.keyex +++| 01008 M00S01006.keyex +++| DATA ZCARRET / Z"0D" / 01009 M00S01007.keyex +++| DATA ZNUMCHR / Z"1E", Z"12", Z"48" / 01010 M00S01008.keyex +++| DATA ZNUMPAD / Z"1E", Z"12", Z"6C" / 01011 M00S01009.keyex +++| DATA ZOFFSET / Z"800" / 01012 M00S01010.keyex +++| DATA ZMODE / Z"16" / 01013 M00S01011.keyex +++| DATA ZROLL / Z"12" / 01014 M00S01012.keyex +++| DATA ZSHIFT / Z"6B" / 01015 M00S01013.keyex +++| DATA Z132 / Z"47" / 01016 M00S01014.keyex +++| DATA STRDEF / 'DEFAULT' / 01017 M00S01015.keyex +++| DATA STRROL / 'ROLL ' / 01018 M00S01016.keyex +++| DATA STRSHI / 'SHIFTED' / 01019 M00S01017.keyex +++| DATA STR132 / '132 ' / 01020 M00S01018.keyex +++| DATA DEFNCHR / .TRUE. / 01021 M00S01019.keyex +++| DATA DEFNPAD / .TRUE. / 01022 M00S01020.keyex +++| DATA DEFPAGE / .TRUE. / 01023 M00S01021.keyex +++| 01024 M00S01022.keyex +++| IF(SETDATA(1).NE. STRDEF) DEFNPAD = .FALSE. 01025 M00S01023.keyex +++| IF(SETDATA(2).NE. STRDEF) DEFPAGE = .FALSE. 01026 M00S01024.keyex +++| IF(SETDATA(3).NE. STRDEF) DEFNCHR = .FALSE. 01027 M00S01025.keyex +++| 01028 M00S01026.keyex +++| IF (.NOT.(DEFNPAD .AND. DEFPAGE .AND. DEFNCHR)) THEN 01029 M00S01027.keyex +++| CALL PACK(1, 0) 01030 M00S01028.keyex +++| ELSE 01031 M00S01029.keyex +++| RETURN 01032 M00S01030.keyex +++| ENDIF 01033 M00S01031.keyex +++| 01034 M00S01032.keyex +++| IF (.NOT.DEFNPAD) THEN 01035 M00S01033.keyex +++| IF(SETDATA(1) .EQ. STRSHI) ZNUMPAD(3) = ZSHIFT 01036 M00S01034.keyex +++| CALL SEQPACK(ZNUMPAD, 3) 01037 M00S01035.keyex +++| ENDIF 01038 M00S01036.keyex +++| 01039 M00S01037.keyex +++| IF (.NOT.DEFPAGE) THEN 01040 M00S01038.keyex +++| IF(SETDATA(2) .EQ. STRROL) ZMODE = ZROLL 01041 M00S01039.keyex +++| CALL PACK(2, ZOFFSET + ZMODE) 01042 M00S01040.keyex +++| ENDIF 01043 M00S01041.keyex +++| 01044 M00S01042.keyex +++| IF (.NOT.DEFNCHR) THEN 01045 M00S01043.keyex +++| IF(SETDATA(3) .EQ. STR132) ZNUMCHR(3) = Z132 01046 M00S01044.keyex +++| CALL SEQPACK(ZNUMCHR, 3) 01047 M00S01045.keyex +++| ENDIF 01048 M00S01046.keyex +++| 01049 M00S01047.keyex +++| IF (.NOT.(DEFNPAD .AND. DEFPAGE .AND. DEFNCHR)) THEN 01050 M00S01048.keyex +++| 01051 M00S01049.keyex +++|* SEND A CARRIAGE RETURN IF A SEQUENCE WAS SENT TO THE TERMINAL. 01052 M00S01050.keyex +++| 01053 M00S01051.keyex +++| CALL PACK(2, ZOFFSET + ZCARRET) 01054 M00S01052.keyex +++| CALL PACK(3, 1) 01055 M00S01053.keyex +++| ENDIF 01056 M00S01054.keyex +++| RETURN 01057 M00S01055.keyex +++| END 01058 M00S01056.keyex +++| 01059 M00S01057.keyex +++| 01060 M00S01058.keyex +++| SUBROUTINE LOAD 01061 M00S01059.keyex +++| 01062 M00S01060.keyex +++|** LOAD - LOAD DEFINITIONS INTO TERMINAL. 01063 M00S01061.keyex +++|* 01064 M00S01062.keyex +++|* *LOAD* LOADS THE TERMINAL WITH BOTH FUNCTION KEY DEFINITIONS 01065 M00S01063.keyex +++|* AND LABELS, AND MODIFIES TERMINAL CHARACTERISTICS. 01066 M00S01064.keyex +++|* 01067 M00S01065.keyex +++|* CALL LOAD 01068 M00S01066.keyex +++|* 01069 M00S01067.keyex +++|* CALLS CLEAR, LDSETUP, RDSORC, SEND. 01070 M00S01068.keyex +++|* 01071 M00S01069.keyex +++|* MESSAGES 01072 M00S01070.keyex +++|* FUNCTION KEYS HAVE BEEN LOADED. 01073 M00S01071.keyex +++| 01074 M00S01072.keyex +++| 01075 M00S01073.keyex +++| IMPLICIT INTEGER (A - Z) 01076 M00S01074.keyex +++| 01077 M00S01075.keyex +++|10 FORMAT(' FUNCTION KEYS HAVE BEEN LOADED.') 01078 M00S01076.keyex +++| 01079 M00S01077.keyex +++|* READ SOURCE FILE INTO COMMON BLOCK. 01080 M00S01078.keyex +++| 01081 M00S01079.keyex +++| CALL RDSORC 01082 M00S01080.keyex +++| 01083 M00S01081.keyex +++|* CLEAR FUNCTION KEYS OF PREVIOUS DEFINITIONS. 01084 M00S01082.keyex +++| 01085 M00S01083.keyex +++| CALL CLEAR 01086 M00S01084.keyex +++| 01087 M00S01085.keyex +++|* DOWNLINE LOAD CURRENT DEFINITIONS INTO TERMINAL. 01088 M00S01086.keyex +++| 01089 M00S01087.keyex +++| CALL SEND 01090 M00S01088.keyex +++| 01091 M00S01089.keyex +++|* CHANGE THE SPECIFIED TERMINAL CHARACTERISTICS. 01092 M00S01090.keyex +++| 01093 M00S01091.keyex +++| CALL LDSETUP 01094 M00S01092.keyex +++| WRITE (2,10) 01095 M00S01093.keyex +++| ENDFILE 2 01096 M00S01094.keyex +++| RETURN 01097 M00S01095.keyex +++| END 01098 M00S01096.keyex +++| 01099 M00S01097.keyex +++| 01100 M00S01098.keyex +++| SUBROUTINE PACK(CODE, BYTE) 01101 M00S01099.keyex +++| 01102 M00S01100.keyex +++|** PACK - PACK BUFFER AND WRITE TO TERMINAL. 01103 M00S01101.keyex +++|* 01104 M00S01102.keyex +++|* *PACK* PACKS 4 BYTES INTO A BUFFER AND WRITES 01105 M00S01103.keyex +++|* THE BUFFER TO THE TERMINAL. 01106 M00S01104.keyex +++|* 01107 M00S01105.keyex +++|* CALL PACK(CODE, BYTE) 01108 M00S01106.keyex +++|* 01109 M00S01107.keyex +++|* ENTRY CODE = 1, FIRST BYTE IN BUFFER. 01110 M00S01108.keyex +++|* = 2, BYTE TO PLACE IN BUFFER. 01111 M00S01109.keyex +++|* = 3, LAST BYTE TO PLACE IN BUFFER. 01112 M00S01110.keyex +++|* 01113 M00S01111.keyex +++|* BYTE = Z80 BYTE TO BE PACKED AND WRITTEN TO TERMINAL. 01114 M00S01112.keyex +++|* 01115 M00S01113.keyex +++|* CALLS CONNEC. 01116 M00S01114.keyex +++|* 01117 M00S01115.keyex +++|* NOTES BUFFER FORMAT IS 00074---4---4---4---. 01118 M00S01116.keyex +++|* 01119 M00S01117.keyex +++|* MESSAGES 01120 M00S01118.keyex +++|* NO KEYS SPECIFIED. 01121 M00S01119.keyex +++|* NO KEYS WERE SPECIFIED TO BE SENT. 01122 M00S01120.keyex +++|* BUFFER OVERFLOW IN PACK. 01123 M00S01121.keyex +++|* BUFFER SIZE EXCEEDED LIMITS. 01124 M00S01122.keyex +++| 01125 M00S01123.keyex +++| 01126 M00S01124.keyex +++| IMPLICIT INTEGER (A - Z) 01127 M00S01125.keyex +++| 01128 M00S01126.keyex +++| PARAMETER (NUMKEYS = 45) 01129 M00S01127.keyex +++|* NUMBER OF DEFINABLE KEYS 01130 M00S01128.keyex +++| PARAMETER (STORCHR = 70) 01131 M00S01129.keyex +++|* STORED CHARACTERS PER DEFINITION 01132 M00S01130.keyex +++| PARAMETER (SIZE = (NUMKEYS * STORCHR) + 200) 01133 M00S01131.keyex +++|* BUFFER SIZE 01134 M00S01132.keyex +++| 01135 M00S01133.keyex +++| DIMENSION BUF(SIZE) 01136 M00S01134.keyex +++|* OUTPUT BUFFER 01137 M00S01135.keyex +++| INTEGER BYT 01138 M00S01136.keyex +++|* Z80 CODE DIVIDER 01139 M00S01137.keyex +++| INTEGER BYTE 01140 M00S01138.keyex +++|* Z80 BYTE CODE 01141 M00S01139.keyex +++| INTEGER PTR 01142 M00S01140.keyex +++|* INDEX FOR *BUF* 01143 M00S01141.keyex +++| 01144 M00S01142.keyex +++|* PACK *BYTE* INTO BUFFER FOR GIVEN *CODE*. 01145 M00S01143.keyex +++| 01146 M00S01144.keyex +++| GOTO (100, 200, 300), CODE 01147 M00S01145.keyex +++| 01148 M00S01146.keyex +++|* CODE = 1. SET UP INITIAL CODE IN BUFFER. 01149 M00S01147.keyex +++| 01150 M00S01148.keyex +++|100 PTR = 0 01151 M00S01149.keyex +++| BYT = 0 01152 M00S01150.keyex +++| BYTE = 07 01153 M00S01151.keyex +++| 01154 M00S01152.keyex +++|* CODE = 2. PACK DATA INTO BUFFER. 01155 M00S01153.keyex +++| 01156 M00S01154.keyex +++|200 BYT = BYT - 1 01157 M00S01155.keyex +++| 01158 M00S01156.keyex +++| IF(BYT .LT. 0) THEN 01159 M00S01157.keyex +++| BYT = 4 01160 M00S01158.keyex +++| PTR = PTR + 1 01161 M00S01159.keyex +++| BUF(PTR) = 0 01162 M00S01160.keyex +++| ENDIF 01163 M00S01161.keyex +++| 01164 M00S01162.keyex +++| BUF(PTR) = OR(BUF(PTR), SHIFT(BYTE, BYT*12)) 01165 M00S01163.keyex +++| RETURN 01166 M00S01164.keyex +++| 01167 M00S01165.keyex +++|* CHECK FOR ERRORS BEFORE STARTING I/O. 01168 M00S01166.keyex +++| 01169 M00S01167.keyex +++|300 IF(PTR .LT. 1) STOP ' NO KEYS SPECIFIED.' 01170 M00S01168.keyex +++| 01171 M00S01169.keyex +++| IF(PTR .GT. SIZE) STOP ' BUFFER OVERFLOW IN PACK ' 01172 M00S01170.keyex +++| 01173 M00S01171.keyex +++|* OUTPUT INFORMATION WITHOUT HEADER BYTES. 01174 M00S01172.keyex +++| 01175 M00S01173.keyex +++| CALL CONNEC(3) 01176 M00S01174.keyex +++| BUFFER OUT(3, 0) (BUF(1), BUF(PTR)) 01177 M00S01175.keyex +++| 01178 M00S01176.keyex +++|* LOOP UNTIL I/O COMPLETES. 01179 M00S01177.keyex +++| 01180 M00S01178.keyex +++| IF(UNIT(3))310,320,320 01181 M00S01179.keyex +++|310 CONTINUE 01182 M00S01180.keyex +++|320 CONTINUE 01183 M00S01181.keyex +++| RETURN 01184 M00S01182.keyex +++| END 01185 M00S01183.keyex +++| 01186 M00S01184.keyex +++| 01187 M00S01185.keyex +++| SUBROUTINE PRINT 01188 M00S01186.keyex +++| 01189 M00S01187.keyex +++|** PRINT - PRINT FUNCTION KEYS TO SPECIFIED FILE. 01190 M00S01188.keyex +++|* 01191 M00S01189.keyex +++|* *PRINT* COPIES ALL DEFINED FUNCTION KEYS FROM THE SPECIFIED FILE 01192 M00S01190.keyex +++|* TO THE LOCAL FILE *KEYPRNT*. 01193 M00S01191.keyex +++|* 01194 M00S01192.keyex +++|* CALL PRINT 01195 M00S01193.keyex +++|* 01196 M00S01194.keyex +++|* CALLS RDSORC. 01197 M00S01195.keyex +++|* 01198 M00S01196.keyex +++|* MESSAGES 01199 M00S01197.keyex +++|* THE LIST OF DEFINED FUNCTION KEYS IS ON THE LOCAL 01200 M00S01198.keyex +++|* FILE *KEYPRNT*. 01201 M00S01199.keyex +++| 01202 M00S01200.keyex +++| 01203 M00S01201.keyex +++| IMPLICIT INTEGER (A - Z) 01204 M00S01202.keyex +++| 01205 M00S01203.keyex +++| PARAMETER (NKEYS = 45) 01206 M00S01204.keyex +++|* NUMBER OF DEFINABLE FUNCTION KEYS 01207 M00S01205.keyex +++| PARAMETER (NKEY = 15) 01208 M00S01206.keyex +++|* NUMBER OF KEYS PER SECTION OF *KEYS* 01209 M00S01207.keyex +++| PARAMETER (NPAN = 3) 01210 M00S01208.keyex +++|* NUMBER OF SECTIONS IN *KEYS* 01211 M00S01209.keyex +++| 01212 M00S01210.keyex +++| CHARACTER*7 FILENM 01213 M00S01211.keyex +++|* KEY DEFINITIONS FILE 01214 M00S01212.keyex +++| CHARACTER*5 LABELS(NPAN, NKEY) 01215 M00S01213.keyex +++|* FUNCTION KEY LABELS 01216 M00S01214.keyex +++| CHARACTER*67 KEYS(NKEYS) 01217 M00S01215.keyex +++|* FUNCTION KEY DEFINITIONS 01218 M00S01216.keyex +++| CHARACTER*7 SETDATA(3) 01219 M00S01217.keyex +++|* SETUP TERMINAL CHARACTERISTICS 01220 M00S01218.keyex +++| 01221 M00S01219.keyex +++| COMMON / INFO / KEYS, FILENM, SETDATA 01222 M00S01220.keyex +++| 01223 M00S01221.keyex +++| DATA (LABELS(1, I), I = 1, NKEY) / 01224 M00S01222.keyex +++| . 'F1 ', 'F2 ', 'F3 ', 'F4 ', 'F5 ' 01225 M00S01223.keyex +++| ., 'F6 ', 'F7 ', 'F8 ', 'F9 ', 'F10 ' 01226 M00S01224.keyex +++| ., 'F11 ', 'F12 ', 'F13 ', 'F14 ', 'F15 ' 01227 M00S01225.keyex +++| ./ 01228 M00S01226.keyex +++| DATA (LABELS(2, I), I = 1, NKEY) / 01229 M00S01227.keyex +++| . 'RTAB ', 'LTAB ', 'NEXT ', 'DOWN ', 'UP ' 01230 M00S01228.keyex +++| ., 'FWD ', 'BKW ', 'HELP ', 'ERASE ', 'EDIT ' 01231 M00S01229.keyex +++| ., 'BACK ', 'LAB ', 'DATA ', 'STOP ', 'INSRT ' 01232 M00S01230.keyex +++| ./ 01233 M00S01231.keyex +++| DATA (LABELS(3, I), I = 1, NKEY) / 01234 M00S01232.keyex +++| . 'DLETE', 'CLEAR', 'PRINT', 'PAD 1 ', 'PAD 2 ' 01235 M00S01233.keyex +++| ., 'PAD 3', 'PAD 4', 'PAD 5', 'PAD 6 ', 'PAD 7 ' 01236 M00S01234.keyex +++| ., 'PAD 8', 'PAD 9', 'PAD 0', 'PAD , ', 'PAD . ' 01237 M00S01235.keyex +++| ./ 01238 M00S01236.keyex +++| 01239 M00S01237.keyex +++|10 FORMAT(5X, 'KEY DEFINITION UTILITY.',// 01240 M00S01238.keyex +++| .3X,'KEY LABEL KEY DEFINITIONS'/ 01241 M00S01239.keyex +++| .3X,'--- ----- ---------------') 01242 M00S01240.keyex +++|11 FORMAT(1X, A7, 1X, A7, 1X, A60) 01243 M00S01241.keyex +++|12 FORMAT(' THE LIST OF DEFINED FUNCTION KEYS IS ON THE', 01244 M00S01242.keyex +++| .' LOCAL FILE *KEYPRNT*.') 01245 M00S01243.keyex +++|13 FORMAT(/7X,'TERMINAL CHARACTERISTICS',/ 01246 M00S01244.keyex +++| .7X,'-------- ---------------',/ 01247 M00S01245.keyex +++| .9X,'NUMBER PAD - ',A7,/9X,'SCREEN MODE - ',A7/ 01248 M00S01246.keyex +++| .9X,'CHARS./ LINE - ',A7) 01249 M00S01247.keyex +++| 01250 M00S01248.keyex +++|* GET FILE AND OUTPUT USER DEFINED FUNCTION KEYS. 01251 M00S01249.keyex +++| 01252 M00S01250.keyex +++| CALL RDSORC 01253 M00S01251.keyex +++| REWIND 6 01254 M00S01252.keyex +++| WRITE(6, 10) 01255 M00S01253.keyex +++| DO 110 I = 1, NPAN 01256 M00S01254.keyex +++| DO 100 J = 1, NKEY 01257 M00S01255.keyex +++| IF(I .EQ. 1) THEN 01258 M00S01256.keyex +++| IF(KEYS(J)(1:7) .NE. ' ') THEN 01259 M00S01257.keyex +++| WRITE(6,11) LABELS(I,J), KEYS(J)(1:7), 01260 M00S01258.keyex +++| . KEYS(J)(8:67) 01261 M00S01259.keyex +++| ENDIF 01262 M00S01260.keyex +++| ENDIF 01263 M00S01261.keyex +++| IF(I .EQ. 2) THEN 01264 M00S01262.keyex +++| IF(KEYS(J + 15)(1:7) .NE. ' ') THEN 01265 M00S01263.keyex +++| WRITE(6,11) LABELS(I,J), KEYS(J+15)(1:7), 01266 M00S01264.keyex +++| . KEYS(J+15)(8:67) 01267 M00S01265.keyex +++| ENDIF 01268 M00S01266.keyex +++| ENDIF 01269 M00S01267.keyex +++| IF(I .EQ. 3) THEN 01270 M00S01268.keyex +++| IF(KEYS(J + 30)(1:7) .NE. ' ') THEN 01271 M00S01269.keyex +++| WRITE(6, 11) LABELS(I, J), KEYS(J+30)(1:7), 01272 M00S01270.keyex +++| . KEYS(J+30)(8:67) 01273 M00S01271.keyex +++| ENDIF 01274 M00S01272.keyex +++| ENDIF 01275 M00S01273.keyex +++|100 CONTINUE 01276 M00S01274.keyex +++|110 CONTINUE 01277 M00S01275.keyex +++| 01278 M00S01276.keyex +++|* OUTPUT USER DEFINED TERMINAL SETUP CHARACTERISTICS. 01279 M00S01277.keyex +++| 01280 M00S01278.keyex +++| WRITE(6,13) SETDATA 01281 M00S01279.keyex +++| REWIND 6 01282 M00S01280.keyex +++| WRITE(2,12) 01283 M00S01281.keyex +++| ENDFILE 2 01284 M00S01282.keyex +++| RETURN 01285 M00S01283.keyex +++| END 01286 M00S01284.keyex +++| 01287 M00S01285.keyex +++| 01288 M00S01286.keyex +++| SUBROUTINE SEND 01289 M00S01287.keyex +++| 01290 M00S01288.keyex +++|** SEND - TRANSFER KEY DEFINITIONS FROM SYSTEM INTO TERMINAL. 01291 M00S01289.keyex +++|* 01292 M00S01290.keyex +++|* *SEND* TRANSFERS THE KEY DEFINITIONS, KEY LABELS, AND Z80 01293 M00S01291.keyex +++|* ROUTINES INTO THE TERMINAL. 01294 M00S01292.keyex +++|* 01295 M00S01293.keyex +++|* CALL SEND 01296 M00S01294.keyex +++|* 01297 M00S01295.keyex +++|* CALLS BYTE, PACK, ZSNDADD, ZSNDCHR, Z80CODE. 01298 M00S01296.keyex +++| 01299 M00S01297.keyex +++| 01300 M00S01298.keyex +++| IMPLICIT INTEGER (A - Z) 01301 M00S01299.keyex +++| 01302 M00S01300.keyex +++| PARAMETER (NKEYS = 45) 01303 M00S01301.keyex +++|* NUMBER OF DEFINABLE FUNCTION KEYS 01304 M00S01302.keyex +++| 01305 M00S01303.keyex +++| BOOLEAN ZBASE 01306 M00S01304.keyex +++|* HEX CODE FOR KEY TABLE OFFSET 01307 M00S01305.keyex +++| BOOLEAN ZCARRET(1) 01308 M00S01306.keyex +++|* HEX CODE FOR CARRIAGE RETURN 01309 M00S01307.keyex +++| BOOLEAN ZDEFKEY(4) 01310 M00S01308.keyex +++|* HEX SEQUENCE TO DEFINE FUNCTION KEY 01311 M00S01309.keyex +++| BOOLEAN ZDISKEY(3) 01312 M00S01310.keyex +++|* HEX SEQUENCE TO DISABLE KEYBOARD ENTRY 01313 M00S01311.keyex +++| BOOLEAN ZDISRET(3) 01314 M00S01312.keyex +++|* HEX SEQUENCE TO DISABLE CARRIAGE RETURN 01315 M00S01313.keyex +++| BOOLEAN ZECHO 01316 M00S01314.keyex +++|* HEX CODE FOR ECHO 01317 M00S01315.keyex +++| BOOLEAN ZECHOFF 01318 M00S01316.keyex +++|* HEX CODE FOR ECHO OFF 01319 M00S01317.keyex +++| BOOLEAN ZECHON 01320 M00S01318.keyex +++|* HEX CODE FOR ECHO ON 01321 M00S01319.keyex +++| BOOLEAN ZENBIAS(2) 01322 M00S01320.keyex +++|* HEX SEQUENCE TO ENABLE BIAS 01323 M00S01321.keyex +++| BOOLEAN ZENRETN(2) 01324 M00S01322.keyex +++|* HEX SEQUENCE TO ENABLE CARRIAGE RETURN 01325 M00S01323.keyex +++| BOOLEAN ZENKEYB(3) 01326 M00S01324.keyex +++|* HEX SEQUENCE TO ENABLE KEYBOARD ENTRY 01327 M00S01325.keyex +++| BOOLEAN ZTRMKEY(2) 01328 M00S01326.keyex +++|* HEX SEQUENCE TO TERMINATE KEY DEFINITIONS 01329 M00S01327.keyex +++| CHARACTER*7 FILENM 01330 M00S01328.keyex +++|* KEY DEFINITIONS FILE 01331 M00S01329.keyex +++| CHARACTER*67 KEYS(NKEYS) 01332 M00S01330.keyex +++|* FUNCTION KEY DEFINITIONS 01333 M00S01331.keyex +++| CHARACTER*7 SETDATA(3) 01334 M00S01332.keyex +++|* SETUP DATA 01335 M00S01333.keyex +++| INTEGER ASCII 01336 M00S01334.keyex +++|* Z80 CHARACTER 01337 M00S01335.keyex +++| INTEGER LASTNB 01338 M00S01336.keyex +++|* LAST NON-BLANK CHARACTER 01339 M00S01337.keyex +++| 01340 M00S01338.keyex +++| COMMON / INFO / KEYS, FILENM, SETDATA 01341 M00S01339.keyex +++| 01342 M00S01340.keyex +++| DATA ADDR / Z"C002"/ 01343 M00S01341.keyex +++| DATA ADDL / Z"C000"/ 01344 M00S01342.keyex +++| DATA ZBASE / Z"30" / 01345 M00S01343.keyex +++| DATA ZCARRET / Z"0D" / 01346 M00S01344.keyex +++| DATA ZDEFKEY / Z"1E", Z"09", Z"30", Z"34" / 01347 M00S01345.keyex +++| DATA ZDISKEY / Z"1E", Z"12", Z"4D" / 01348 M00S01346.keyex +++| DATA ZDISRET / Z"1E", Z"12", Z"5A" / 01349 M00S01347.keyex +++| DATA ZECHON / Z"34" / 01350 M00S01348.keyex +++| DATA ZECHOFF / Z"31" / 01351 M00S01349.keyex +++| DATA ZENBIAS / Z"1E", Z"30" / 01352 M00S01350.keyex +++| DATA ZENRETN / Z"1E", Z"05" / 01353 M00S01351.keyex +++| DATA ZENKEYB / Z"1E", Z"12", Z"4E" / 01354 M00S01352.keyex +++| DATA ZFEED / Z"0A" / 01355 M00S01353.keyex +++| DATA ZTRMKEY / Z"2F", Z"6F"/ 01356 M00S01354.keyex +++| 01357 M00S01355.keyex +++| 01358 M00S01356.keyex +++| CALL PACK(1, 0) 01359 M00S01357.keyex +++| 01360 M00S01358.keyex +++|* LOCK THE KEYBOARD DURING WHILE SENDING DATA TO TERMINAL. 01361 M00S01359.keyex +++| 01362 M00S01360.keyex +++| CALL SEQPACK(ZDISKEY,3) 01363 M00S01361.keyex +++| 01364 M00S01362.keyex +++|* DISABLE *CR* ON FUNCTION KEYS AND ENABLE BIAS. 01365 M00S01363.keyex +++| 01366 M00S01364.keyex +++| CALL SEQPACK(ZDISRET,3) 01367 M00S01365.keyex +++| CALL SEQPACK(ZENBIAS,2) 01368 M00S01366.keyex +++| 01369 M00S01367.keyex +++|* PROCESS EACH FUNCTION KEY'S DEFINITION. IF LAST CHARACTER IN THE 01370 M00S01368.keyex +++|* DEFINITION FIELD IS AN * (ASTERISK), TURN ECHO ON. 01371 M00S01369.keyex +++| 01372 M00S01370.keyex +++| DO 260 I = 1, NKEYS 01373 M00S01371.keyex +++| IF((KEYS(I)(8:8).EQ. ';') .OR. (KEYS(I)(8:8).EQ. ' ')) GOTO 260 01374 M00S01372.keyex +++| IF(KEYS(I)(67:67).EQ. '*') THEN 01375 M00S01373.keyex +++| ZECHO = ZECHON 01376 M00S01374.keyex +++| ELSE 01377 M00S01375.keyex +++| ZECHO = ZECHOFF 01378 M00S01376.keyex +++| ENDIF 01379 M00S01377.keyex +++| ZDEFKEY(3) = ZBASE + I 01380 M00S01378.keyex +++| ZDEFKEY(4) = ZECHO 01381 M00S01379.keyex +++| CALL SEQPACK(ZDEFKEY,4) 01382 M00S01380.keyex +++| CALL ZSNDADD(ADDR) 01383 M00S01381.keyex +++| 01384 M00S01382.keyex +++|* GET ACTUAL CHARACTERS FOR THE DEFINITION. 01385 M00S01383.keyex +++| 01386 M00S01384.keyex +++| LEN = 0 01387 M00S01385.keyex +++| IF((KEYS(I)(8:8) .EQ. 'Z') .AND. (KEYS(I)(9:9) .EQ. '"')) THEN 01388 M00S01386.keyex +++| 01389 M00S01387.keyex +++| DO 210 J = 10, 67, 2 01390 M00S01388.keyex +++| K = J + 1 01391 M00S01389.keyex +++| IF(KEYS(I)(J:J) .EQ. '"') GOTO 220 01392 M00S01390.keyex +++| IF(KEYS(I)(K:K) .EQ. '"') GOTO 220 01393 M00S01391.keyex +++| IF(KEYS(I)(J:J) .LE. '9') C1=ICHAR(KEYS(I)(J:J))-Z"10" 01394 M00S01392.keyex +++| IF(KEYS(I)(J:J) .GE. 'A') C1=ICHAR(KEYS(I)(J:J))-Z"20"+09 01395 M00S01393.keyex +++| IF(KEYS(I)(K:K) .LE. '9') C2=ICHAR(KEYS(I)(K:K))-Z"10" 01396 M00S01394.keyex +++| IF(KEYS(I)(K:K) .GE. 'A') C2=ICHAR(KEYS(I)(K:K))-Z"20"+09 01397 M00S01395.keyex +++| ASCII = C1*16+C2 01398 M00S01396.keyex +++| CALL ZSNDCHR(ASCII) 01399 M00S01397.keyex +++|210 CONTINUE 01400 M00S01398.keyex +++| 01401 M00S01399.keyex +++| J = 68 01402 M00S01400.keyex +++|220 J = K 01403 M00S01401.keyex +++| 01404 M00S01402.keyex +++|* PROCESSING CHARACTER DATA. 01405 M00S01403.keyex +++| 01406 M00S01404.keyex +++| ELSE 01407 M00S01405.keyex +++| 01408 M00S01406.keyex +++|* COUNT TRAILING BLANKS. 01409 M00S01407.keyex +++| 01410 M00S01408.keyex +++| DO 225 J = 66, 8, -1 01411 M00S01409.keyex +++| IF(KEYS(I)(J:J) .NE. ' ') THEN 01412 M00S01410.keyex +++| LASTNB = J 01413 M00S01411.keyex +++| GOTO 227 01414 M00S01412.keyex +++| ENDIF 01415 M00S01413.keyex +++|225 CONTINUE 01416 M00S01414.keyex +++| 01417 M00S01415.keyex +++|227 DO 230 J = 8, MIN(66, LASTNB) 01418 M00S01416.keyex +++| K = J + 1 01419 M00S01417.keyex +++| IF(KEYS(I)(J:J) .EQ. '!'.AND.((KEYS(I)(K:K) .EQ. ' ') 01420 M00S01418.keyex +++| . .OR.(K .EQ. 67))) GOTO 240 01421 M00S01419.keyex +++| IF(KEYS(I)(J:J) .EQ. ';') GOTO 250 01422 M00S01420.keyex +++| IF(KEYS(I)(J:J) .EQ. '!') THEN 01423 M00S01421.keyex +++| CALL ZSNDCHR(ZCARRET) 01424 M00S01422.keyex +++| IF(KEYS(I)(67:67) .EQ. '*') THEN 01425 M00S01423.keyex +++| CALL ZSNDCHR(ZFEED) 01426 M00S01424.keyex +++| LEN = LEN + 1 01427 M00S01425.keyex +++| ENDIF 01428 M00S01426.keyex +++| ELSE 01429 M00S01427.keyex +++| ASCII = ICHAR(KEYS(I)(J:J)) + Z"20" 01430 M00S01428.keyex +++| CALL ZSNDCHR(ASCII) 01431 M00S01429.keyex +++| ENDIF 01432 M00S01430.keyex +++|230 CONTINUE 01433 M00S01431.keyex +++| 01434 M00S01432.keyex +++| J = 67 01435 M00S01433.keyex +++|240 CALL ZSNDCHR(ZCARRET) 01436 M00S01434.keyex +++| J = J + 1 01437 M00S01435.keyex +++| ENDIF 01438 M00S01436.keyex +++| 01439 M00S01437.keyex +++|250 LEN = LEN + J - 8 01440 M00S01438.keyex +++| CALL SEQPACK(ZTRMKEY,2) 01441 M00S01439.keyex +++| CALL SEQPACK(ZCARRET,1) 01442 M00S01440.keyex +++| ADDR = ADDR + LEN + 1 01443 M00S01441.keyex +++|260 CONTINUE 01444 M00S01442.keyex +++| 01445 M00S01443.keyex +++|* SET UP AN ADDRESS IN THE 721 TO STORE THE KEY LABELS TO BE USED BY 01446 M00S01444.keyex +++|* THE *DISPLAY* OPTION. 01447 M00S01445.keyex +++| 01448 M00S01446.keyex +++| ZDEFKEY(3) = Z"74" 01449 M00S01447.keyex +++| ZDEFKEY(4) = Z"31" 01450 M00S01448.keyex +++| CALL SEQPACK(ZDEFKEY,4) 01451 M00S01449.keyex +++| CALL ZSNDADD(ADDR) 01452 M00S01450.keyex +++| 01453 M00S01451.keyex +++|* STORE THE F1 - F15 KEY LABELS IN THE TERMINAL. 01454 M00S01452.keyex +++| 01455 M00S01453.keyex +++| DO 280 I = 1, 15 01456 M00S01454.keyex +++| DO 270 J = 1, 7 01457 M00S01455.keyex +++| ASCII = ICHAR(KEYS(I)(J:J)) + Z"20" 01458 M00S01456.keyex +++| CALL ZSNDCHR(ASCII) 01459 M00S01457.keyex +++|270 CONTINUE 01460 M00S01458.keyex +++|280 CONTINUE 01461 M00S01459.keyex +++| 01462 M00S01460.keyex +++|* STORE THE 'LAB' LABEL AS F16 IN THE TERMINAL. 01463 M00S01461.keyex +++| 01464 M00S01462.keyex +++| DO 290 I = 1, 7 01465 M00S01463.keyex +++| ASCII = ICHAR(KEYS(27)(I:I)) + Z"20" 01466 M00S01464.keyex +++| CALL ZSNDCHR(ASCII) 01467 M00S01465.keyex +++|290 CONTINUE 01468 M00S01466.keyex +++| 01469 M00S01467.keyex +++|* TERMINATE KEY DEFINITIONS. 01470 M00S01468.keyex +++| 01471 M00S01469.keyex +++| CALL SEQPACK(ZTRMKEY,2) 01472 M00S01470.keyex +++| CALL SEQPACK(ZCARRET,1) 01473 M00S01471.keyex +++| ADDR = (ADDR + (7*16) + 1) - ADDL 01474 M00S01472.keyex +++| 01475 M00S01473.keyex +++|* SEND LENGTH OF CHARACTER LOAD TO BASE ADDRESS *ADDL*. 01476 M00S01474.keyex +++| 01477 M00S01475.keyex +++| ZDEFKEY(3) = Z"70" 01478 M00S01476.keyex +++| ZDEFKEY(4) = Z"32" 01479 M00S01477.keyex +++| CALL SEQPACK(ZDEFKEY,4) 01480 M00S01478.keyex +++| CALL ZSNDADD(ADDL) 01481 M00S01479.keyex +++| CALL ZSNDADD(ADDR) 01482 M00S01480.keyex +++| CALL SEQPACK(ZCARRET,1) 01483 M00S01481.keyex +++| 01484 M00S01482.keyex +++|* ENABLE KEYBOARD ENTRY. 01485 M00S01483.keyex +++| 01486 M00S01484.keyex +++| CALL Z80CODE 01487 M00S01485.keyex +++| CALL SEQPACK(ZENKEYB,3) 01488 M00S01486.keyex +++| CALL PACK(3, 1) 01489 M00S01487.keyex +++| RETURN 01490 M00S01488.keyex +++| END 01491 M00S01489.keyex +++| 01492 M00S01490.keyex +++| 01493 M00S01491.keyex +++| 01494 M00S01492.keyex +++| SUBROUTINE SEQPACK(SEQUENC,NBYTES) 01495 M00S01493.keyex +++| 01496 M00S01494.keyex +++|** SEQPACK - PACKS THE GIVEN SEQUENCE INTO A BUFFER FOR OUTPUT. 01497 M00S01495.keyex +++|* 01498 M00S01496.keyex +++|* *SEQPACK* PACKS THE GIVEN SEQUENCE INTO THE OUTPUT BUFFER VIA 01499 M00S01497.keyex +++|* THE *PACK* ROUTINE. 01500 M00S01498.keyex +++|* 01501 M00S01499.keyex +++|* CALL SEQPACK(SEQUENC,NBYTES) 01502 M00S01500.keyex +++|* 01503 M00S01501.keyex +++|* ENTRY SEQUENC = ARRAY OF BOOLEAN HEX CODES. 01504 M00S01502.keyex +++|* NBYTES = LENGTH OF HEX CODE ARRAY. 01505 M00S01503.keyex +++|* 01506 M00S01504.keyex +++|* CALLS PACK. 01507 M00S01505.keyex +++| 01508 M00S01506.keyex +++| IMPLICIT INTEGER (A - Z) 01509 M00S01507.keyex +++| 01510 M00S01508.keyex +++| PARAMETER (MAXBYTS = 5) 01511 M00S01509.keyex +++|* MAXIMUM LENGTH OF *SEQUENC* 01512 M00S01510.keyex +++| 01513 M00S01511.keyex +++| BOOLEAN OFFSET 01514 M00S01512.keyex +++|* OFFSET FOR Z80 PROCESSING 01515 M00S01513.keyex +++| BOOLEAN SEQUENC(MAXBYTS) 01516 M00S01514.keyex +++|* ARRAY OF BOOLEAN HEX CODES 01517 M00S01515.keyex +++| INTEGER NBYTES 01518 M00S01516.keyex +++|* LENGTH OF HEX CODE ARRAY 01519 M00S01517.keyex +++| 01520 M00S01518.keyex +++| DATA OFFSET / Z"800" / 01521 M00S01519.keyex +++| 01522 M00S01520.keyex +++| 01523 M00S01521.keyex +++| DO 100 I = 1, NBYTES 01524 M00S01522.keyex +++| CALL PACK(2, OFFSET + SEQUENC(I)) 01525 M00S01523.keyex +++|100 CONTINUE 01526 M00S01524.keyex +++| 01527 M00S01525.keyex +++| RETURN 01528 M00S01526.keyex +++| END 01529 M00S01527.keyex +++| 01530 M00S01528.keyex +++| 01531 M00S01529.keyex +++| SUBROUTINE SYSKEYS 01532 M00S01530.keyex +++| 01533 M00S01531.keyex +++|** SYSKEYS - SET SYSTEM DEFAULTS FOR KEYS AND SETUP CHARACTERISTICS. 01534 M00S01532.keyex +++|* 01535 M00S01533.keyex +++|* *SYSKEYS* INITIALIZES *KEYS* AND TERMINAL SETUP CHARACTERISTICS 01536 M00S01534.keyex +++|* WITH THE SYSTEM DEFAULTS. 01537 M00S01535.keyex +++|* 01538 M00S01536.keyex +++|* CALL SYSKEYS 01539 M00S01537.keyex +++|* 01540 M00S01538.keyex +++|* USES KEYS, SETDATA. 01541 M00S01539.keyex +++| 01542 M00S01540.keyex +++| 01543 M00S01541.keyex +++| IMPLICIT INTEGER (A - Z) 01544 M00S01542.keyex +++| 01545 M00S01543.keyex +++| PARAMETER (NKEYS = 45) 01546 M00S01544.keyex +++|* NUMBER OF DEFINABLE FUNCTION KEYS 01547 M00S01545.keyex +++| 01548 M00S01546.keyex +++| BOOLEAN KHELP 01549 M00S01547.keyex +++|* HEX CODE FOR HELP KEY 01550 M00S01548.keyex +++| BOOLEAN KEDIT 01551 M00S01549.keyex +++|* HEX CODE FOR EDIT KEY 01552 M00S01550.keyex +++| BOOLEAN KSTOP 01553 M00S01551.keyex +++|* HEX CODE FOR STOP KEY 01554 M00S01552.keyex +++| BOOLEAN ZBASE 01555 M00S01553.keyex +++|* HEX CODE FOR BASE OFFSET OF KEY TABLE 01556 M00S01554.keyex +++| CHARACTER*7 FILENM 01557 M00S01555.keyex +++|* KEY DEFINITIONS FILE 01558 M00S01556.keyex +++| CHARACTER*67 KEYS(NKEYS) 01559 M00S01557.keyex +++|* FUNCTION KEY DEFINITIONS 01560 M00S01558.keyex +++| CHARACTER*7 SETDATA(3) 01561 M00S01559.keyex +++|* TERMINAL SETUP DATA 01562 M00S01560.keyex +++| CHARACTER*7 STRDEF 01563 M00S01561.keyex +++|* DEFAULT STRING 01564 M00S01562.keyex +++| CHARACTER*7 STRHLP 01565 M00S01563.keyex +++|* HELP STRING 01566 M00S01564.keyex +++| CHARACTER*7 STRHL1 01567 M00S01565.keyex +++|* HELP WITH CARRIAGE RETURN STRING 01568 M00S01566.keyex +++| CHARACTER*7 STREDT 01569 M00S01567.keyex +++|* EDIT STRING 01570 M00S01568.keyex +++| CHARACTER*7 STRFSE 01571 M00S01569.keyex +++|* FSE WITH CARRIAGE RETURN STRING 01572 M00S01570.keyex +++| CHARACTER*7 STRSTP 01573 M00S01571.keyex +++|* STOP STRING 01574 M00S01572.keyex +++| CHARACTER*7 STRCTT 01575 M00S01573.keyex +++|* CONTROL-T STOP STRING 01576 M00S01574.keyex +++| 01577 M00S01575.keyex +++| COMMON / INFO / KEYS, FILENM, SETDATA 01578 M00S01576.keyex +++| 01579 M00S01577.keyex +++| DATA KHELP / Z"47" / 01580 M00S01578.keyex +++| DATA KEDIT / Z"49" / 01581 M00S01579.keyex +++| DATA KSTOP / Z"4D" / 01582 M00S01580.keyex +++| DATA ZBASE / Z"30" / 01583 M00S01581.keyex +++| DATA STRDEF / 'DEFAULT' / 01584 M00S01582.keyex +++| DATA STRHLP / 'HELP ' / 01585 M00S01583.keyex +++| DATA STRHL1 / 'HELP! ' / 01586 M00S01584.keyex +++| DATA STREDT / 'EDIT ' / 01587 M00S01585.keyex +++| DATA STRFSE / 'FSE! ' / 01588 M00S01586.keyex +++| DATA STRSTP / 'STOP ' / 01589 M00S01587.keyex +++| DATA STRCTT / 'Z"140D"' / 01590 M00S01588.keyex +++| 01591 M00S01589.keyex +++| 01592 M00S01590.keyex +++|* INITIALIZE *KEYS*. 01593 M00S01591.keyex +++| 01594 M00S01592.keyex +++| DO 100 I = 1, NKEYS 01595 M00S01593.keyex +++| KEYS(I) = ' ' 01596 M00S01594.keyex +++|100 CONTINUE 01597 M00S01595.keyex +++| 01598 M00S01596.keyex +++|* INITIALIZE *SETDATA*. 01599 M00S01597.keyex +++| 01600 M00S01598.keyex +++| SETDATA(1) = STRDEF 01601 M00S01599.keyex +++| SETDATA(2) = STRDEF 01602 M00S01600.keyex +++| SETDATA(3) = STRDEF 01603 M00S01601.keyex +++| 01604 M00S01602.keyex +++|* STORE LABEL AND KEY DEFINITION FOR EACH *KEYS(I)*. 01605 M00S01603.keyex +++|* EACH *KEYS(I)* = 7/LABEL, 60/DEFINITION. 01606 M00S01604.keyex +++| 01607 M00S01605.keyex +++| KEYS(KHELP - Z"30")(1:07) = STRHLP 01608 M00S01606.keyex +++| KEYS(KHELP - Z"30")(8:67) = STRHLP 01609 M00S01607.keyex +++| KEYS(KEDIT - Z"30")(1:07) = STREDT 01610 M00S01608.keyex +++| KEYS(KEDIT - Z"30")(8:67) = STRFSE 01611 M00S01609.keyex +++| KEYS(KSTOP - Z"30")(1:07) = STRSTP 01612 M00S01610.keyex +++| KEYS(KSTOP - Z"30")(8:67) = STRCTT 01613 M00S01611.keyex +++| RETURN 01614 M00S01612.keyex +++| END 01615 M00S01613.keyex +++| 01616 M00S01614.keyex +++| 01617 M00S01615.keyex +++| SUBROUTINE VERLOAD(LOADED) 01618 M00S01616.keyex +++| 01619 M00S01617.keyex +++|** VERLOAD - VERIFY THAT TERMINAL HAS LOADED CONTROLWARE. 01620 M00S01618.keyex +++|* 01621 M00S01619.keyex +++|* *VERLOAD* INITIATES A LOADED CONTROLWARE SEQUENCE FOLLOWED BY A 01622 M00S01620.keyex +++|* MODEL REPORT REQUEST (WHICH IS ALWAYS PRESENT ON A 721 TERMINAL). 01623 M00S01621.keyex +++|* IF THE FIRST ITEM THAT COMES BACK IS THE MODEL REPORT REQUEST 01624 M00S01622.keyex +++|* DATA, THEN THERE WAS NO LOADED CONTROLWARE PRESENT. 01625 M00S01623.keyex +++|* 01626 M00S01624.keyex +++|* CALL VERLOAD(LOADED) 01627 M00S01625.keyex +++|* 01628 M00S01626.keyex +++|* EXIT *LOADED* IS SET IF LOADED CONTROLWARE IS PRESENT. 01629 M00S01627.keyex +++|* 01630 M00S01628.keyex +++|* CALLS PACK, SEQPACK. 01631 M00S01629.keyex +++| 01632 M00S01630.keyex +++| 01633 M00S01631.keyex +++| IMPLICIT INTEGER (A - Z) 01634 M00S01632.keyex +++| 01635 M00S01633.keyex +++| BOOLEAN OUT 01636 M00S01634.keyex +++|* OCTAL CODE TO INITIATE TRANSPARENT MODE 01637 M00S01635.keyex +++| BOOLEAN ZDISKEY(3) 01638 M00S01636.keyex +++|* HEX SEQUENCE TO DISABLE KEYBOARD ENTRY 01639 M00S01637.keyex +++| BOOLEAN ZENKEYB(3) 01640 M00S01638.keyex +++|* HEX SEQUENCE TO ENABLE KEYBOARD ENTRY 01641 M00S01639.keyex +++| BOOLEAN ZHOSTLC(3) 01642 M00S01640.keyex +++|* HEX SEQUENCE FOR HOST LOADED CONTROLWARE 01643 M00S01641.keyex +++| BOOLEAN ZMODREP(3) 01644 M00S01642.keyex +++|* HEX SEQUENCE FOR MODEL REPORT REQUEST 01645 M00S01643.keyex +++| CHARACTER*2 CTRLT 01646 M00S01644.keyex +++|* CONTROL-T TERMINATION SEQUENCE 01647 M00S01645.keyex +++| CHARACTER*5 MODREP 01648 M00S01646.keyex +++|* TERMINAL MODEL REPORT 01649 M00S01647.keyex +++| CHARACTER*7 VERSTR 01650 M00S01648.keyex +++|* VERIFICATION STRING IF TERMINAL LOADED 01651 M00S01649.keyex +++| INTEGER IOS 01652 M00S01650.keyex +++|* IOSTAT VALUE FROM FORMATTED READ 01653 M00S01651.keyex +++| CHARACTER*112 OPRAM4 01654 M00S01652.keyex +++|* 721 HEX SEQUENCE CODES 01655 M00S01653.keyex +++| LOGICAL LOADED 01656 M00S01654.keyex +++|* CONTROLWARE LOADED FLAG 01657 M00S01655.keyex +++| 01658 M00S01656.keyex +++| DATA MODREP /'536.5'/ 01659 M00S01657.keyex +++| DATA VERSTR /'6A536.5'/ 01660 M00S01658.keyex +++| DATA CTRLT /'5T'/ 01661 M00S01659.keyex +++| DATA OUT /O"00060400001500000000"/ 01662 M00S01660.keyex +++|* OUT IS 1 WORD WITH THE DATA LEFT JUSTIFIED 01663 M00S01661.keyex +++|* 0006 = INITIATES TRANSPARENT INPUT MODE 01664 M00S01662.keyex +++|* 0400 = WORD LENGTH OF BLOCK TO TRANSMIT 01665 M00S01663.keyex +++|* 0015 = DELIMITER OF A *CR* 01666 M00S01664.keyex +++| 01667 M00S01665.keyex +++| DATA OPRAM4 / ' ' / 01668 M00S01666.keyex +++| DATA ZDISKEY / Z"1E", Z"12", Z"4D" / 01669 M00S01667.keyex +++| DATA ZENKEYB / Z"1E", Z"12", Z"4E" / 01670 M00S01668.keyex +++| DATA ZHOSTLC / Z"1E", Z"12", Z"75" / 01671 M00S01669.keyex +++| DATA ZMODREP / Z"1E", Z"43", Z"30" / 01672 M00S01670.keyex +++| 01673 M00S01671.keyex +++|11 FORMAT(A112) 01674 M00S01672.keyex +++| 01675 M00S01673.keyex +++| 01676 M00S01674.keyex +++|* TURN OFF INPUT PROMPT AND INITIATE TRANSPARENT INPUT. 01677 M00S01675.keyex +++| 01678 M00S01676.keyex +++| CALL PROMPT 01679 M00S01677.keyex +++| CLOSE (2 ,STATUS = 'DELETE' ) 01680 M00S01678.keyex +++| OPEN (2, RECL=100, FILE='OUTPUT', FORM = 'UNFORMATTED') 01681 M00S01679.keyex +++|12 WRITE (2) OUT 01682 M00S01680.keyex +++| CLOSE (2 ,STATUS = 'DELETE' ) 01683 M00S01681.keyex +++| OPEN (2, RECL=100, FILE='OUTPUT') 01684 M00S01682.keyex +++| 01685 M00S01683.keyex +++| 01686 M00S01684.keyex +++|* GET FUNCTION KEY LABELS FROM THE 721. 01687 M00S01685.keyex +++|* KEYBOARD MUST BE LOCKED WHILE 721 SENDS FUNCTION KEY DATA UPLINE. 01688 M00S01686.keyex +++| 01689 M00S01687.keyex +++| CALL PACK(1, 0) 01690 M00S01688.keyex +++| CALL SEQPACK(ZDISKEY,3) 01691 M00S01689.keyex +++| CALL SEQPACK(ZHOSTLC,3) 01692 M00S01690.keyex +++| CALL SEQPACK(ZMODREP,3) 01693 M00S01691.keyex +++| CALL PACK(3, 1) 01694 M00S01692.keyex +++| 01695 M00S01693.keyex +++|* CHECK IF THE MODEL REPORT COMES BACK FIRST. IF SO, KEYS HAVE NOT 01696 M00S01694.keyex +++|* BEEN DEFINED. THE VALUE OF THE MODEL REPORT WILL NOT BE AFFECTED BY 01697 M00S01695.keyex +++|* SYSTEM CHANGES. 01698 M00S01696.keyex +++| 01699 M00S01697.keyex +++| READ(5,11,IOSTAT=IOS,ERR=14,END=14)OPRAM4 01700 M00S01698.keyex +++| 01701 M00S01699.keyex +++|* CHECK IF TYPED-AHEAD INPUT ENTERED. NOTE THAT THE PROCESS LOOPS 01702 M00S01700.keyex +++|* UNTIL ALL TYPED-AHEAD INPUT IS REMOVED, AND IS SATISFIED ONLY 01703 M00S01701.keyex +++|* WHEN A CORRECT SEQUENCE IS RECEIVED FROM THE TERMINAL. 01704 M00S01702.keyex +++| 01705 M00S01703.keyex +++|13 IF (.NOT.((OPRAM4(3:7) .EQ. MODREP(1:5)).OR. 01706 M00S01704.keyex +++| . (OPRAM4(3:5) .EQ. CTRLT(1:2)).OR. 01707 M00S01705.keyex +++| . (OPRAM4(3:9) .EQ. VERSTR(1:7)))) THEN 01708 M00S01706.keyex +++| GOTO 12 01709 M00S01707.keyex +++| ENDIF 01710 M00S01708.keyex +++| CALL PACK(1, 0) 01711 M00S01709.keyex +++| CALL SEQPACK(ZENKEYB,3) 01712 M00S01710.keyex +++| CALL PACK(3, 1) 01713 M00S01711.keyex +++| IF(OPRAM4(3:7) .EQ. MODREP(1:5)) THEN 01714 M00S01712.keyex +++| LOADED = .FALSE. 01715 M00S01713.keyex +++| ELSE 01716 M00S01714.keyex +++| LOADED = .TRUE. 01717 M00S01715.keyex +++| ENDIF 01718 M00S01716.keyex +++| RETURN 01719 M00S01717.keyex +++| 01720 M00S01718.keyex +++|14 REWIND 5 01721 M00S01719.keyex +++| GOTO 13 01722 M00S01720.keyex +++| END 01723 M00S01721.keyex +++| 01724 M00S01722.keyex +++| 01725 M00S01723.keyex +++| SUBROUTINE WRSORC 01726 M00S01724.keyex +++| 01727 M00S01725.keyex +++|** WRSORC - WRITE KEY DEFINITIONS TO THE SOURCE FILE. 01728 M00S01726.keyex +++|* 01729 M00S01727.keyex +++|* *WRSORC* WILL WRITE THE KEY DEFINITIONS TO THE 01730 M00S01728.keyex +++|* SOURCE FILE. 01731 M00S01729.keyex +++|* 01732 M00S01730.keyex +++|* CALL WRSORC 01733 M00S01731.keyex +++|* 01734 M00S01732.keyex +++|* CALLS PF. 01735 M00S01733.keyex +++| 01736 M00S01734.keyex +++| 01737 M00S01735.keyex +++| IMPLICIT INTEGER (A - Z) 01738 M00S01736.keyex +++| 01739 M00S01737.keyex +++| PARAMETER (NKEYS = 45) 01740 M00S01738.keyex +++|* NUMBER OF DEFINABLE FUNCTION KEYS 01741 M00S01739.keyex +++| PARAMETER (NSETUP = 3) 01742 M00S01740.keyex +++|* NUMBER OF TERMINAL SETUP CHARACTERISTICS 01743 M00S01741.keyex +++| 01744 M00S01742.keyex +++| CHARACTER*7 FILENM 01745 M00S01743.keyex +++|* KEY DEFINITIONS FILE 01746 M00S01744.keyex +++| CHARACTER*60 KEYDEF 01747 M00S01745.keyex +++|* FUNCTION KEY DEFINITION 01748 M00S01746.keyex +++| CHARACTER*67 KEYS(NKEYS) 01749 M00S01747.keyex +++|* LABEL AND KEYDEF 01750 M00S01748.keyex +++| CHARACTER*7 LABEL 01751 M00S01749.keyex +++|* FUNCTION KEY LABEL 01752 M00S01750.keyex +++| CHARACTER*7 SETDATA(3) 01753 M00S01751.keyex +++|* SETUP TERMINAL CHARACTERISTICS 01754 M00S01752.keyex +++| 01755 M00S01753.keyex +++| COMMON / INFO / KEYS, FILENM, SETDATA 01756 M00S01754.keyex +++| 01757 M00S01755.keyex +++|10 FORMAT(A7, 1X, A60) 01758 M00S01756.keyex +++|20 FORMAT(A7) 01759 M00S01757.keyex +++| 01760 M00S01758.keyex +++| 01761 M00S01759.keyex +++| REWIND 1 01762 M00S01760.keyex +++| 01763 M00S01761.keyex +++|* WRITE FUNCTION KEY DEFINITIONS TO FILE. 01764 M00S01762.keyex +++| 01765 M00S01763.keyex +++| DO 210 I = 1, NKEYS 01766 M00S01764.keyex +++| WRITE(1, 10) KEYS(I)(1:7), KEYS(I)(8:67) 01767 M00S01765.keyex +++|210 CONTINUE 01768 M00S01766.keyex +++| 01769 M00S01767.keyex +++|* WRITE TERMINAL SETUP CHARACTERISTICS TO FILE. 01770 M00S01768.keyex +++| 01771 M00S01769.keyex +++| DO 220 I = 1, NSETUP 01772 M00S01770.keyex +++| WRITE(1, 20) SETDATA(I) 01773 M00S01771.keyex +++|220 CONTINUE 01774 M00S01772.keyex +++| 01775 M00S01773.keyex +++| REWIND 1 01776 M00S01774.keyex +++| CALL PF('REPLACE', 'TAPE1', FILENM, 'NA', IGNORE) 01777 M00S01775.keyex +++| RETURN 01778 M00S01776.keyex +++| END 01779 M00S01777.keyex +++| 01780 M00S01778.keyex +++| 01781 M00S01779.keyex +++| SUBROUTINE ZSNDADD(ADDRESS) 01782 M00S01780.keyex +++| 01783 M00S01781.keyex +++|** ZSNDADD - FORMAT AND PACK Z80 ADDRESS INTO BUFFER. 01784 M00S01782.keyex +++|* 01785 M00S01783.keyex +++|* *ZSNDSEQ* FORMATS THE GIVEN ADDRESS INTO MODIFIED HEX 01786 M00S01784.keyex +++|* FORMAT AND PACKS IT INTO THE BUFFER BEING SENT TO THE 01787 M00S01785.keyex +++|* TERMINAL. 01788 M00S01786.keyex +++|* 01789 M00S01787.keyex +++|* CALL ZSNDADD(ADDRESS) 01790 M00S01788.keyex +++|* 01791 M00S01789.keyex +++|* ENTRY ADDRESS - Z80 ADDRESS IN TERMINAL MEMORY. 01792 M00S01790.keyex +++|* 01793 M00S01791.keyex +++|* CALLS PACK. 01794 M00S01792.keyex +++| 01795 M00S01793.keyex +++| 01796 M00S01794.keyex +++| IMPLICIT INTEGER (A - Z) 01797 M00S01795.keyex +++| 01798 M00S01796.keyex +++| 01799 M00S01797.keyex +++| BOOLEAN ADDRESS 01800 M00S01798.keyex +++|* Z80 ADDRESS IN TERMINAL MEMORY 01801 M00S01799.keyex +++| 01802 M00S01800.keyex +++| 01803 M00S01801.keyex +++| CALL BYTE(SHIFT(AND(ADDRESS, Z"FF00"), -8), U1ADDR, L1ADDR) 01804 M00S01802.keyex +++| CALL BYTE(AND(ADDRESS, Z"00FF"), U2ADDR, L2ADDR) 01805 M00S01803.keyex +++| CALL PACK(2, U1ADDR) 01806 M00S01804.keyex +++| CALL PACK(2, L1ADDR) 01807 M00S01805.keyex +++| CALL PACK(2, U2ADDR) 01808 M00S01806.keyex +++| CALL PACK(2, L2ADDR) 01809 M00S01807.keyex +++| RETURN 01810 M00S01808.keyex +++| END 01811 M00S01809.keyex +++| 01812 M00S01810.keyex +++| 01813 M00S01811.keyex +++| SUBROUTINE ZSNDCHR(ZCHAR) 01814 M00S01812.keyex +++| 01815 M00S01813.keyex +++|** ZSNDCHR - FORMAT AND PACK Z80 CHARACTER INTO BUFFER. 01816 M00S01814.keyex +++|* 01817 M00S01815.keyex +++|* *ZSNDCHR* FORMATS THE GIVEN Z80 CHARACTER INTO MODIFIED HEX 01818 M00S01816.keyex +++|* FORMAT AND PACKS IT INTO THE BUFFER BEING SENT TO THE 01819 M00S01817.keyex +++|* TERMINAL. 01820 M00S01818.keyex +++|* 01821 M00S01819.keyex +++|* CALL ZSNDCHR(ZCHAR) 01822 M00S01820.keyex +++|* 01823 M00S01821.keyex +++|* ENTRY ZCHAR - Z80 CHARACTER. 01824 M00S01822.keyex +++|* 01825 M00S01823.keyex +++|* CALLS PACK. 01826 M00S01824.keyex +++| 01827 M00S01825.keyex +++| 01828 M00S01826.keyex +++| IMPLICIT INTEGER (A - Z) 01829 M00S01827.keyex +++| 01830 M00S01828.keyex +++| 01831 M00S01829.keyex +++| INTEGER TEMP1 01832 M00S01830.keyex +++|* Z80 UPPER BYTE 01833 M00S01831.keyex +++| INTEGER TEMP2 01834 M00S01832.keyex +++|* Z80 LOWER BYTE 01835 M00S01833.keyex +++| INTEGER ZCHAR 01836 M00S01834.keyex +++|* Z80 CHARACTER 01837 M00S01835.keyex +++| 01838 M00S01836.keyex +++| 01839 M00S01837.keyex +++| CALL BYTE(ZCHAR, TEMP1, TEMP2) 01840 M00S01838.keyex +++| CALL PACK(2, TEMP1) 01841 M00S01839.keyex +++| CALL PACK(2, TEMP2) 01842 M00S01840.keyex +++| RETURN 01843 M00S01841.keyex +++| END 01844 M00S01842.keyex +++| 01845 M00S01843.keyex +++| 01846 M00S01844.keyex +++| SUBROUTINE ZSNDSEQ(ZARRAY,ZLENGTH) 01847 M00S01845.keyex +++| 01848 M00S01846.keyex +++|** ZSNDSEQ - FORMAT AND PACK Z80 CODE SEQUENCE INTO BUFFER. 01849 M00S01847.keyex +++|* 01850 M00S01848.keyex +++|* *ZSNDSEQ* FORMATS THE Z80 CODE TO A MODIFIED HEX FORMAT 01851 M00S01849.keyex +++|* AND THEN PACKS THE SEQUENCE INTO THE BUFFER THAT IS TO 01852 M00S01850.keyex +++|* BE SENT TO THE TERMINAL. 01853 M00S01851.keyex +++|* 01854 M00S01852.keyex +++|* CALL ZSNDSEQ(ZARRAY,ZLENGTH) 01855 M00S01853.keyex +++|* 01856 M00S01854.keyex +++|* ENTRY ZARRAY - Z80 CODE ARRAY TO BE FORMATTED AND PACKED. 01857 M00S01855.keyex +++|* ZLENGTH - LENGTH OF THE ARRAY(SEQUENCE). 01858 M00S01856.keyex +++|* 01859 M00S01857.keyex +++|* CALLS ZSNDCHR. 01860 M00S01858.keyex +++| 01861 M00S01859.keyex +++| 01862 M00S01860.keyex +++| IMPLICIT INTEGER (A - Z) 01863 M00S01861.keyex +++| 01864 M00S01862.keyex +++| 01865 M00S01863.keyex +++| PARAMETER (MAXSEQ = 50) 01866 M00S01864.keyex +++|* MAXIMUM LENGTH OF SEQUENCE 01867 M00S01865.keyex +++| 01868 M00S01866.keyex +++| BOOLEAN ZARRAY(MAXSEQ) 01869 M00S01867.keyex +++|* Z80 CODE SEQUENCE 01870 M00S01868.keyex +++| INTEGER ZLENGTH 01871 M00S01869.keyex +++|* LENGTH OF THE Z80 CODE SEQUENCE 01872 M00S01870.keyex +++| 01873 M00S01871.keyex +++| 01874 M00S01872.keyex +++| DO 100 I = 1, ZLENGTH 01875 M00S01873.keyex +++| CALL ZSNDCHR(ZARRAY(I)) 01876 M00S01874.keyex +++| 100 CONTINUE 01877 M00S01875.keyex +++| RETURN 01878 M00S01876.keyex +++| END 01879 M00S01877.keyex +++| 01880 M00S01878.keyex +++| 01881 M00S01879.keyex +++| SUBROUTINE Z80CODE 01882 M00S01880.keyex +++| 01883 M00S01881.keyex +++|** Z80CODE - LOAD Z80 CONTROLWARE INTO TERMINAL. 01884 M00S01882.keyex +++|* 01885 M00S01883.keyex +++|* *Z80CODE* STORES THE Z80 ROUTINES *PUSH*, *POP*, 01886 M00S01884.keyex +++|* *RESET*, AND *LABEL* INTO THE TERMINAL, AND THEN 01887 M00S01885.keyex +++|* DEFINES SEVERAL VIRTUAL KEYS WITH THE ADDRESSES OF 01888 M00S01886.keyex +++|* THE LOADED CONTROLWARE. LATER, WHEN THE KEY IS 01889 M00S01887.keyex +++|* INVOKED, THE TERMINAL KNOWS THAT IT CONTAINS THE 01890 M00S01888.keyex +++|* ADDRESS OF THE LOADED CONTROLWARE, AND BEGINS 01891 M00S01889.keyex +++|* EXECUTION OF THE LOADED Z80 ROUTINES. 01892 M00S01890.keyex +++|* 01893 M00S01891.keyex +++|* THE SOURCE FOR THE FOLLOWING HARDCODED ROUTINES IS 01894 M00S01892.keyex +++|* CONTAINED ON THE MAINTENANCE PL AS DECKNAME *KEYUTIL*. 01895 M00S01893.keyex +++|* 01896 M00S01894.keyex +++|* TO REPRODUCE THE Z80 BINARY CODES, RUN THE Z80 VARIANT 01897 M00S01895.keyex +++|* OF COMPASS AGAINST THE Z80 ROUTINES IN *KEYUTIL*, THEN 01898 M00S01896.keyex +++|* HAND TRANSLATE THE CODE INTO THE ROUTINES BELOW. 01899 M00S01897.keyex +++|* 01900 M00S01898.keyex +++|* CALL Z80CODE 01901 M00S01899.keyex +++|* 01902 M00S01900.keyex +++|* CALLS PACK, SEQPACK. 01903 M00S01901.keyex +++|* 01904 M00S01902.keyex +++|* NOTES THE SOURCE FOR THE Z80 BINARY IS PROVIDED HERE. THIS 01905 M00S01903.keyex +++|* SOURCE IS ASSEMBLED USING A Z80 ASSEMBLER, AND THE 01906 M00S01904.keyex +++|* BINARY CODES PRODUCED ARE THEN PLACED INTO THE *FORTRAN* 01907 M00S01905.keyex +++|* DATA STATEMENTS. 01908 M00S01906.keyex +++| 01909 M00S01907.keyex +++| 01910 M00S01908.keyex +++| IMPLICIT INTEGER (A - Z) 01911 M00S01909.keyex +++| 01912 M00S01910.keyex +++| PARAMETER (LZPUSH = 27) 01913 M00S01911.keyex +++|* LENGTH OF THE Z80 PUSH ROUTINE 01914 M00S01912.keyex +++| PARAMETER (LZPOP = 24) 01915 M00S01913.keyex +++|* LENGTH OF THE Z80 POP ROUTINE 01916 M00S01914.keyex +++| PARAMETER (LZRESET = 30) 01917 M00S01915.keyex +++|* LENGTH OF THE Z80 RESET ROUTINE 01918 M00S01916.keyex +++| PARAMETER (LZLABEL = 29) 01919 M00S01917.keyex +++|* LENGTH OF THE Z80 LABEL ROUTINE 01920 M00S01918.keyex +++| PARAMETER (LZVERFY = 6) 01921 M00S01919.keyex +++|* LENGTH OF THE Z80 VERIFY ROUTINE 01922 M00S01920.keyex +++| PARAMETER (LKEYC = 5) 01923 M00S01921.keyex +++|* DIMENSION FOR THE *KEYC* ARRAY 01924 M00S01922.keyex +++| 01925 M00S01923.keyex +++| BOOLEAN ZABSLOC 01926 M00S01924.keyex +++|* ABSOLUTE LOCATION OF Z80 ROUTINES 01927 M00S01925.keyex +++| BOOLEAN ZCARRET(1) 01928 M00S01926.keyex +++|* HEX CODE FOR CARRIAGE RETURN 01929 M00S01927.keyex +++| BOOLEAN ZCONSEQ(4) 01930 M00S01928.keyex +++|* HEX SEQUENCE FOR CONTROLWARE SEQUENCE 01931 M00S01929.keyex +++| BOOLEAN ZPUSH(LZPUSH) 01932 M00S01930.keyex +++|* HEX ARRAY FOR PUSH ROUTINE 01933 M00S01931.keyex +++| BOOLEAN ZPOP(LZPOP) 01934 M00S01932.keyex +++|* HEX ARRAY FOR POP ROUTINE 01935 M00S01933.keyex +++| BOOLEAN ZRESET(LZRESET) 01936 M00S01934.keyex +++|* HEX ARRAY FOR RESET ROUTINE 01937 M00S01935.keyex +++| BOOLEAN ZLABEL(LZLABEL) 01938 M00S01936.keyex +++|* HEX ARRAY FOR LABEL ROUTINE 01939 M00S01937.keyex +++| BOOLEAN ZVERFY(LZVERFY) 01940 M00S01938.keyex +++|* HEX ARRAY FOR VERIFY ROUTINE 01941 M00S01939.keyex +++| INTEGER KEYC(LKEYC, 2) 01942 M00S01940.keyex +++|* ARRAY FOR Z80 CODE 01943 M00S01941.keyex +++| 01944 M00S01942.keyex +++| DATA ZABSLOC / Z"D100" / 01945 M00S01943.keyex +++| DATA ZCARRET / Z"0D" / 01946 M00S01944.keyex +++| DATA ZCONSEQ / Z"1E", Z"09", Z"70", Z"32" / 01947 M00S01945.keyex +++| DATA ZPUSH / 01948 M00S01946.keyex +++| 01949 M00S01947.keyex +++|* Z80 ROUTINE TO PUSH FUNCTION KEY DEFINITION TABLE IN TERMINAL. 01950 M00S01948.keyex +++| 01951 M00S01949.keyex +++| . Z"11", Z"76", Z"D1", Z"01", Z"F0", Z"00", Z"21", Z"E0", Z"D7" 01952 M00S01950.keyex +++| ., Z"ED", Z"B0", Z"3A", Z"47", Z"E0", Z"32", Z"66", Z"D2", Z"3A" 01953 M00S01951.keyex +++| ., Z"B9", Z"E0", Z"32", Z"67", Z"D2", Z"CD", Z"33", Z"D1", Z"C9" 01954 M00S01952.keyex +++| ./ 01955 M00S01953.keyex +++| 01956 M00S01954.keyex +++| DATA ZPOP / 01957 M00S01955.keyex +++| 01958 M00S01956.keyex +++|* Z80 ROUTINE TO POP FUNCTION KEY DEFINITION TABLE IN TERMINAL. 01959 M00S01957.keyex +++| 01960 M00S01958.keyex +++| . Z"21", Z"76", Z"D1", Z"01", Z"F0", Z"00", Z"11", Z"E0", Z"D7" 01961 M00S01959.keyex +++| ., Z"ED", Z"B0", Z"3A", Z"66", Z"D2", Z"32", Z"47", Z"E0", Z"3A" 01962 M00S01960.keyex +++| ., Z"67", Z"D2", Z"32", Z"B9", Z"E0", Z"C9" 01963 M00S01961.keyex +++| ./ 01964 M00S01962.keyex +++| 01965 M00S01963.keyex +++| DATA ZRESET / 01966 M00S01964.keyex +++| 01967 M00S01965.keyex +++|* Z80 ROUTINE TO RESET FUNCTION KEY DEFINITION TABLE IN TERMINAL. 01968 M00S01966.keyex +++| 01969 M00S01967.keyex +++| . Z"3A", Z"47", Z"E0", Z"F6", Z"02", Z"32", Z"47", Z"E0", Z"3E" 01970 M00S01968.keyex +++| ., Z"00", Z"32", Z"B9", Z"E0", Z"01", Z"F3", Z"00", Z"0B", Z"0B" 01971 M00S01969.keyex +++| ., Z"0B", Z"78", Z"B1", Z"C8", Z"21", Z"DD", Z"D7", Z"09", Z"36" 01972 M00S01970.keyex +++| ., Z"30", Z"18", Z"F2" 01973 M00S01971.keyex +++| ./ 01974 M00S01972.keyex +++| 01975 M00S01973.keyex +++| DATA ZLABEL / 01976 M00S01974.keyex +++| 01977 M00S01975.keyex +++|* Z80 ROUTINE TO DISPLAY RESIDENT KEY LABELS. 01978 M00S01976.keyex +++| 01979 M00S01977.keyex +++| . Z"3A", Z"DD", Z"D8", Z"67", Z"3A", Z"DE", Z"D8", Z"6F", Z"46" 01980 M00S01978.keyex +++| ., Z"78", Z"FE", Z"FF", Z"CA", Z"68", Z"D1", Z"E5", Z"CD", Z"87" 01981 M00S01979.keyex +++| ., Z"00", Z"E1", Z"23", Z"18", Z"F1", Z"06", Z"0D", Z"CD", Z"87" 01982 M00S01980.keyex +++| ., Z"00", Z"C9" 01983 M00S01981.keyex +++| ./ 01984 M00S01982.keyex +++| 01985 M00S01983.keyex +++| DATA ZVERFY / 01986 M00S01984.keyex +++| 01987 M00S01985.keyex +++|* Z80 ROUTINE TO SEND VERIFICATION CHARACTER TO HOST. 01988 M00S01986.keyex +++| 01989 M00S01987.keyex +++| . Z"06", Z"41", Z"CD", Z"87", Z"00", Z"C9" / 01990 M00S01988.keyex +++| 01991 M00S01989.keyex +++| DATA (KEYC(I, 1), KEYC(I, 2), I = 1, LKEYC)/ 01992 M00S01990.keyex +++| 01993 M00S01991.keyex +++|* ADDRESS OF Z80 ROUTINE *PUSH* IS STORED IN KEY 70. 01994 M00S01992.keyex +++| 01995 M00S01993.keyex +++| . Z"70", Z"D100" 01996 M00S01994.keyex +++| 01997 M00S01995.keyex +++|* ADDRESS OF Z80 ROUTINE *POP* IS STORED IN KEY 71. 01998 M00S01996.keyex +++| 01999 M00S01997.keyex +++| ., Z"71", Z"D11B" 02000 M00S01998.keyex +++| 02001 M00S01999.keyex +++|* ADDRESS OF Z80 ROUTINE *RESET* IS STORED IN KEY 72. 02002 M00S02000.keyex +++| 02003 M00S02001.keyex +++| ., Z"72", Z"D133" 02004 M00S02002.keyex +++| 02005 M00S02003.keyex +++|* ADDRESS OF Z80 ROUTINE *LABEL* IS STORED IN KEY 73. 02006 M00S02004.keyex +++| 02007 M00S02005.keyex +++| ., Z"73", Z"D151" 02008 M00S02006.keyex +++| 02009 M00S02007.keyex +++|* ADDRESS OF Z80 ROUTINE *VERIFY* IS STORED IN KEY 75. 02010 M00S02008.keyex +++| 02011 M00S02009.keyex +++| ., Z"75", Z"D16E" 02012 M00S02010.keyex +++| ./ 02013 M00S02011.keyex +++| 02014 M00S02012.keyex +++| 02015 M00S02013.keyex +++|*NOTIFY THE TERMINAL OF FOLLOWING CONTROL SEQUENCE. 02016 M00S02014.keyex +++| 02017 M00S02015.keyex +++| CALL SEQPACK(ZCONSEQ,4) 02018 M00S02016.keyex +++| 02019 M00S02017.keyex +++|* STORE ADDRESS FOR THE Z80 PROGRAM. 02020 M00S02018.keyex +++| 02021 M00S02019.keyex +++| ADDR = ZABSLOC 02022 M00S02020.keyex +++| CALL ZSNDADD(ADDR) 02023 M00S02021.keyex +++| 02024 M00S02022.keyex +++|* STORE Z80 CONTROLWARE ROUTINES IN CONSECUTIVE MEMORY AT *ZABSLOC*. 02025 M00S02023.keyex +++| 02026 M00S02024.keyex +++| CALL ZSNDSEQ(ZPUSH, LZPUSH) 02027 M00S02025.keyex +++| CALL ZSNDSEQ(ZPOP, LZPOP) 02028 M00S02026.keyex +++| CALL ZSNDSEQ(ZRESET, LZRESET) 02029 M00S02027.keyex +++| CALL ZSNDSEQ(ZLABEL, LZLABEL) 02030 M00S02028.keyex +++| CALL ZSNDSEQ(ZVERFY, LZVERFY) 02031 M00S02029.keyex +++| CALL SEQPACK(ZCARRET,1) 02032 M00S02030.keyex +++| 02033 M00S02031.keyex +++|* STORE ADDRESSES OF Z80 ROUTINES AT VIRTUAL 7X KEY DEFINITIONS. 02034 M00S02032.keyex +++| 02035 M00S02033.keyex +++| DO 110 I = 1, LKEYC 02036 M00S02034.keyex +++| ADDR = KEYC(I, 2) 02037 M00S02035.keyex +++| ZCONSEQ(3) = KEYC(I, 1) 02038 M00S02036.keyex +++| CALL SEQPACK(ZCONSEQ,4) 02039 M00S02037.keyex +++| CALL ZSNDADD(ADDR) 02040 M00S02038.keyex +++| CALL SEQPACK(ZCARRET,1) 02041 M00S02039.keyex +++|110 CONTINUE 02042 M00S02040.keyex +++| RETURN 02043 M00S02041.keyex +++| END 02044 M00S02042.keyex +++| IDENT PLT 02045 M00S02043.keyex +++| ENTRY PLT 02046 M00S02044.keyex +++| ENTRY PROMPT 02047 M00S02045.keyex +++| ENTRY ERR 02048 M00S02046.keyex +++| ENTRY RFL= 02049 M00S02047.keyex +++| SPACE 4,10 02050 M00S02048.keyex +++|* COMMON DECKS. 02051 M00S02049.keyex +++|*CALL COMCMAC 02052 M00S02050.keyex +++| PLT SPACE 4,30 02053 M00S02051.keyex +++|** PLT - PANEL LOADER TABLE. 02054 M00S02052.keyex +++|* 02055 M00S02053.keyex +++|* *PLT* FORCES THE CYBER LOADER TO INCLUDE THE SMF PANELS 02056 M00S02054.keyex +++|* AS STATICALLY LOADED PANELS, AND ARE THEREFORE STATISFIED 02057 M00S02055.keyex +++|* BY THE LOADER AT LOAD TIME. 02058 M00S02056.keyex +++|* 02059 M00S02057.keyex +++|* NOTE THE FIRST TWO STATEMENTS INDICATE THE NUMBER OF 02060 M00S02058.keyex +++|* PANELS. 02061 M00S02059.keyex +++| 02062 M00S02060.keyex +++| 02063 M00S02061.keyex +++|PLT VFD 60/8 02064 M00S02062.keyex +++| VFD 60/8 02065 M00S02063.keyex +++| VFD 60/7LKEYPAN1 02066 M00S02064.keyex +++| VFD 1/1,41/0,18/=XKEYPAN1 02067 M00S02065.keyex +++| VFD 60/7LKEYPAN2 02068 M00S02066.keyex +++| VFD 1/1,41/0,18/=XKEYPAN2 02069 M00S02067.keyex +++| VFD 60/7LKEYPAN3 02070 M00S02068.keyex +++| VFD 1/1,41/0,18/=XKEYPAN3 02071 M00S02069.keyex +++| VFD 60/7LKEYPAN4 02072 M00S02070.keyex +++| VFD 1/1,41/0,18/=XKEYPAN4 02073 M00S02071.keyex +++| VFD 60/7LKEYPAN5 02074 M00S02072.keyex +++| VFD 1/1,41/0,18/=XKEYPAN5 02075 M00S02073.keyex +++| VFD 60/7LKEYPAN6 02076 M00S02074.keyex +++| VFD 1/1,41/0,18/=XKEYPAN6 02077 M00S02075.keyex +++| VFD 60/7LKEYPAN7 02078 M00S02076.keyex +++| VFD 1/1,41/0,18/=XKEYPAN7 02079 M00S02077.keyex +++| VFD 60/7LKEYPAN8 02080 M00S02078.keyex +++| VFD 1/1,41/0,18/=XKEYPAN8 02081 M00S02079.keyex +++| PROMPT SPACE 4,15 02082 M00S02080.keyex +++|** PROMPT - TURN FORTRAN PROMPTS OFF. 02083 M00S02081.keyex +++|* 02084 M00S02082.keyex +++|* *PROMPT* TURNS OFF THE FORTRAN PROMPTS IN *CHECK* AND 02085 M00S02083.keyex +++|* *DISPLAY* ROUTINES. 02086 M00S02084.keyex +++|* 02087 M00S02085.keyex +++|* CALLS PROMPT. 02088 M00S02086.keyex +++| 02089 M00S02087.keyex +++| 02090 M00S02088.keyex +++|PROMPT SUBR 02091 M00S02089.keyex +++| PROMPT OFF 02092 M00S02090.keyex +++| EQ PROMPTX RETURN 02093 M00S02091.keyex +++| 02094 M00S02092.keyex +++| ERR SPACE 4,30 02095 M00S02093.keyex +++|** ERR - ERROR PROCESSING. 02096 M00S02094.keyex +++|* 02097 M00S02095.keyex +++|* *ERR* RESETS THE *R1* REGISTER WHICH IS USED AS AN ERROR FLAG 02098 M00S02096.keyex +++|* IN THE *CCL* PROCEDURE. 02099 M00S02097.keyex +++|* 02100 M00S02098.keyex +++|* ENTRY THE USER IS IN LINE MODE OR DOES NOT HAVE A *721* TYPE 02101 M00S02099.keyex +++|* TERMINAL. 02102 M00S02100.keyex +++|* 02103 M00S02101.keyex +++|* EXIT R1 = 1 02104 M00S02102.keyex +++|* 02105 M00S02103.keyex +++|* USES X - 1, 6 02106 M00S02104.keyex +++|* A - 1, 6 02107 M00S02105.keyex +++|* 02108 M00S02106.keyex +++|* CALLS GETJCR, SETJCR. 02109 M00S02107.keyex +++| 02110 M00S02108.keyex +++| 02111 M00S02109.keyex +++|ERR SUBR 02112 M00S02110.keyex +++| GETJCR REGS 02113 M00S02111.keyex +++| SA1 REGS 02114 M00S02112.keyex +++| SX6 X1+1 02115 M00S02113.keyex +++| SA6 REGS 02116 M00S02114.keyex +++| SETJCR REGS 02117 M00S02115.keyex +++| EQ ERRX RETURN 02118 M00S02116.keyex +++| 02119 M00S02117.keyex +++|REGS CON 0 02120 M00S02118.keyex +++| 02121 M00S02119.keyex +++|* BLANK COMMON BLOCK IS USED TO CREATE AN RFL= ENTRY POINT. 02122 M00S02120.keyex +++| 02123 M00S02121.keyex +++| USE // 02124 M00S02122.keyex +++|RFL= BSS 0 02125 M00S02123.keyex +++| 02126 M00S02124.keyex +++| END
cdc/nos2.source/opl.opl871/deck/keyex.txt ยท Last modified: (external edit)