cdc:nos2.source:opl.opl871:deck:keyex
Deck KEYEX
1 Modification
Source
Seq # *Modification Id* Act ----------------------------+ 00001 M01S00001.keyex +++| PROGRAM KEYEX(TAPE1=100,OUTPUT=100,TTFILE=100 00002 M01S00002.keyex +++| . ,INPUT=100, KEYPRNT=100, TAPE6 = KEYPRNT 00003 M01S00003.keyex +++| . ,TAPE2=OUTPUT,TAPE3=TTFILE,TAPE5=INPUT) 00004 M01S00004.keyex +++| 00005 M01S00005.keyex +++|*** KEY DEFINITION UTILITY. 00006 M01S00001.281l803 +++|* 00007 M01S00002.281l803 +++|* COPYRIGHT CONTROL DATA SYSTEMS INC. 1992. 00008 M01S00006.keyex +++|* 00009 M01S00007.keyex +++|* THE *KEY* COMMAND WAS DESIGNED TO BE USED ONLY ON THE VIKING 721 00010 M01S00008.keyex +++|* TERMINAL. IT MAKES USE OF THE PROGRAMMABLE FUNCTION KEYS ON THE 00011 M01S00009.keyex +++|* VIKING 721. YOU CAN CREATE OR EDIT DEFINITIONS FOR FUNCTION 00012 M01S00010.keyex +++|* KEYS AND SET TERMINAL CHARACTERISTICS. 00013 M01S00011.keyex +++|* 00014 M01S00012.keyex +++|* W. F. ANSLEY 83/06/01. CYBER INTERFACE AND PANELS. 00015 M01S00013.keyex +++|* S. L. KSANDER 83/06/01. 721 INTERFACE AND Z80 CODE. 00016 M01S00014.keyex +++|* 83/11/07. UPDATED TO INCLUDE THE CHECK AND PRINT 00017 M01S00015.keyex +++|* COMMANDS. 00018 M01S00016.keyex +++|* 84/02/29. UPDATE TO INCLUDE THE PF COMMANDS. 00019 M01S00017.keyex +++|* M. D. LEMBCKE 84/10/30. REVISED AND STANDARDIZED. 00020 M01S00018.keyex +++|* M. L. SWANSON 85/02/05. 00021 M01S00019.keyex +++| 00022 M01S00020.keyex +++|*** THE COMMAND FORMATS ARE: KEY,OPTION. OR 00023 M01S00021.keyex +++|* KEY(OPTION,FILENAME) 00024 M01S00022.keyex +++|* 00025 M01S00023.keyex +++|* WHERE OPTION CAN BE ONE OF THE FOLLOWING: 00026 M01S00024.keyex +++|* 00027 M01S00025.keyex +++|* HELP GIVES THE USER COMPLETE INFORMATION ON THE *KEY* 00028 M01S00026.keyex +++|* COMMAND AND ITS USE. *FILENAME* IS IGNORED WITH 00029 M01S00027.keyex +++|* THIS OPTION. 00030 M01S00028.keyex +++|* 00031 M01S00029.keyex +++|* CHECK CHECKS TO SEE IF THE FUNCTION KEYS ARE ALREADY 00032 M01S00030.keyex +++|* LOADED. IF NOT, A LOAD WILL BE EXECUTED. THIS 00033 M01S00031.keyex +++|* WILL SAVE TIME FOR THE USER OPERATING AT A LOW 00034 M01S00032.keyex +++|* BAUD RATE. 00035 M01S00033.keyex +++|* 00036 M01S00034.keyex +++|* NOTE: A GOOD USE FOR THIS OPTION IS IN A PROLOGUE 00037 M01S00035.keyex +++|* AT LOGIN TIME (REFER TO THE UPROC COMMAND). 00038 M01S00036.keyex +++|* 00039 M01S00037.keyex +++|* DISPLAY DISPLAYS THE FIRST SIXTEEN FUNCTION KEY LABELS THAT 00040 M01S00038.keyex +++|* ARE CURRENTLY STORED IN THE 721. 00041 M01S00039.keyex +++|* 00042 M01S00040.keyex +++|* DEFAULT SETS THE KEY DEFINITIONS FOR THE HELP, EDIT AND STOP 00043 M01S00041.keyex +++|* KEY TO THE NOS SYSTEM DEFAULTS. *FILENAME* IS IGNORED 00044 M01S00042.keyex +++|* FOR THIS OPTION. THE DEFAULTS SET ARE: HELP KEY = 00045 M01S00043.keyex +++|* HELP. EDIT KEY = FSE. STOP KEY = CTRL T/NEXT. 00046 M01S00044.keyex +++|* 00047 M01S00045.keyex +++|* EDIT ALLOWS THE USER TO UPDATE THEIR EXISTING KEY 00048 M01S00046.keyex +++|* DEFINITIONS ON *FILENAME*. IF *FILENAME* IS 00049 M01S00047.keyex +++|* NOT SPECIFIED, A FILE NAMED *KEYDEFS* WILL 00050 M01S00048.keyex +++|* BE CREATED AND SAVED UNDER THE USER'S USERNAME. 00051 M01S00049.keyex +++|* 00052 M01S00050.keyex +++|* LOAD THIS WILL DOWNLINE LOAD THE KEY DEFINITIONS FROM THE 00053 M01S00051.keyex +++|* SPECIFIED FILE INTO THE TERMINAL WITHOUT ANY USER 00054 M01S00052.keyex +++|* INTERACTION. IF NO FILE IS SPECIFIED, THE DEFAULT 00055 M01S00053.keyex +++|* FILE *KEYDEFS* WILL BE USED. 00056 M01S00054.keyex +++|* 00057 M01S00055.keyex +++|* PRINT THIS WILL LIST ONLY THE KEYS THAT ARE DEFINED ON THE 00058 M01S00056.keyex +++|* SPECIFIED FILE. THE OUTPUT WILL BE PLACED ON THE 00059 M01S00057.keyex +++|* LOCAL FILE *KEYPRNT*. IF NO FILE IS SPECIFIED, 00060 M01S00058.keyex +++|* *KEYDEFS* IS USED. THIS DOES NOT NECESSARILY LIST 00061 M01S00059.keyex +++|* THE KEY DEFINITIONS THAT ARE CURRENTLY LOADED INTO 00062 M01S00060.keyex +++|* THE TERMINAL, JUST THOSE THAT ARE ON THE SPECIFIED 00063 M01S00061.keyex +++|* FILE. 00064 M01S00062.keyex +++|* 00065 M01S00063.keyex +++|* FILENAME THE DEFAULT FILE NAME IS *KEYDEFS*. 00066 M01S00064.keyex +++| 00067 M01S00065.keyex +++|*** ERROR MESSAGES. 00068 M01S00066.keyex +++|* 00069 M01S00067.keyex +++|* * PLEASE ENTER THE SYSTEM COMMAND SCREEN(721) 00070 M01S00068.keyex +++|* AND RE-ENTER THE KEY COMMAND.* 00071 M01S00069.keyex +++|* THE PROGRAM HAS DETECTED THE TERMINAL MODEL NAME DOES 00072 M01S00070.keyex +++|* NOT BEGIN WITH THE PREFIX "721" AND HENCE THE TERMINAL 00073 M01S00071.keyex +++|* HAS NOT BEEN RECOGNIZED AS A VIKING X. NO PROCESSING 00074 M01S00072.keyex +++|* OCCURS IN THIS CASE. 00075 M01S00073.keyex +++| 00076 M01S00074.keyex +++|*** MESSAGES. 00077 M01S00075.keyex +++|* 00078 M01S00076.keyex +++|* * FUNCTION KEYS ARE ALREADY LOADED.* 00079 M01S00077.keyex +++|* OUTPUT BY ROUTINE *CHECK* TO SIGNIFY NO LOAD WAS 00080 M01S00078.keyex +++|* PROCESSED. 00081 M01S00079.keyex +++|* 00082 M01S00080.keyex +++|* * FUNCTION KEYS ARE NOT LOADED.* 00083 M01S00081.keyex +++|* OUTPUT BY ROUTINE *DISPLAY* IF FUNCTION KEYS HAVE NOT 00084 M01S00082.keyex +++|* BEEN DEFINED. 00085 M01S00083.keyex +++|* 00086 M01S00084.keyex +++|* * FUNCTION KEYS HAVE BEEN LOADED.* 00087 M01S00085.keyex +++|* OUTPUT BY ROUTINE *LOAD* IF FUNCTION KEYS WERE LOADED. 00088 M01S00086.keyex +++|* 00089 M01S00087.keyex +++|* * THE FUNCTION KEYS *EDIT*, *HELP*, AND *STOP* HAVE BEEN LOADED.* 00090 M01S00088.keyex +++|* OUTPUT BY ROUTINE *DEFAULT* IF *EDIT*, *HELP*, *STOP* 00091 M01S00089.keyex +++|* KEYS WERE LOADED. 00092 M01S00090.keyex +++|* 00093 M01S00091.keyex +++|* * THE KEY DEFINITIONS FILE HAS BEEN REPLACED.* 00094 M01S00092.keyex +++|* OUTPUT BY ROUTINE *EDIT* IF KEY DEFINITIONS FILE IS 00095 M01S00093.keyex +++|* REPLACED. 00096 M01S00094.keyex +++|* 00097 M01S00095.keyex +++|* * THE LIST OF DEFINED FUNCTION KEYS IS ON THE LOCAL FILE 00098 M01S00096.keyex +++|* *KEYPRNT*.* - OUTPUT BY ROUTINE *PRINT* AS AN INFORM- 00099 M01S00097.keyex +++|* ATIVE MESSAGE TO THE USER. 00100 M01S00098.keyex +++| 00101 M01S00099.keyex +++|*** *KEY* FILES. 00102 M01S00100.keyex +++|* 00103 M01S00101.keyex +++|* THE FOLLOWING DECKS/FILES ARE ASSOCIATED WITH THE *KEY* UTILITY. 00104 M01S00102.keyex +++|* 00105 M01S00103.keyex +++|* PROCEDURES: 00106 M01S00104.keyex +++|* KEY *CCL* PROCEDURE. 00107 M01S00105.keyex +++|* 00108 M01S00106.keyex +++|* CODE: 00109 M01S00107.keyex +++|* KEYEX KEY EXECUTIVE PROGRAM. 00110 M01S00108.keyex +++|* KEYPANS SCREEN FORMATTING PANELS. 00111 M01S00109.keyex +++|* KEYUTIL Z80 SOURCE CODE. 00112 M01S00110.keyex +++| 00113 M01S00111.keyex +++| 00114 M01S00112.keyex +++| 00115 M01S00113.keyex +++| 00116 M01S00114.keyex +++|** MAIN PROGRAM. 00117 M01S00115.keyex +++| 00118 M01S00116.keyex +++|** KEYEX - EXECUTIVE PROGRAM FOR *KEY* UTILITY. 00119 M01S00117.keyex +++|* 00120 M01S00118.keyex +++|* *KEYEX* SETS UP DEFAULTS IN COMMON BLOCK *INFO*, CRACKS 00121 M01S00119.keyex +++|* COMMAND PARAMETERS, AND PROCESSES USER SPECIFIED OPTIONS. 00122 M01S00120.keyex +++|* 00123 M01S00121.keyex +++|* KEYEX(OPTION, FILENAME) 00124 M01S00122.keyex +++|* 00125 M01S00123.keyex +++|* ENTRY OPTION - USER SPECIFIED OPTION. 00126 M01S00124.keyex +++|* FILENAME - OPTIONAL FILE NAME. 00127 M01S00125.keyex +++|* 00128 M01S00126.keyex +++|* EXIT *CCL* GLOBAL VARIABLE *R1* = 1 IF TERMINAL TYPE IS 00129 M01S00127.keyex +++|* INCORRECT. 00130 M01S00128.keyex +++|* 00131 M01S00129.keyex +++|* CALLS CHECK, CHKTERM, DEFAULT, DISPLAY, EDIT, HELP, LOAD, 00132 M01S00130.keyex +++|* PRINT, SYSKEYS. 00133 M01S00131.keyex +++| 00134 M01S00132.keyex +++| 00135 M01S00133.keyex +++| IMPLICIT INTEGER (A - Z) 00136 M01S00134.keyex +++| 00137 M01S00135.keyex +++| PARAMETER (NKEYS = 45) 00138 M01S00136.keyex +++|* NUMBER OF DEFINABLE FUNCTION KEYS 00139 M01S00137.keyex +++| 00140 M01S00138.keyex +++| CHARACTER*7 OPTION 00141 M01S00139.keyex +++|* OPTION SPECIFIED BY THE USER 00142 M01S00140.keyex +++| CHARACTER*7 FILENM 00143 M01S00141.keyex +++|* KEY DEFINITIONS FILE 00144 M01S00142.keyex +++| CHARACTER*67 KEYS(NKEYS) 00145 M01S00143.keyex +++|* FUNCTION KEY DEFINITIONS 00146 M01S00144.keyex +++|* 7/ KEY LABEL, 60/ KEY DEFINITION 00147 M01S00145.keyex +++| CHARACTER*7 PARM 00148 M01S00146.keyex +++|* PARAMETER NAME 00149 M01S00147.keyex +++| CHARACTER*7 SETDATA(3) 00150 M01S00148.keyex +++|* SETUP TERMINAL CHARACTERISTICS 00151 M01S00149.keyex +++| 00152 M01S00150.keyex +++| COMMON / INFO / KEYS, FILENM, SETDATA 00153 M01S00151.keyex +++| 00154 M01S00152.keyex +++| 00155 M01S00153.keyex +++|* SET UP DEFAULTS IN COMMON BLOCK AND GET INPUT PARAMETERS. 00156 M01S00154.keyex +++| 00157 M01S00155.keyex +++| CALL SYSKEYS 00158 M01S00156.keyex +++| CALL GETPARM(PARM,OPTION,I) 00159 M01S00157.keyex +++| CALL GETPARM(PARM,FILENM,I) 00160 M01S00158.keyex +++| 00161 M01S00159.keyex +++|* CHECK TERMINAL TYPE AND PROCESS OPTION SPECIFIED BY THE USER. 00162 M01S00160.keyex +++| 00163 M01S00161.keyex +++| CALL CHKTERM 00164 M01S00162.keyex +++| IF(OPTION .EQ. 'CHECK ') THEN 00165 M01S00163.keyex +++| CALL CHECK 00166 M01S00164.keyex +++| ELSE IF(OPTION .EQ. 'DEFAULT') THEN 00167 M01S00165.keyex +++| CALL DEFAULT 00168 M01S00166.keyex +++| ELSE IF(OPTION .EQ. 'DISPLAY') THEN 00169 M01S00167.keyex +++| CALL DISPLAY 00170 M01S00168.keyex +++| ELSE IF(OPTION .EQ. 'EDIT ') THEN 00171 M01S00169.keyex +++| CALL EDIT 00172 M01S00170.keyex +++| ELSE IF(OPTION .EQ. 'HELP ') THEN 00173 M01S00171.keyex +++| CALL HELP 00174 M01S00172.keyex +++| ELSE IF(OPTION .EQ. 'LOAD ') THEN 00175 M01S00173.keyex +++| CALL LOAD 00176 M01S00174.keyex +++| ELSE IF(OPTION .EQ. 'PRINT ') THEN 00177 M01S00175.keyex +++| CALL PRINT 00178 M01S00176.keyex +++| ENDIF 00179 M01S00177.keyex +++| CLOSE(1,STATUS='DELETE') 00180 M01S00178.keyex +++| CLOSE(3,STATUS='DELETE') 00181 M01S00179.keyex +++| END 00182 M01S00180.keyex +++| 00183 M01S00181.keyex +++| 00184 M01S00182.keyex +++| SUBROUTINE BYTE (CHAR, UBYTE, LBYTE) 00185 M01S00183.keyex +++| 00186 M01S00184.keyex +++|** BYTE - CONVERT ADDRESS TO Z80 FORMAT. 00187 M01S00185.keyex +++|* 00188 M01S00186.keyex +++|* *BYTE* TAKES *CHAR* AND DIVIDES IT, CHANGING THE ADDRESS INTO 00189 M01S00187.keyex +++|* 721 Z80 FORMAT AND RETURNS THE RESULT IN *UBYTE* AND *LBYTE*. 00190 M01S00188.keyex +++|* 00191 M01S00189.keyex +++|* CALL BYTE(CHAR, UBYTE, LBYTE) 00192 M01S00190.keyex +++|* 00193 M01S00191.keyex +++|* ENTRY CHAR - CHARACTER BYTE ADDRESS. 00194 M01S00192.keyex +++|* 00195 M01S00193.keyex +++|* EXIT UBYTE - THE UPPER HALF ADDRESS WITH THE PREFIX *60*. 00196 M01S00194.keyex +++|* LBYTE - THE LOWER HALF ADDRESS WITH THE PREFIX *20*. 00197 M01S00195.keyex +++|* 00198 M01S00196.keyex +++|* NOTE THE Z80 MICRO REQUIRES A 16 BIT ADDRESS WITH THE UPPER 00199 M01S00197.keyex +++|* BYTE BEFORE THE LOWER BYTE. 00200 M01S00198.keyex +++| 00201 M01S00199.keyex +++| 00202 M01S00200.keyex +++| IMPLICIT INTEGER (A - Z) 00203 M01S00201.keyex +++| 00204 M01S00202.keyex +++| BOOLEAN ZPREFIX 00205 M01S00203.keyex +++|* Z80 CODE PREFIX 00206 M01S00204.keyex +++| BOOLEAN Z20CODE 00207 M01S00205.keyex +++|* *20* PREFIX FOR Z80 ADDRESS 00208 M01S00206.keyex +++| BOOLEAN Z60CODE 00209 M01S00207.keyex +++|* *60* PREFIX FOR Z80 ADDRESS 00210 M01S00208.keyex +++| 00211 M01S00209.keyex +++| DATA ZPREFIX / Z"800" / 00212 M01S00210.keyex +++| DATA Z20CODE / Z"20" / 00213 M01S00211.keyex +++| DATA Z60CODE / Z"60" / 00214 M01S00212.keyex +++| 00215 M01S00213.keyex +++| C = AND(CHAR, Z"F0") 00216 M01S00214.keyex +++| UBYTE = SHIFT(C, -4) + Z20CODE + ZPREFIX 00217 M01S00215.keyex +++| LBYTE = AND(CHAR, Z"0F") + Z60CODE + ZPREFIX 00218 M01S00216.keyex +++| RETURN 00219 M01S00217.keyex +++| END 00220 M01S00218.keyex +++| 00221 M01S00219.keyex +++| 00222 M01S00220.keyex +++| SUBROUTINE CHECK 00223 M01S00221.keyex +++| 00224 M01S00222.keyex +++|** CHECK - CHECK IF FUNCTION KEYS HAVE BEEN LOADED. 00225 M01S00223.keyex +++|* 00226 M01S00224.keyex +++|* *CHECK* QUERIES THE TERMINAL TO DETERMINE IF Z80 CONTROLWARE 00227 M01S00225.keyex +++|* AND KEY DEFINITIONS ARE LOADED INTO THE TERMINAL. 00228 M01S00226.keyex +++|* 00229 M01S00227.keyex +++|* CALL CHECK 00230 M01S00228.keyex +++|* 00231 M01S00229.keyex +++|* CALLS LOAD, VERLOAD. 00232 M01S00230.keyex +++|* 00233 M01S00231.keyex +++|* MESSAGES 00234 M01S00232.keyex +++|* FUNCTION KEYS HAVE BEEN LOADED. 00235 M01S00233.keyex +++| 00236 M01S00234.keyex +++| 00237 M01S00235.keyex +++| IMPLICIT INTEGER (A - Z) 00238 M01S00236.keyex +++| 00239 M01S00237.keyex +++| LOGICAL LOADED 00240 M01S00238.keyex +++|* CONTROLWARE LOADED FLAG 00241 M01S00239.keyex +++| 00242 M01S00240.keyex +++| DATA LOADED / .FALSE. / 00243 M01S00241.keyex +++| 00244 M01S00242.keyex +++|10 FORMAT('FUNCTION KEYS ARE ALREADY LOADED.') 00245 M01S00243.keyex +++| 00246 M01S00244.keyex +++| CALL VERLOAD(LOADED) 00247 M01S00245.keyex +++| 00248 M01S00246.keyex +++| IF (.NOT.LOADED) THEN 00249 M01S00247.keyex +++| CALL LOAD 00250 M01S00248.keyex +++| ELSE 00251 M01S00249.keyex +++| WRITE(2,10) 00252 M01S00250.keyex +++| ENDFILE 2 00253 M01S00251.keyex +++| ENDIF 00254 M01S00252.keyex +++| RETURN 00255 M01S00253.keyex +++| END 00256 M01S00254.keyex +++| 00257 M01S00255.keyex +++| 00258 M01S00256.keyex +++| SUBROUTINE CHKTERM 00259 M01S00257.keyex +++| 00260 M01S00258.keyex +++|** CHKTERM - CHECK TERMINAL MODEL NAME. 00261 M01S00259.keyex +++|* 00262 M01S00260.keyex +++|* *CHKTERM* VERIFIES THAT THE FIRST THREE CHARACTERS OF THE 00263 M01S00261.keyex +++|* TERMINAL MODEL NAME SPECIFIED TO THE SCREEN OR LINE COMMAND 00264 M01S00262.keyex +++|* WAS "721". 00265 M01S00263.keyex +++|* 00266 M01S00264.keyex +++|* CALL CHKTERM 00267 M01S00265.keyex +++|* 00268 M01S00266.keyex +++|* ERROR *ERR* IS CALLED IF THE TERMINAL MODEL IS NOT PREFIXED 00269 M01S00267.keyex +++|* BY "721". 00270 M01S00268.keyex +++|* 00271 M01S00269.keyex +++|* CALLS ERR, SFGETN. 00272 M01S00270.keyex +++|* 00273 M01S00271.keyex +++|* MESSAGES 00274 M01S00272.keyex +++|* PLEASE ENTER THE SYSTEM COMMAND: SCREEN,721. 00275 M01S00273.keyex +++|* AND RE-ENTER THE KEY COMMAND. 00276 M01S00274.keyex +++|* STOP. FIX ERROR. 00277 M01S00275.keyex +++| 00278 M01S00276.keyex +++| 00279 M01S00277.keyex +++| IMPLICIT INTEGER (A - Z) 00280 M01S00278.keyex +++| 00281 M01S00279.keyex +++| CHARACTER*7 MODNAME 00282 M01S00280.keyex +++|* TERMINAL MODEL NAME. 00283 M01S00281.keyex +++| CHARACTER*3 PREFIX 00284 M01S00282.keyex +++|* THREE CHARACTER PREFIX 00285 M01S00283.keyex +++| CHARACTER*3 PRE721 00286 M01S00284.keyex +++|* CHARACTER STRING PREFIX FOR 721 00287 M01S00285.keyex +++| 00288 M01S00286.keyex +++| EQUIVALENCE (MODNAME, PREFIX) 00289 M01S00287.keyex +++| 00290 M01S00288.keyex +++| DATA PRE721 / '721' / 00291 M01S00289.keyex +++| 00292 M01S00290.keyex +++|10 FORMAT(' PLEASE ENTER THE SYSTEM COMMAND: SCREEN,721.', 00293 M01S00291.keyex +++| ./' AND RE-ENTER THE KEY COMMAND.') 00294 M01S00292.keyex +++| 00295 M01S00293.keyex +++|* GET TERMINAL MODEL NAME. 00296 M01S00294.keyex +++| 00297 M01S00295.keyex +++| CALL SFGETN(MODNAME) 00298 M01S00296.keyex +++| 00299 M01S00297.keyex +++|* IF PREFIX IS NOT '721', NOTIFY USER OF ERROR. 00300 M01S00298.keyex +++| 00301 M01S00299.keyex +++| IF (PREFIX .NE. PRE721) THEN 00302 M01S00300.keyex +++| WRITE(2,10) 00303 M01S00301.keyex +++| CALL ERR 00304 M01S00302.keyex +++| STOP 'FIX ERROR.' 00305 M01S00303.keyex +++| ENDIF 00306 M01S00304.keyex +++| RETURN 00307 M01S00305.keyex +++| END 00308 M01S00306.keyex +++| 00309 M01S00307.keyex +++| 00310 M01S00308.keyex +++| SUBROUTINE CLEAR 00311 M01S00309.keyex +++| 00312 M01S00310.keyex +++|** CLEAR - CLEAR THE USER DEFINED FUNCTION KEYS IN THE TERMINAL. 00313 M01S00311.keyex +++|* 00314 M01S00312.keyex +++|* *CLEAR* CLEARS THE FUNCTION KEY DEFINITIONS WITHIN THE 00315 M01S00313.keyex +++|* TERMINAL BY EXECUTING A HOST-LOADED CONTROLWARE ROUTINE 00316 M01S00314.keyex +++|* THAT REINITIALIZES THE TERMINALS KEY DEFINITION TABLE. 00317 M01S00315.keyex +++|* 00318 M01S00316.keyex +++|* CALL CLEAR 00319 M01S00317.keyex +++|* 00320 M01S00318.keyex +++|* CALLS PACK, SEQPACK. 00321 M01S00319.keyex +++| 00322 M01S00320.keyex +++| 00323 M01S00321.keyex +++| IMPLICIT INTEGER (A - Z) 00324 M01S00322.keyex +++| 00325 M01S00323.keyex +++| 00326 M01S00324.keyex +++| BOOLEAN ZCARRET(1) 00327 M01S00325.keyex +++|* HEX CODE FOR CARRIAGE RETURN 00328 M01S00326.keyex +++| BOOLEAN ZRESETR(3) 00329 M01S00327.keyex +++|* HEX SEQUENCE TO INVOKE RESET ROUTINE 00330 M01S00328.keyex +++| 00331 M01S00329.keyex +++| 00332 M01S00330.keyex +++| DATA ZCARRET / Z"0D" / 00333 M01S00331.keyex +++| DATA ZRESETR / Z"1E", Z"12", Z"72" / 00334 M01S00332.keyex +++| 00335 M01S00333.keyex +++|* RESET KEYS TO THE DEFAULT 721 SETTINGS BY DOING A HOST EXECUTE 00336 M01S00334.keyex +++|* OF THE HOST LOADED Z80 CONTROLWARE ROUTINE *RESET*. 00337 M01S00335.keyex +++| 00338 M01S00336.keyex +++| CALL PACK(1, 0) 00339 M01S00337.keyex +++| CALL SEQPACK(ZRESETR,3) 00340 M01S00338.keyex +++| CALL SEQPACK(ZCARRET,1) 00341 M01S00339.keyex +++| CALL PACK(3, 1) 00342 M01S00340.keyex +++| RETURN 00343 M01S00341.keyex +++| END 00344 M01S00342.keyex +++| 00345 M01S00343.keyex +++| 00346 M01S00344.keyex +++| SUBROUTINE DEFAULT 00347 M01S00345.keyex +++| 00348 M01S00346.keyex +++|** DEFAULT - LOAD DEFAULT FUNCTION KEYS. 00349 M01S00347.keyex +++|* 00350 M01S00348.keyex +++|* *DEFAULT* LOADS THE *EDIT*, *HELP*, AND *STOP* FUNCTION KEYS. 00351 M01S00349.keyex +++|* 00352 M01S00350.keyex +++|* CALL DEFAULT 00353 M01S00351.keyex +++|* 00354 M01S00352.keyex +++|* EXIT *KEYS* AND *SETDATA* ARE SET TO DEFAULT VALUES. 00355 M01S00353.keyex +++|* 00356 M01S00354.keyex +++|* CALLS CLEAR, SEND. 00357 M01S00355.keyex +++|* 00358 M01S00356.keyex +++|* MESSAGES 00359 M01S00357.keyex +++|* THE FUNCTION KEYS *EDIT*, *HELP*, AND *STOP* HAVE BEEN 00360 M01S00358.keyex +++|* LOADED. 00361 M01S00359.keyex +++| 00362 M01S00360.keyex +++| 00363 M01S00361.keyex +++| IMPLICIT INTEGER (A - Z) 00364 M01S00362.keyex +++| 00365 M01S00363.keyex +++|10 FORMAT(' THE FUNCTION KEYS *EDIT*, *HELP*, AND *STOP* HAVE ', 00366 M01S00364.keyex +++| .'BEEN LOADED.') 00367 M01S00365.keyex +++| 00368 M01S00366.keyex +++|* CLEAR THE CURRENT FUNCTION KEY DEFINITIONS. 00369 M01S00367.keyex +++| 00370 M01S00368.keyex +++| CALL CLEAR 00371 M01S00369.keyex +++| 00372 M01S00370.keyex +++|* SEND DEFAULT DEFINITIONS TO TERMINAL. 00373 M01S00371.keyex +++| 00374 M01S00372.keyex +++| CALL SEND 00375 M01S00373.keyex +++| WRITE(2,10) 00376 M01S00374.keyex +++| ENDFILE 2 00377 M01S00375.keyex +++| RETURN 00378 M01S00376.keyex +++| END 00379 M01S00377.keyex +++| 00380 M01S00378.keyex +++| 00381 M01S00379.keyex +++| SUBROUTINE DISPLAY 00382 M01S00380.keyex +++| 00383 M01S00381.keyex +++|** DISPLAY - DISPLAY FUNCTION KEYS. 00384 M01S00382.keyex +++|* 00385 M01S00383.keyex +++|* *DISPLAY* DISPLAYS THE FIRST SIXTEEN FUNCTION KEY LABELS THAT 00386 M01S00384.keyex +++|* ARE CURRENTLY LOADED IN THE TERMINAL. 00387 M01S00385.keyex +++|* 00388 M01S00386.keyex +++|* CALL DISPLAY 00389 M01S00387.keyex +++|* 00390 M01S00388.keyex +++|* EXIT THE FIRST SIXTEEN KEY LABELS DISPLAYED USING 00391 M01S00389.keyex +++|* A SCREEN FORMATTING PANEL. 00392 M01S00390.keyex +++|* 00393 M01S00391.keyex +++|* CALLS ERR, PACK, RDSORC, SEQPACK, SFCLOS, SFOPEN, SFSSHO, 00394 M01S00392.keyex +++|* VERLOAD. 00395 M01S00393.keyex +++|* 00396 M01S00394.keyex +++|* MESSAGES 00397 M01S00395.keyex +++|* FUNCTION KEYS ARE NOT LOADED. 00398 M01S00396.keyex +++|* 00399 M01S00397.keyex +++|* PLEASE ENTER THE SYSTEM COMMAND: SCREEN,721. 00400 M01S00398.keyex +++|* AND RE-ENTER THE KEY COMMAND. 00401 M01S00399.keyex +++|* STOP. FIX ERROR. 00402 M01S00400.keyex +++| 00403 M01S00401.keyex +++| 00404 M01S00402.keyex +++| IMPLICIT INTEGER (A - Z) 00405 M01S00403.keyex +++| 00406 M01S00404.keyex +++| PARAMETER (NKEYS = 45) 00407 M01S00405.keyex +++|* NUMBER OF DEFINABLE FUNCTION KEYS 00408 M01S00406.keyex +++| 00409 M01S00407.keyex +++| BOOLEAN ZDISKEY(3) 00410 M01S00408.keyex +++|* HEX SEQUENCE TO DISABLE KEYBOARD ENTRY 00411 M01S00409.keyex +++| BOOLEAN ZENKEYB(3) 00412 M01S00410.keyex +++|* HEX SEQUENCE TO ENABLE KEYBOARD ENTRY 00413 M01S00411.keyex +++| BOOLEAN ZHOSTLC(3) 00414 M01S00412.keyex +++|* HEX SEQUENCE FOR HOST LOADED CONTROLWARE 00415 M01S00413.keyex +++| BOOLEAN ZMCUR80(3) 00416 M01S00414.keyex +++|* HEX SEQUENCE TO MOVE CURSOR FOR 80 COLUMN 00417 M01S00415.keyex +++| BOOLEAN ZMCUR32(5) 00418 M01S00416.keyex +++|* HEX SEQUENCE TO MOVE CURSOR FOR 132 COLUMN 00419 M01S00417.keyex +++| CHARACTER*7 FILENM 00420 M01S00418.keyex +++|* KEY DEFINITIONS FILE 00421 M01S00419.keyex +++| CHARACTER*67 KEYS(NKEYS) 00422 M01S00420.keyex +++|* FUNCTION KEY DEFINITIONS 00423 M01S00421.keyex +++| CHARACTER*112 OPRAM4 00424 M01S00422.keyex +++|* STRING OF USER LABELS 00425 M01S00423.keyex +++| CHARACTER*7 PANEL 00426 M01S00424.keyex +++|* TEMPORARY PANEL NAME 00427 M01S00425.keyex +++| CHARACTER*7 PANEL7 00428 M01S00426.keyex +++|* DISPLAY PANEL FOR 80 CHARACTERS/LINE 00429 M01S00427.keyex +++| CHARACTER*7 PANEL8 00430 M01S00428.keyex +++|* DISPLAY PANEL FOR 132 CHARACTERS/LINE 00431 M01S00429.keyex +++| CHARACTER*7 SETDATA(3) 00432 M01S00430.keyex +++|* TERMINAL CHARACTERISTICS 00433 M01S00431.keyex +++| CHARACTER*7 STR80 00434 M01S00432.keyex +++|* 80 CHARACTERS STRING 00435 M01S00433.keyex +++| CHARACTER*7 STR132 00436 M01S00434.keyex +++|* 132 CHARACTERS STRING 00437 M01S00435.keyex +++| LOGICAL LOADED 00438 M01S00436.keyex +++|* CONTROLWARE LOADED FLAG 00439 M01S00437.keyex +++| 00440 M01S00438.keyex +++| COMMON / INFO / KEYS, FILENM, SETDATA 00441 M01S00439.keyex +++| 00442 M01S00440.keyex +++| DATA OPRAM4 / ' ' / 00443 M01S00441.keyex +++| DATA PANEL7 / 'KEYPAN7' / 00444 M01S00442.keyex +++| DATA PANEL8 / 'KEYPAN8' / 00445 M01S00443.keyex +++| DATA ZDISKEY / Z"1E", Z"12", Z"4D" / 00446 M01S00444.keyex +++| DATA ZENKEYB / Z"1E", Z"12", Z"4E" / 00447 M01S00445.keyex +++| DATA ZHOSTLC / Z"1E", Z"12", Z"73" / 00448 M01S00446.keyex +++| DATA ZMCUR80 / Z"02", Z"20", Z"23"/ 00449 M01S00447.keyex +++| DATA ZMCUR32 / Z"02", Z"7E", Z"20", Z"20", Z"23" / 00450 M01S00448.keyex +++| DATA STR80 / '80 ' / 00451 M01S00449.keyex +++| DATA STR132 / '132 ' / 00452 M01S00450.keyex +++| DATA LOADED / .FALSE. / 00453 M01S00451.keyex +++| 00454 M01S00452.keyex +++|12 FORMAT(A112) 00455 M01S00453.keyex +++|13 FORMAT(' FUNCTION KEYS ARE NOT LOADED.') 00456 M01S00454.keyex +++|14 FORMAT(' PLEASE ENTER THE SYSTEM COMMAND: SCREEN,721.', 00457 M01S00455.keyex +++| ./' AND RE-ENTER THE KEY COMMAND.') 00458 M01S00456.keyex +++| 00459 M01S00457.keyex +++| 00460 M01S00458.keyex +++| CALL VERLOAD(LOADED) 00461 M01S00459.keyex +++| 00462 M01S00460.keyex +++| IF (.NOT.LOADED) THEN 00463 M01S00461.keyex +++| CALL PACK(1, 0) 00464 M01S00462.keyex +++| WRITE(2,13) 00465 M01S00463.keyex +++| ELSE 00466 M01S00464.keyex +++| CALL RDSORC 00467 M01S00465.keyex +++| CALL PACK(1, 0) 00468 M01S00466.keyex +++| CALL SEQPACK(ZHOSTLC,3) 00469 M01S00467.keyex +++| CALL PACK(3, 1) 00470 M01S00468.keyex +++| 00471 M01S00469.keyex +++|* READ THE 721 LABELS FROM THE TERMINAL. 00472 M01S00470.keyex +++| 00473 M01S00471.keyex +++| READ(5, 12) OPRAM4 00474 M01S00472.keyex +++| 00475 M01S00473.keyex +++|* DISPLAY THE LABELS USING THE CORRECT SIZE PANEL. 00476 M01S00474.keyex +++| 00477 M01S00475.keyex +++| IF(SETDATA(3) .EQ. STR132) THEN 00478 M01S00476.keyex +++| PANEL = PANEL8 00479 M01S00477.keyex +++| ELSE 00480 M01S00478.keyex +++| PANEL = PANEL7 00481 M01S00479.keyex +++| ENDIF 00482 M01S00480.keyex +++| 00483 M01S00481.keyex +++| CALL SFOPEN(PANEL, STAT) 00484 M01S00482.keyex +++| IF (STAT .NE. 0) THEN 00485 M01S00483.keyex +++| CALL ERR 00486 M01S00484.keyex +++| STOP 'SF ERROR.' 00487 M01S00485.keyex +++| ELSE 00488 M01S00486.keyex +++| CALL SFSWRI(PANEL, OPRAM4) 00489 M01S00487.keyex +++| CALL SFCLOS(PANEL, 2) 00490 M01S00488.keyex +++| 00491 M01S00489.keyex +++|* POSITION CURSOR UNDER THE DISPLAY OF LABELS. 00492 M01S00490.keyex +++| 00493 M01S00491.keyex +++| CALL PACK(1, 0) 00494 M01S00492.keyex +++| IF(SETDATA(3) .EQ. STR80) THEN 00495 M01S00493.keyex +++| CALL SEQPACK(ZMCUR80,3) 00496 M01S00494.keyex +++| ELSE 00497 M01S00495.keyex +++| CALL SEQPACK(ZMCUR32,5) 00498 M01S00496.keyex +++| ENDIF 00499 M01S00497.keyex +++| 00500 M01S00498.keyex +++| ENDIF 00501 M01S00499.keyex +++| 00502 M01S00500.keyex +++| ENDIF 00503 M01S00501.keyex +++| CALL SEQPACK(ZENKEYB,3) 00504 M01S00502.keyex +++| CALL PACK(3, 1) 00505 M01S00503.keyex +++| RETURN 00506 M01S00504.keyex +++| END 00507 M01S00505.keyex +++| 00508 M01S00506.keyex +++| 00509 M01S00507.keyex +++| SUBROUTINE EDIT 00510 M01S00508.keyex +++| 00511 M01S00509.keyex +++|** EDIT - EDIT FUNCTION KEYS. 00512 M01S00510.keyex +++|* 00513 M01S00511.keyex +++|* *EDIT* ALLOWS THE USER TO DEFINE AND LOAD FUNCTION KEYS 00514 M01S00512.keyex +++|* AND SET TERMINAL CHARACTERISTICS. 00515 M01S00513.keyex +++|* 00516 M01S00514.keyex +++|* CALL EDIT 00517 M01S00515.keyex +++|* 00518 M01S00516.keyex +++|* EXIT *PARM* AND *SETDATA* MAY BE MODIFIED. 00519 M01S00517.keyex +++|* 00520 M01S00518.keyex +++|* CALLS EDSETUP, ERR, LDSETUP, LOAD, RDSORC, SFCLOS, SFGETK, 00521 M01S00519.keyex +++|* SFOPEN, SFSSHO, SYSKEYS, WRSORC. 00522 M01S00520.keyex +++|* 00523 M01S00521.keyex +++|* MESSAGES 00524 M01S00522.keyex +++|* THE KEY DEFINITIONS FILE HAS BEEN REPLACED. 00525 M01S00523.keyex +++|* 00526 M01S00524.keyex +++|* FUNCTION KEYS HAVE BEEN LOADED. 00527 M01S00525.keyex +++| 00528 M01S00526.keyex +++| IMPLICIT INTEGER (A - Z) 00529 M01S00527.keyex +++| 00530 M01S00528.keyex +++| PARAMETER (ORDHELP = 3) 00531 M01S00529.keyex +++|* ORDINAL FOR THE HELP KEY 00532 M01S00530.keyex +++| PARAMETER (ORDBKW = 8) 00533 M01S00531.keyex +++|* ORDINAL FOR THE BKW FUNCTION KEY 00534 M01S00532.keyex +++| PARAMETER (ORDFWD = 7) 00535 M01S00533.keyex +++|* ORDINAL FOR THE FWD FUNCTION KEY 00536 M01S00534.keyex +++| PARAMETER (ORDSTOP = 4) 00537 M01S00535.keyex +++|* ORDINAL FOR THE STOP FUNCTION KEY 00538 M01S00536.keyex +++| PARAMETER (NKEYS = 45) 00539 M01S00537.keyex +++|* NUMBER OF DEFINABLE FUNCTION KEYS 00540 M01S00538.keyex +++| PARAMETER (NPAN = 3) 00541 M01S00539.keyex +++|* NUMBER OF EDIT PANELS 00542 M01S00540.keyex +++| PARAMETER (NKEYSPP = 15) 00543 M01S00541.keyex +++|* NUMBER OF KEYS DEFINABLE PER PANEL 00544 M01S00542.keyex +++| 00545 M01S00543.keyex +++| DIMENSION BASE(NPAN) 00546 M01S00544.keyex +++|* FUNCTION KEYS DIVIDED IN THREE GROUPS 00547 M01S00545.keyex +++| CHARACTER*1 PAGE(NPAN) 00548 M01S00546.keyex +++|* PAGE NUMBER OF PANEL 00549 M01S00547.keyex +++| CHARACTER*7 FILENM 00550 M01S00548.keyex +++|* FILE NAME 00551 M01S00549.keyex +++| CHARACTER*67 KEYS(NKEYS) 00552 M01S00550.keyex +++|* FUNCTION KEY DEFINITIONS 00553 M01S00551.keyex +++| CHARACTER*5 LABELS(NPAN, NKEYSPP) 00554 M01S00552.keyex +++|* FUNCTION KEY LABELS 00555 M01S00553.keyex +++| CHARACTER*7 P1 00556 M01S00554.keyex +++|* BASIC INPUT PANEL 00557 M01S00555.keyex +++| CHARACTER*7 P2 00558 M01S00556.keyex +++|* HELP PANEL 00559 M01S00557.keyex +++| CHARACTER*7 P3 00560 M01S00558.keyex +++|* ASCII-HEX PANEL 00561 M01S00559.keyex +++| CHARACTER*1081 P1IVAR 00562 M01S00560.keyex +++|* INPUT STRING FROM THE PANEL 00563 M01S00561.keyex +++| CHARACTER*1081 P1OVAR 00564 M01S00562.keyex +++|* OUTPUT STRING FOR THE PANEL 00565 M01S00563.keyex +++| CHARACTER*72 P1I(NKEYSPP) 00566 M01S00564.keyex +++|* INPUT STRING FROM THE PANEL 00567 M01S00565.keyex +++| CHARACTER*72 P1O(NKEYSPP) 00568 M01S00566.keyex +++|* OUTPUT STRING FOR THE PANEL 00569 M01S00567.keyex +++| CHARACTER*1 P2VAR 00570 M01S00568.keyex +++|* BLANK OUTPUT STRING 00571 M01S00569.keyex +++| CHARACTER*7 SETDATA(3) 00572 M01S00570.keyex +++|* SETUP DATA. 00573 M01S00571.keyex +++| INTEGER ORDINAL 00574 M01S00572.keyex +++|* FUNCTION KEY VALUE 00575 M01S00573.keyex +++| INTEGER TYPE 00576 M01S00574.keyex +++|* TYPE OF FUNCTION KEY 00577 M01S00575.keyex +++|* 0 = PROGRAMMABLE FUNCTION KEY 00578 M01S00576.keyex +++|* 1 = LABELED FUNCTION KEY 00579 M01S00577.keyex +++| 00580 M01S00578.keyex +++| EQUIVALENCE (P1I(1), P1IVAR(2:2)) 00581 M01S00579.keyex +++| EQUIVALENCE (P1O(1), P1OVAR(2:2)) 00582 M01S00580.keyex +++| 00583 M01S00581.keyex +++| COMMON / INFO / KEYS, FILENM, SETDATA 00584 M01S00582.keyex +++| 00585 M01S00583.keyex +++| DATA PAGE / '1', '2', '3' / 00586 M01S00584.keyex +++| DATA P1 / 'KEYPAN4' / 00587 M01S00585.keyex +++| DATA P2 / 'KEYPAN3' / 00588 M01S00586.keyex +++| DATA P3 / 'KEYPAN6' / 00589 M01S00587.keyex +++| DATA BASE / 0, 15, 30 / 00590 M01S00588.keyex +++| DATA P1I / 15* ' ' / 00591 M01S00589.keyex +++| DATA P1O / 15* ' ' / 00592 M01S00590.keyex +++| DATA P2VAR / ' ' / 00593 M01S00591.keyex +++| DATA (LABELS(1, I), I = 1, NKEYSPP) / 00594 M01S00592.keyex +++| . 'F1 ', 'F2 ', 'F3 ', 'F4 ', 'F5 ' 00595 M01S00593.keyex +++| ., 'F6 ', 'F7 ', 'F8 ', 'F9 ', 'F10 ' 00596 M01S00594.keyex +++| ., 'F11 ', 'F12 ', 'F13 ', 'F14 ', 'F15 ' 00597 M01S00595.keyex +++| ./ 00598 M01S00596.keyex +++| DATA (LABELS(2, I), I = 1, NKEYSPP) / 00599 M01S00597.keyex +++| . 'RTAB ', 'LTAB ', 'NEXT ', 'DOWN ', 'UP ' 00600 M01S00598.keyex +++| ., 'FWD ', 'BKW ', 'HELP ', 'ERASE ', 'EDIT ' 00601 M01S00599.keyex +++| ., 'BACK ', 'LAB ', 'DATA ', 'STOP ', 'INSRT ' 00602 M01S00600.keyex +++| ./ 00603 M01S00601.keyex +++| DATA (LABELS(3, I), I = 1, NKEYSPP) / 00604 M01S00602.keyex +++| . 'DLETE', 'CLEAR', 'PRINT', 'PAD 1 ', 'PAD 2 ' 00605 M01S00603.keyex +++| ., 'PAD 3', 'PAD 4', 'PAD 5', 'PAD 6 ', 'PAD 7 ' 00606 M01S00604.keyex +++| ., 'PAD 8', 'PAD 9', 'PAD 0', 'PAD , ', 'PAD . ' 00607 M01S00605.keyex +++| ./ 00608 M01S00606.keyex +++| 00609 M01S00607.keyex +++|11 FORMAT(' THE KEY DEFINITIONS FILE HAS BEEN REPLACED.') 00610 M01S00608.keyex +++|12 FORMAT(' PLEASE ENTER THE SYSTEM COMMAND: SCREEN,721.', 00611 M01S00609.keyex +++| ./' AND RE-ENTER THE KEY COMMAND.') 00612 M01S00610.keyex +++| 00613 M01S00611.keyex +++| 00614 M01S00612.keyex +++|* READ USER DEFINITIONS FROM SOURCE FILE, IF ANY. 00615 M01S00613.keyex +++| 00616 M01S00614.keyex +++| CALL RDSORC 00617 M01S00615.keyex +++| 00618 M01S00616.keyex +++| CALL SFOPEN(P1, STAT) 00619 M01S00617.keyex +++| IF (STAT .NE. 0) THEN 00620 M01S00618.keyex +++| CALL ERR 00621 M01S00619.keyex +++| STOP 'SF ERROR.' 00622 M01S00620.keyex +++| ENDIF 00623 M01S00621.keyex +++| 00624 M01S00622.keyex +++|100 PANEL = 1 00625 M01S00623.keyex +++| 00626 M01S00624.keyex +++|* LOAD THE OUTPUT STRING VARIABLE FOR THE PANEL. THE OUTPUT STRING 00627 M01S00625.keyex +++|* IS COMPRISED OF THE KEY NAME, LABEL, AND DEFINITION. 00628 M01S00626.keyex +++| 00629 M01S00627.keyex +++|110 P1OVAR(1:1) = PAGE(PANEL) 00630 M01S00628.keyex +++| 00631 M01S00629.keyex +++| DO 120 I = 1, NKEYSPP 00632 M01S00630.keyex +++| P1O(I)(01:05) = LABELS(PANEL, I) 00633 M01S00631.keyex +++| P1O(I)(06:12) = KEYS(BASE(PANEL) + I)(1:07) 00634 M01S00632.keyex +++| P1O(I)(13:72) = KEYS(BASE(PANEL) + I)(8:67) 00635 M01S00633.keyex +++|120 CONTINUE 00636 M01S00634.keyex +++| 00637 M01S00635.keyex +++|* SHOW KEY DEFINITION PANEL. 00638 M01S00636.keyex +++| 00639 M01S00637.keyex +++| CALL SFSSHO(P1, P1OVAR, P1IVAR) 00640 M01S00638.keyex +++| 00641 M01S00639.keyex +++| DO 130 I = 1, NKEYSPP 00642 M01S00640.keyex +++| KEYS(BASE(PANEL) + I)(1:07) = P1I(I)(06:12) 00643 M01S00641.keyex +++| KEYS(BASE(PANEL) + I)(8:67) = P1I(I)(13:72) 00644 M01S00642.keyex +++|130 CONTINUE 00645 M01S00643.keyex +++| 00646 M01S00644.keyex +++|* CHECK FOR THE LABELED KEYS *FWD*, *BKW*, AND *HELP*, IGNORING OTHERS. 00647 M01S00645.keyex +++| 00648 M01S00646.keyex +++| CALL SFGETK(TYPE, ORDINAL) 00649 M01S00647.keyex +++| IF(TYPE .EQ. 0) GOTO 140 00650 M01S00648.keyex +++| IF(ORDINAL .EQ. ORDFWD) GOTO 150 00651 M01S00649.keyex +++| IF(ORDINAL .EQ. ORDBKW) GOTO 160 00652 M01S00650.keyex +++| IF(ORDINAL .EQ. ORDHELP) GOTO 190 00653 M01S00651.keyex +++| IF (ORDINAL .EQ. ORDSTOP) GOTO 200 00654 M01S00652.keyex +++| GOTO 110 00655 M01S00653.keyex +++| 00656 M01S00654.keyex +++|* CHECK FOR APPLICATION KEYS F1, F2, F3, F4, F5, F6, F7, F8, F9. 00657 M01S00655.keyex +++| 00658 M01S00656.keyex +++|140 GOTO (150,160,170,180,190,200,210,220,230) ORDINAL 00659 M01S00657.keyex +++| GOTO 110 00660 M01S00658.keyex +++| 00661 M01S00659.keyex +++|* F1 KEY: FWD TO NEXT PANEL. 00662 M01S00660.keyex +++| 00663 M01S00661.keyex +++|150 PANEL = PANEL + 1 00664 M01S00662.keyex +++| IF (PANEL .EQ. NPAN+1) PANEL = 1 00665 M01S00663.keyex +++| GOTO 110 00666 M01S00664.keyex +++| 00667 M01S00665.keyex +++|* F2 KEY: BKW TO LAST PANEL. 00668 M01S00666.keyex +++| 00669 M01S00667.keyex +++|160 PANEL = PANEL - 1 00670 M01S00668.keyex +++| IF (PANEL .LT. 1) PANEL = 3 00671 M01S00669.keyex +++| GOTO 110 00672 M01S00670.keyex +++| 00673 M01S00671.keyex +++|* F3 KEY: UNDO ALL CHANGES AND RESTART. 00674 M01S00672.keyex +++|* REINITIALIZE *KEYS* AND *SETDATA*, AND GET USER DEFINITIONS IF ANY. 00675 M01S00673.keyex +++| 00676 M01S00674.keyex +++|170 CALL SYSKEYS 00677 M01S00675.keyex +++| CALL RDSORC 00678 M01S00676.keyex +++| GOTO 100 00679 M01S00677.keyex +++| 00680 M01S00678.keyex +++|* F4 KEY: LOAD. 00681 M01S00679.keyex +++| 00682 M01S00680.keyex +++|180 CALL SFCLOS(P1, 1) 00683 M01S00681.keyex +++| CALL WRSORC 00684 M01S00682.keyex +++| CALL LOAD 00685 M01S00683.keyex +++| RETURN 00686 M01S00684.keyex +++| 00687 M01S00685.keyex +++|* F5 KEY: SHOW HELP PANELS. 00688 M01S00686.keyex +++| 00689 M01S00687.keyex +++|190 CALL SFOPEN(P2,STAT) 00690 M01S00688.keyex +++| IF (STAT .NE. 0) THEN 00691 M01S00689.keyex +++| CALL ERR 00692 M01S00690.keyex +++| STOP 'SF ERROR.' 00693 M01S00691.keyex +++| ENDIF 00694 M01S00692.keyex +++| CALL SFSSHO(P2,P2VAR,P2VAR) 00695 M01S00693.keyex +++| CALL SFGETK(TYPE, ORDINAL) 00696 M01S00694.keyex +++| CALL SFCLOS(P2,0) 00697 M01S00695.keyex +++| IF ((TYPE .EQ. 1) .AND. (ORDINAL .EQ. ORDSTOP)) GOTO 200 00698 M01S00696.keyex +++| GOTO 110 00699 M01S00697.keyex +++| 00700 M01S00698.keyex +++|* F6 KEY: QUIT. 00701 M01S00699.keyex +++| 00702 M01S00700.keyex +++|200 CALL SFCLOS(P1,1) 00703 M01S00701.keyex +++| RETURN 00704 M01S00702.keyex +++| 00705 M01S00703.keyex +++|* F7 KEY: QUIT AND REPLACE FILE. 00706 M01S00704.keyex +++| 00707 M01S00705.keyex +++|210 CALL SFCLOS(P1,1) 00708 M01S00706.keyex +++| CALL WRSORC 00709 M01S00707.keyex +++| CALL LDSETUP 00710 M01S00708.keyex +++| WRITE(2,11) 00711 M01S00709.keyex +++| RETURN 00712 M01S00710.keyex +++| 00713 M01S00711.keyex +++|* F8 KEY: DISPLAY ASCII-HEX CHART. 00714 M01S00712.keyex +++| 00715 M01S00713.keyex +++|220 CALL SFOPEN(P3,STAT) 00716 M01S00714.keyex +++| IF (STAT .NE. 0) THEN 00717 M01S00715.keyex +++| CALL ERR 00718 M01S00716.keyex +++| STOP 'SF ERROR.' 00719 M01S00717.keyex +++| ENDIF 00720 M01S00718.keyex +++| CALL SFSREA(P3,P2VAR) 00721 M01S00719.keyex +++| CALL SFCLOS(P3,0) 00722 M01S00720.keyex +++| GOTO 110 00723 M01S00721.keyex +++| 00724 M01S00722.keyex +++|* F9 KEY: SET UP TERMINAL CHARACTERISTICS. 00725 M01S00723.keyex +++| 00726 M01S00724.keyex +++|230 CALL EDSETUP 00727 M01S00725.keyex +++| GOTO 110 00728 M01S00726.keyex +++| 00729 M01S00727.keyex +++| END 00730 M01S00728.keyex +++| 00731 M01S00729.keyex +++| 00732 M01S00730.keyex +++| SUBROUTINE EDSETUP 00733 M01S00731.keyex +++| 00734 M01S00732.keyex +++|** EDSETUP - EDIT THE SETUP TERMINAL CHARACTERISTICS. 00735 M01S00733.keyex +++|* 00736 M01S00734.keyex +++|* *EDSETUP* IS CALLED BY *EDIT* AND ALLOWS THE USER TO SET UP THE 00737 M01S00735.keyex +++|* TERMINAL CHARACTERISTICS FOR THE NUMBER PAD, SCREEN MODE, AND THE 00738 M01S00736.keyex +++|* NUMBER OF CHARACTERS PER LINE. 00739 M01S00737.keyex +++|* 00740 M01S00738.keyex +++|* CALL EDSETUP 00741 M01S00739.keyex +++|* 00742 M01S00740.keyex +++|* CALLS SFCLOS, SFGETK, SFOPEN, SFSSHO. 00743 M01S00741.keyex +++| 00744 M01S00742.keyex +++| 00745 M01S00743.keyex +++| IMPLICIT INTEGER (A - Z) 00746 M01S00744.keyex +++| 00747 M01S00745.keyex +++| PARAMETER (NKEYS = 45) 00748 M01S00746.keyex +++|* NUMBER OF DEFINABLE KEYS 00749 M01S00747.keyex +++| PARAMETER (ORDFWD = 7) 00750 M01S00748.keyex +++|* ORDINAL FOR THE FWD KEY 00751 M01S00749.keyex +++| PARAMETER (ORDBKW = 1) 00752 M01S00750.keyex +++|* ORDINAL FOR THE BKW KEY 00753 M01S00751.keyex +++| PARAMETER (ORDSTOP = 4) 00754 M01S00752.keyex +++|* ORDINAL FOR THE STOP KEY 00755 M01S00753.keyex +++| 00756 M01S00754.keyex +++| CHARACTER*7 FILENM 00757 M01S00755.keyex +++|* KEY DEFINITIONS FILE 00758 M01S00756.keyex +++| CHARACTER*67 KEYS(NKEYS) 00759 M01S00757.keyex +++|* FUNCTION KEY DEFINITIONS 00760 M01S00758.keyex +++| CHARACTER*7 PANEL4 00761 M01S00759.keyex +++|* DISPLAY PANEL FOR *EDIT* 00762 M01S00760.keyex +++| CHARACTER*7 PANEL5 00763 M01S00761.keyex +++|* DISPLAY PANEL FOR SETUP 00764 M01S00762.keyex +++| CHARACTER*7 SETDATA(3) 00765 M01S00763.keyex +++|* SETUP TERMINAL CHARACTERISTICS 00766 M01S00764.keyex +++| CHARACTER*7 STRDEF 00767 M01S00765.keyex +++|* DEFAULT STRING 00768 M01S00766.keyex +++| CHARACTER*21 PANELIO 00769 M01S00767.keyex +++|* INPUT/OUTPUT STRING FROM THE PANEL 00770 M01S00768.keyex +++| CHARACTER*21 TEMPSTR 00771 M01S00769.keyex +++|* TEMPORARY TERMINAL CHARACTERISTICS 00772 M01S00770.keyex +++| INTEGER ORDINAL 00773 M01S00771.keyex +++|* FUNCTION KEY VALUE 00774 M01S00772.keyex +++| INTEGER TYPE 00775 M01S00773.keyex +++|* TYPE OF FUNCTION KEY 00776 M01S00774.keyex +++|* 0 = PROGRAMMABLE FUNCTION KEY 00777 M01S00775.keyex +++|* 1 = LABELED FUNCTION KEY 00778 M01S00776.keyex +++| 00779 M01S00777.keyex +++| EQUIVALENCE (SETDATA(1), TEMPSTR(1:1)) 00780 M01S00778.keyex +++| 00781 M01S00779.keyex +++| COMMON / INFO / KEYS, FILENM, SETDATA 00782 M01S00780.keyex +++| 00783 M01S00781.keyex +++| DATA PANEL5 / 'KEYPAN5' / 00784 M01S00782.keyex +++| DATA PANEL4 / 'KEYPAN4' / 00785 M01S00783.keyex +++| DATA STRDEF / 'DEFAULT' / 00786 M01S00784.keyex +++| 00787 M01S00785.keyex +++| 00788 M01S00786.keyex +++|* CLOSE CURRENT *EDIT* PANEL. 00789 M01S00787.keyex +++| 00790 M01S00788.keyex +++| CALL SFCLOS(PANEL4,0) 00791 M01S00789.keyex +++| 00792 M01S00790.keyex +++|* SHOW KEY DEFINITION PANEL. 00793 M01S00791.keyex +++| 00794 M01S00792.keyex +++| CALL SFOPEN(PANEL5, STAT) 00795 M01S00793.keyex +++| IF (STAT .NE. 0) THEN 00796 M01S00794.keyex +++| CALL ERR 00797 M01S00795.keyex +++| STOP 'SF ERROR.' 00798 M01S00796.keyex +++| ENDIF 00799 M01S00797.keyex +++| PANELIO = STRDEF // STRDEF // STRDEF 00800 M01S00798.keyex +++| CALL SFSSHO(PANEL5, PANELIO, PANELIO) 00801 M01S00799.keyex +++| CALL SFGETK(TYPE, ORDINAL) 00802 M01S00800.keyex +++| CALL SFCLOS(PANEL5, 0) 00803 M01S00801.keyex +++| 00804 M01S00802.keyex +++| IF (.NOT.((TYPE .EQ. 1) .AND. (ORDINAL .EQ. ORDSTOP))) THEN 00805 M01S00803.keyex +++| CALL WRSORC 00806 M01S00804.keyex +++| TEMPSTR = PANELIO 00807 M01S00805.keyex +++| ENDIF 00808 M01S00806.keyex +++| 00809 M01S00807.keyex +++| CALL SFOPEN(PANEL4, STAT) 00810 M01S00808.keyex +++| IF (STAT .NE. 0) THEN 00811 M01S00809.keyex +++| CALL ERR 00812 M01S00810.keyex +++| STOP 'SF ERROR.' 00813 M01S00811.keyex +++| ENDIF 00814 M01S00812.keyex +++| RETURN 00815 M01S00813.keyex +++| END 00816 M01S00814.keyex +++| 00817 M01S00815.keyex +++| 00818 M01S00816.keyex +++| SUBROUTINE RDSORC 00819 M01S00817.keyex +++| 00820 M01S00818.keyex +++|** RDSORC - READ KEY DEFINITIONS FROM THE SOURCE FILE. 00821 M01S00819.keyex +++|* 00822 M01S00820.keyex +++|* *RDSORC* READS THE KEY DEFINITIONS FROM THE DEFINITION 00823 M01S00821.keyex +++|* SOURCE FILE. 00824 M01S00822.keyex +++|* 00825 M01S00823.keyex +++|* CALL RDSORC 00826 M01S00824.keyex +++|* 00827 M01S00825.keyex +++|* USES KEYS, SETDATA. 00828 M01S00826.keyex +++|* 00829 M01S00827.keyex +++|* CALLS PF. 00830 M01S00828.keyex +++| 00831 M01S00829.keyex +++| 00832 M01S00830.keyex +++| IMPLICIT INTEGER (A - Z) 00833 M01S00831.keyex +++| 00834 M01S00832.keyex +++| PARAMETER (NKEYS = 45) 00835 M01S00833.keyex +++|* NUMBER OF DEFINABLE FUNCTION KEYS 00836 M01S00834.keyex +++| 00837 M01S00835.keyex +++| CHARACTER*7 FILENM 00838 M01S00836.keyex +++|* KEY DEFINITIONS FILE 00839 M01S00837.keyex +++| CHARACTER*60 KEYDEF 00840 M01S00838.keyex +++|* FUNCTION KEY DEFINITION 00841 M01S00839.keyex +++| CHARACTER*67 KEYS(NKEYS) 00842 M01S00840.keyex +++|* LABEL AND KEYDEF 00843 M01S00841.keyex +++| CHARACTER*7 LABEL 00844 M01S00842.keyex +++|* FUNCTION KEY LABEL 00845 M01S00843.keyex +++| CHARACTER*7 SETDATA(3) 00846 M01S00844.keyex +++|* SETUP TERMINAL CHARACTERISTICS 00847 M01S00845.keyex +++| 00848 M01S00846.keyex +++| COMMON / INFO / KEYS, FILENM, SETDATA 00849 M01S00847.keyex +++| 00850 M01S00848.keyex +++|10 FORMAT(A7, 1X, A60) 00851 M01S00849.keyex +++|20 FORMAT(A7) 00852 M01S00850.keyex +++| 00853 M01S00851.keyex +++|* READ USER KEY DEFINITION FILE, IF ANY. 00854 M01S00852.keyex +++| 00855 M01S00853.keyex +++| CALL PF('GET', 'TAPE1', FILENM, 'NA', IGNORE) 00856 M01S00854.keyex +++| 00857 M01S00855.keyex +++|* SOURCE FILE CONSISTS OF FUNCTION KEY LABELS, 00858 M01S00856.keyex +++|* KEY DEFINITIONS, AND THE TERMINAL'S SETUP DATA. 00859 M01S00857.keyex +++| 00860 M01S00858.keyex +++| DO 110 I = 1, NKEYS 00861 M01S00859.keyex +++| READ(1, 10, END=130) LABEL, KEYDEF 00862 M01S00860.keyex +++| IF(KEYDEF .NE. ' ') THEN 00863 M01S00861.keyex +++| KEYS(I)(1:07) = LABEL 00864 M01S00862.keyex +++| KEYS(I)(8:67) = KEYDEF 00865 M01S00863.keyex +++| ENDIF 00866 M01S00864.keyex +++|110 CONTINUE 00867 M01S00865.keyex +++| 00868 M01S00866.keyex +++| DO 120 I = 1, 3 00869 M01S00867.keyex +++| READ(1, 20, END=130) SETDATA(I) 00870 M01S00868.keyex +++|120 CONTINUE 00871 M01S00869.keyex +++| 00872 M01S00870.keyex +++|130 REWIND 1 00873 M01S00871.keyex +++| RETURN 00874 M01S00872.keyex +++| END 00875 M01S00873.keyex +++| 00876 M01S00874.keyex +++| 00877 M01S00875.keyex +++| 00878 M01S00876.keyex +++| SUBROUTINE HELP 00879 M01S00877.keyex +++| 00880 M01S00878.keyex +++|** HELP - PROVIDE HELP INFORMATION FOR THE *KEY* UTILITY. 00881 M01S00879.keyex +++|* 00882 M01S00880.keyex +++|* *HELP* GIVES THE USER INFORMATION ON THE *KEY* UTILITY, 00883 M01S00881.keyex +++|* USING SCREEN FORMATTING DISPLAY PANELS. 00884 M01S00882.keyex +++|* 00885 M01S00883.keyex +++|* CALL HELP 00886 M01S00884.keyex +++|* 00887 M01S00885.keyex +++|* CALLS ERR, SFCLOS, SFOPEN, SFSSHO. 00888 M01S00886.keyex +++|* 00889 M01S00887.keyex +++|* MESSAGES 00890 M01S00888.keyex +++|* PLEASE ENTER THE SYSTEM COMMAND: SCREEN,721. 00891 M01S00889.keyex +++|* AND RE-ENTER THE KEY COMMAND. 00892 M01S00890.keyex +++|* STOP. FIX ERROR. 00893 M01S00891.keyex +++| 00894 M01S00892.keyex +++| 00895 M01S00893.keyex +++| IMPLICIT INTEGER (A - Z) 00896 M01S00894.keyex +++| 00897 M01S00895.keyex +++| PARAMETER (ORDBKW = 8) 00898 M01S00896.keyex +++|* ORDINAL FOR THE BKW KEY 00899 M01S00897.keyex +++| PARAMETER (ORDSTOP = 4) 00900 M01S00898.keyex +++|* ORDINAL FOR THE STOP KEY 00901 M01S00899.keyex +++| 00902 M01S00900.keyex +++| CHARACTER*7 PANEL1 00903 M01S00901.keyex +++|* FIRST HELP PANEL 00904 M01S00902.keyex +++| CHARACTER*7 PANEL2 00905 M01S00903.keyex +++|* SECOND HELP PANEL 00906 M01S00904.keyex +++| CHARACTER*1 PANELIO 00907 M01S00905.keyex +++|* OUTPUT STRING FOR THE PANEL 00908 M01S00906.keyex +++| INTEGER ORDINAL 00909 M01S00907.keyex +++|* SCREEN FORMATTING KEY ORDINAL 00910 M01S00908.keyex +++| INTEGER STAT 00911 M01S00909.keyex +++|* *SFOPEN* RETURN STATUS 00912 M01S00910.keyex +++| INTEGER TYPE 00913 M01S00911.keyex +++|* SCREEN FORMATTING KEY TYPE 00914 M01S00912.keyex +++| 00915 M01S00913.keyex +++| DATA PANEL1 / 'KEYPAN1' / 00916 M01S00914.keyex +++| DATA PANEL2 / 'KEYPAN2' / 00917 M01S00915.keyex +++| 00918 M01S00916.keyex +++|10 FORMAT(' PLEASE ENTER THE SYSTEM COMMAND: SCREEN,721.', 00919 M01S00917.keyex +++| ./' AND RE-ENTER THE KEY COMMAND.') 00920 M01S00918.keyex +++| 00921 M01S00919.keyex +++| 00922 M01S00920.keyex +++|* SHOW HELP PANELS. 00923 M01S00921.keyex +++| 00924 M01S00922.keyex +++| 100 CALL SFOPEN(PANEL1, STAT) 00925 M01S00923.keyex +++| IF (STAT .NE. 0) THEN 00926 M01S00924.keyex +++| WRITE(2,10) 00927 M01S00925.keyex +++| CALL ERR 00928 M01S00926.keyex +++| STOP 'SF ERROR.' 00929 M01S00927.keyex +++| ENDIF 00930 M01S00928.keyex +++| CALL SFSSHO(PANEL1, PANELIO,PANELIO) 00931 M01S00929.keyex +++| CALL SFGETK(TYPE,ORDINAL) 00932 M01S00930.keyex +++| CALL SFCLOS(PANEL1, 0) 00933 M01S00931.keyex +++| IF ((TYPE .EQ. 1) .AND. (ORDINAL .EQ. ORDSTOP)) RETURN 00934 M01S00932.keyex +++| CALL SFOPEN(PANEL2, STAT) 00935 M01S00933.keyex +++| IF (STAT .NE. 0) THEN 00936 M01S00934.keyex +++| WRITE(2,10) 00937 M01S00935.keyex +++| CALL ERR 00938 M01S00936.keyex +++| STOP 'SF ERROR.' 00939 M01S00937.keyex +++| ENDIF 00940 M01S00938.keyex +++| CALL SFSSHO(PANEL2, PANELIO,PANELIO) 00941 M01S00939.keyex +++| CALL SFCLOS(PANEL2, 1) 00942 M01S00940.keyex +++| CALL SFGETK(TYPE,ORDINAL) 00943 M01S00941.keyex +++| CALL SFCLOS(PANEL2, 0) 00944 M01S00942.keyex +++| IF ((TYPE .EQ. 1) .AND. (ORDINAL .EQ. ORDBKW)) GOTO 100 00945 M01S00943.keyex +++| RETURN 00946 M01S00944.keyex +++| END 00947 M01S00945.keyex +++| 00948 M01S00946.keyex +++| 00949 M01S00947.keyex +++| SUBROUTINE LDSETUP 00950 M01S00948.keyex +++| 00951 M01S00949.keyex +++|** LDSETUP - SET UP TERMINAL CHARACTERISTICS. 00952 M01S00950.keyex +++|* 00953 M01S00951.keyex +++|* *LDSETUP* SETS THE TERMINAL CHARACTERISTICS FOR THE NUMBER PAD, 00954 M01S00952.keyex +++|* SCREEN MODE, AND THE NUMBER OF CHARACTERS PER LINE. 00955 M01S00953.keyex +++|* 00956 M01S00954.keyex +++|* CALL LDSETUP 00957 M01S00955.keyex +++|* 00958 M01S00956.keyex +++|* CALLS PACK, SEQPACK. 00959 M01S00957.keyex +++|* 00960 M01S00958.keyex +++|* NOTE *RDSORC* MUST BE CALLED BEFORE THIS CODE IS PROCESSED TO 00961 M01S00959.keyex +++|* ENSURE THAT THE PROPER TERMINAL DEFINITIONS ARE LOADED. 00962 M01S00960.keyex +++| 00963 M01S00961.keyex +++| 00964 M01S00962.keyex +++| IMPLICIT INTEGER (A - Z) 00965 M01S00963.keyex +++| 00966 M01S00964.keyex +++| PARAMETER (KEYL = 45) 00967 M01S00965.keyex +++|* NUMBER OF PROGRAMMABLE FUNCTION KEYS 00968 M01S00966.keyex +++| 00969 M01S00967.keyex +++| BOOLEAN ZCARRET 00970 M01S00968.keyex +++|* HEX CODE FOR CARRIAGE RETURN 00971 M01S00969.keyex +++| BOOLEAN ZNUMCHR(3) 00972 M01S00970.keyex +++|* HEX SEQUENCE FOR CHARACTERS PER LINE 00973 M01S00971.keyex +++| BOOLEAN ZNUMPAD(3) 00974 M01S00972.keyex +++|* HEX SEQUENCE FOR NUMBER PAD CONDITION 00975 M01S00973.keyex +++| BOOLEAN ZOFFSET 00976 M01S00974.keyex +++|* HEX CODE FOR ADDRESS OFFSET 00977 M01S00975.keyex +++| BOOLEAN ZMODE 00978 M01S00976.keyex +++|* HEX CODE FOR SCREEN MODE 00979 M01S00977.keyex +++| BOOLEAN ZROLL 00980 M01S00978.keyex +++|* HEX CODE FOR ROLL PAGE MODE 00981 M01S00979.keyex +++| BOOLEAN ZSHIFT 00982 M01S00980.keyex +++|* HEX CODE FOR SHIFTED NUMERIC PAD CODE 00983 M01S00981.keyex +++| BOOLEAN Z132 00984 M01S00982.keyex +++|* HEX CODE FOR 132 CHARACTERS PER LINE 00985 M01S00983.keyex +++| CHARACTER*7 FILENM 00986 M01S00984.keyex +++|* FILE NAME OF KEY DEFINITIONS 00987 M01S00985.keyex +++| CHARACTER*67 KEYS(KEYL) 00988 M01S00986.keyex +++|* FUNCTION KEY DEFINTIONS 00989 M01S00987.keyex +++| CHARACTER*7 SETDATA(3) 00990 M01S00988.keyex +++|* TERMINAL SETUP DATA 00991 M01S00989.keyex +++| CHARACTER*7 STRDEF 00992 M01S00990.keyex +++|* DEFAULT STRING 00993 M01S00991.keyex +++| CHARACTER*7 STRROL 00994 M01S00992.keyex +++|* ROLL STRING 00995 M01S00993.keyex +++| CHARACTER*7 STRSHI 00996 M01S00994.keyex +++|* SHIFTED STRING 00997 M01S00995.keyex +++| CHARACTER*7 STR132 00998 M01S00996.keyex +++|* 132 STRING 00999 M01S00997.keyex +++| LOGICAL DEFNCHR 01000 M01S00998.keyex +++|* DEFAULT NUMBER OF CHARACTERS PER LINE 01001 M01S00999.keyex +++| LOGICAL DEFNPAD 01002 M01S01000.keyex +++|* DEFAULT NUMERIC PAD SETTING 01003 M01S01001.keyex +++| LOGICAL DEFPAGE 01004 M01S01002.keyex +++|* DEFAULT PAGINATION SETTING 01005 M01S01003.keyex +++| 01006 M01S01004.keyex +++| COMMON / INFO / KEYS, FILENM, SETDATA 01007 M01S01005.keyex +++| 01008 M01S01006.keyex +++| DATA ZCARRET / Z"0D" / 01009 M01S01007.keyex +++| DATA ZNUMCHR / Z"1E", Z"12", Z"48" / 01010 M01S01008.keyex +++| DATA ZNUMPAD / Z"1E", Z"12", Z"6C" / 01011 M01S01009.keyex +++| DATA ZOFFSET / Z"800" / 01012 M01S01010.keyex +++| DATA ZMODE / Z"16" / 01013 M01S01011.keyex +++| DATA ZROLL / Z"12" / 01014 M01S01012.keyex +++| DATA ZSHIFT / Z"6B" / 01015 M01S01013.keyex +++| DATA Z132 / Z"47" / 01016 M01S01014.keyex +++| DATA STRDEF / 'DEFAULT' / 01017 M01S01015.keyex +++| DATA STRROL / 'ROLL ' / 01018 M01S01016.keyex +++| DATA STRSHI / 'SHIFTED' / 01019 M01S01017.keyex +++| DATA STR132 / '132 ' / 01020 M01S01018.keyex +++| DATA DEFNCHR / .TRUE. / 01021 M01S01019.keyex +++| DATA DEFNPAD / .TRUE. / 01022 M01S01020.keyex +++| DATA DEFPAGE / .TRUE. / 01023 M01S01021.keyex +++| 01024 M01S01022.keyex +++| IF(SETDATA(1).NE. STRDEF) DEFNPAD = .FALSE. 01025 M01S01023.keyex +++| IF(SETDATA(2).NE. STRDEF) DEFPAGE = .FALSE. 01026 M01S01024.keyex +++| IF(SETDATA(3).NE. STRDEF) DEFNCHR = .FALSE. 01027 M01S01025.keyex +++| 01028 M01S01026.keyex +++| IF (.NOT.(DEFNPAD .AND. DEFPAGE .AND. DEFNCHR)) THEN 01029 M01S01027.keyex +++| CALL PACK(1, 0) 01030 M01S01028.keyex +++| ELSE 01031 M01S01029.keyex +++| RETURN 01032 M01S01030.keyex +++| ENDIF 01033 M01S01031.keyex +++| 01034 M01S01032.keyex +++| IF (.NOT.DEFNPAD) THEN 01035 M01S01033.keyex +++| IF(SETDATA(1) .EQ. STRSHI) ZNUMPAD(3) = ZSHIFT 01036 M01S01034.keyex +++| CALL SEQPACK(ZNUMPAD, 3) 01037 M01S01035.keyex +++| ENDIF 01038 M01S01036.keyex +++| 01039 M01S01037.keyex +++| IF (.NOT.DEFPAGE) THEN 01040 M01S01038.keyex +++| IF(SETDATA(2) .EQ. STRROL) ZMODE = ZROLL 01041 M01S01039.keyex +++| CALL PACK(2, ZOFFSET + ZMODE) 01042 M01S01040.keyex +++| ENDIF 01043 M01S01041.keyex +++| 01044 M01S01042.keyex +++| IF (.NOT.DEFNCHR) THEN 01045 M01S01043.keyex +++| IF(SETDATA(3) .EQ. STR132) ZNUMCHR(3) = Z132 01046 M01S01044.keyex +++| CALL SEQPACK(ZNUMCHR, 3) 01047 M01S01045.keyex +++| ENDIF 01048 M01S01046.keyex +++| 01049 M01S01047.keyex +++| IF (.NOT.(DEFNPAD .AND. DEFPAGE .AND. DEFNCHR)) THEN 01050 M01S01048.keyex +++| 01051 M01S01049.keyex +++|* SEND A CARRIAGE RETURN IF A SEQUENCE WAS SENT TO THE TERMINAL. 01052 M01S01050.keyex +++| 01053 M01S01051.keyex +++| CALL PACK(2, ZOFFSET + ZCARRET) 01054 M01S01052.keyex +++| CALL PACK(3, 1) 01055 M01S01053.keyex +++| ENDIF 01056 M01S01054.keyex +++| RETURN 01057 M01S01055.keyex +++| END 01058 M01S01056.keyex +++| 01059 M01S01057.keyex +++| 01060 M01S01058.keyex +++| SUBROUTINE LOAD 01061 M01S01059.keyex +++| 01062 M01S01060.keyex +++|** LOAD - LOAD DEFINITIONS INTO TERMINAL. 01063 M01S01061.keyex +++|* 01064 M01S01062.keyex +++|* *LOAD* LOADS THE TERMINAL WITH BOTH FUNCTION KEY DEFINITIONS 01065 M01S01063.keyex +++|* AND LABELS, AND MODIFIES TERMINAL CHARACTERISTICS. 01066 M01S01064.keyex +++|* 01067 M01S01065.keyex +++|* CALL LOAD 01068 M01S01066.keyex +++|* 01069 M01S01067.keyex +++|* CALLS CLEAR, LDSETUP, RDSORC, SEND. 01070 M01S01068.keyex +++|* 01071 M01S01069.keyex +++|* MESSAGES 01072 M01S01070.keyex +++|* FUNCTION KEYS HAVE BEEN LOADED. 01073 M01S01071.keyex +++| 01074 M01S01072.keyex +++| 01075 M01S01073.keyex +++| IMPLICIT INTEGER (A - Z) 01076 M01S01074.keyex +++| 01077 M01S01075.keyex +++|10 FORMAT(' FUNCTION KEYS HAVE BEEN LOADED.') 01078 M01S01076.keyex +++| 01079 M01S01077.keyex +++|* READ SOURCE FILE INTO COMMON BLOCK. 01080 M01S01078.keyex +++| 01081 M01S01079.keyex +++| CALL RDSORC 01082 M01S01080.keyex +++| 01083 M01S01081.keyex +++|* CLEAR FUNCTION KEYS OF PREVIOUS DEFINITIONS. 01084 M01S01082.keyex +++| 01085 M01S01083.keyex +++| CALL CLEAR 01086 M01S01084.keyex +++| 01087 M01S01085.keyex +++|* DOWNLINE LOAD CURRENT DEFINITIONS INTO TERMINAL. 01088 M01S01086.keyex +++| 01089 M01S01087.keyex +++| CALL SEND 01090 M01S01088.keyex +++| 01091 M01S01089.keyex +++|* CHANGE THE SPECIFIED TERMINAL CHARACTERISTICS. 01092 M01S01090.keyex +++| 01093 M01S01091.keyex +++| CALL LDSETUP 01094 M01S01092.keyex +++| WRITE (2,10) 01095 M01S01093.keyex +++| ENDFILE 2 01096 M01S01094.keyex +++| RETURN 01097 M01S01095.keyex +++| END 01098 M01S01096.keyex +++| 01099 M01S01097.keyex +++| 01100 M01S01098.keyex +++| SUBROUTINE PACK(CODE, BYTE) 01101 M01S01099.keyex +++| 01102 M01S01100.keyex +++|** PACK - PACK BUFFER AND WRITE TO TERMINAL. 01103 M01S01101.keyex +++|* 01104 M01S01102.keyex +++|* *PACK* PACKS 4 BYTES INTO A BUFFER AND WRITES 01105 M01S01103.keyex +++|* THE BUFFER TO THE TERMINAL. 01106 M01S01104.keyex +++|* 01107 M01S01105.keyex +++|* CALL PACK(CODE, BYTE) 01108 M01S01106.keyex +++|* 01109 M01S01107.keyex +++|* ENTRY CODE = 1, FIRST BYTE IN BUFFER. 01110 M01S01108.keyex +++|* = 2, BYTE TO PLACE IN BUFFER. 01111 M01S01109.keyex +++|* = 3, LAST BYTE TO PLACE IN BUFFER. 01112 M01S01110.keyex +++|* 01113 M01S01111.keyex +++|* BYTE = Z80 BYTE TO BE PACKED AND WRITTEN TO TERMINAL. 01114 M01S01112.keyex +++|* 01115 M01S01113.keyex +++|* CALLS CONNEC. 01116 M01S01114.keyex +++|* 01117 M01S01115.keyex +++|* NOTES BUFFER FORMAT IS 00074---4---4---4---. 01118 M01S01116.keyex +++|* 01119 M01S01117.keyex +++|* MESSAGES 01120 M01S01118.keyex +++|* NO KEYS SPECIFIED. 01121 M01S01119.keyex +++|* NO KEYS WERE SPECIFIED TO BE SENT. 01122 M01S01120.keyex +++|* BUFFER OVERFLOW IN PACK. 01123 M01S01121.keyex +++|* BUFFER SIZE EXCEEDED LIMITS. 01124 M01S01122.keyex +++| 01125 M01S01123.keyex +++| 01126 M01S01124.keyex +++| IMPLICIT INTEGER (A - Z) 01127 M01S01125.keyex +++| 01128 M01S01126.keyex +++| PARAMETER (NUMKEYS = 45) 01129 M01S01127.keyex +++|* NUMBER OF DEFINABLE KEYS 01130 M01S01128.keyex +++| PARAMETER (STORCHR = 70) 01131 M01S01129.keyex +++|* STORED CHARACTERS PER DEFINITION 01132 M01S01130.keyex +++| PARAMETER (SIZE = (NUMKEYS * STORCHR) + 200) 01133 M01S01131.keyex +++|* BUFFER SIZE 01134 M01S01132.keyex +++| 01135 M01S01133.keyex +++| DIMENSION BUF(SIZE) 01136 M01S01134.keyex +++|* OUTPUT BUFFER 01137 M01S01135.keyex +++| INTEGER BYT 01138 M01S01136.keyex +++|* Z80 CODE DIVIDER 01139 M01S01137.keyex +++| INTEGER BYTE 01140 M01S01138.keyex +++|* Z80 BYTE CODE 01141 M01S01139.keyex +++| INTEGER PTR 01142 M01S01140.keyex +++|* INDEX FOR *BUF* 01143 M01S01141.keyex +++| 01144 M01S01142.keyex +++|* PACK *BYTE* INTO BUFFER FOR GIVEN *CODE*. 01145 M01S01143.keyex +++| 01146 M01S01144.keyex +++| GOTO (100, 200, 300), CODE 01147 M01S01145.keyex +++| 01148 M01S01146.keyex +++|* CODE = 1. SET UP INITIAL CODE IN BUFFER. 01149 M01S01147.keyex +++| 01150 M01S01148.keyex +++|100 PTR = 0 01151 M01S01149.keyex +++| BYT = 0 01152 M01S01150.keyex +++| BYTE = 07 01153 M01S01151.keyex +++| 01154 M01S01152.keyex +++|* CODE = 2. PACK DATA INTO BUFFER. 01155 M01S01153.keyex +++| 01156 M01S01154.keyex +++|200 BYT = BYT - 1 01157 M01S01155.keyex +++| 01158 M01S01156.keyex +++| IF(BYT .LT. 0) THEN 01159 M01S01157.keyex +++| BYT = 4 01160 M01S01158.keyex +++| PTR = PTR + 1 01161 M01S01159.keyex +++| BUF(PTR) = 0 01162 M01S01160.keyex +++| ENDIF 01163 M01S01161.keyex +++| 01164 M01S01162.keyex +++| BUF(PTR) = OR(BUF(PTR), SHIFT(BYTE, BYT*12)) 01165 M01S01163.keyex +++| RETURN 01166 M01S01164.keyex +++| 01167 M01S01165.keyex +++|* CHECK FOR ERRORS BEFORE STARTING I/O. 01168 M01S01166.keyex +++| 01169 M01S01167.keyex +++|300 IF(PTR .LT. 1) STOP ' NO KEYS SPECIFIED.' 01170 M01S01168.keyex +++| 01171 M01S01169.keyex +++| IF(PTR .GT. SIZE) STOP ' BUFFER OVERFLOW IN PACK ' 01172 M01S01170.keyex +++| 01173 M01S01171.keyex +++|* OUTPUT INFORMATION WITHOUT HEADER BYTES. 01174 M01S01172.keyex +++| 01175 M01S01173.keyex +++| CALL CONNEC(3) 01176 M01S01174.keyex +++| BUFFER OUT(3, 0) (BUF(1), BUF(PTR)) 01177 M01S01175.keyex +++| 01178 M01S01176.keyex +++|* LOOP UNTIL I/O COMPLETES. 01179 M01S01177.keyex +++| 01180 M01S01178.keyex +++| IF(UNIT(3))310,320,320 01181 M01S01179.keyex +++|310 CONTINUE 01182 M01S01180.keyex +++|320 CONTINUE 01183 M01S01181.keyex +++| RETURN 01184 M01S01182.keyex +++| END 01185 M01S01183.keyex +++| 01186 M01S01184.keyex +++| 01187 M01S01185.keyex +++| SUBROUTINE PRINT 01188 M01S01186.keyex +++| 01189 M01S01187.keyex +++|** PRINT - PRINT FUNCTION KEYS TO SPECIFIED FILE. 01190 M01S01188.keyex +++|* 01191 M01S01189.keyex +++|* *PRINT* COPIES ALL DEFINED FUNCTION KEYS FROM THE SPECIFIED FILE 01192 M01S01190.keyex +++|* TO THE LOCAL FILE *KEYPRNT*. 01193 M01S01191.keyex +++|* 01194 M01S01192.keyex +++|* CALL PRINT 01195 M01S01193.keyex +++|* 01196 M01S01194.keyex +++|* CALLS RDSORC. 01197 M01S01195.keyex +++|* 01198 M01S01196.keyex +++|* MESSAGES 01199 M01S01197.keyex +++|* THE LIST OF DEFINED FUNCTION KEYS IS ON THE LOCAL 01200 M01S01198.keyex +++|* FILE *KEYPRNT*. 01201 M01S01199.keyex +++| 01202 M01S01200.keyex +++| 01203 M01S01201.keyex +++| IMPLICIT INTEGER (A - Z) 01204 M01S01202.keyex +++| 01205 M01S01203.keyex +++| PARAMETER (NKEYS = 45) 01206 M01S01204.keyex +++|* NUMBER OF DEFINABLE FUNCTION KEYS 01207 M01S01205.keyex +++| PARAMETER (NKEY = 15) 01208 M01S01206.keyex +++|* NUMBER OF KEYS PER SECTION OF *KEYS* 01209 M01S01207.keyex +++| PARAMETER (NPAN = 3) 01210 M01S01208.keyex +++|* NUMBER OF SECTIONS IN *KEYS* 01211 M01S01209.keyex +++| 01212 M01S01210.keyex +++| CHARACTER*7 FILENM 01213 M01S01211.keyex +++|* KEY DEFINITIONS FILE 01214 M01S01212.keyex +++| CHARACTER*5 LABELS(NPAN, NKEY) 01215 M01S01213.keyex +++|* FUNCTION KEY LABELS 01216 M01S01214.keyex +++| CHARACTER*67 KEYS(NKEYS) 01217 M01S01215.keyex +++|* FUNCTION KEY DEFINITIONS 01218 M01S01216.keyex +++| CHARACTER*7 SETDATA(3) 01219 M01S01217.keyex +++|* SETUP TERMINAL CHARACTERISTICS 01220 M01S01218.keyex +++| 01221 M01S01219.keyex +++| COMMON / INFO / KEYS, FILENM, SETDATA 01222 M01S01220.keyex +++| 01223 M01S01221.keyex +++| DATA (LABELS(1, I), I = 1, NKEY) / 01224 M01S01222.keyex +++| . 'F1 ', 'F2 ', 'F3 ', 'F4 ', 'F5 ' 01225 M01S01223.keyex +++| ., 'F6 ', 'F7 ', 'F8 ', 'F9 ', 'F10 ' 01226 M01S01224.keyex +++| ., 'F11 ', 'F12 ', 'F13 ', 'F14 ', 'F15 ' 01227 M01S01225.keyex +++| ./ 01228 M01S01226.keyex +++| DATA (LABELS(2, I), I = 1, NKEY) / 01229 M01S01227.keyex +++| . 'RTAB ', 'LTAB ', 'NEXT ', 'DOWN ', 'UP ' 01230 M01S01228.keyex +++| ., 'FWD ', 'BKW ', 'HELP ', 'ERASE ', 'EDIT ' 01231 M01S01229.keyex +++| ., 'BACK ', 'LAB ', 'DATA ', 'STOP ', 'INSRT ' 01232 M01S01230.keyex +++| ./ 01233 M01S01231.keyex +++| DATA (LABELS(3, I), I = 1, NKEY) / 01234 M01S01232.keyex +++| . 'DLETE', 'CLEAR', 'PRINT', 'PAD 1 ', 'PAD 2 ' 01235 M01S01233.keyex +++| ., 'PAD 3', 'PAD 4', 'PAD 5', 'PAD 6 ', 'PAD 7 ' 01236 M01S01234.keyex +++| ., 'PAD 8', 'PAD 9', 'PAD 0', 'PAD , ', 'PAD . ' 01237 M01S01235.keyex +++| ./ 01238 M01S01236.keyex +++| 01239 M01S01237.keyex +++|10 FORMAT(5X, 'KEY DEFINITION UTILITY.',// 01240 M01S01238.keyex +++| .3X,'KEY LABEL KEY DEFINITIONS'/ 01241 M01S01239.keyex +++| .3X,'--- ----- ---------------') 01242 M01S01240.keyex +++|11 FORMAT(1X, A7, 1X, A7, 1X, A60) 01243 M01S01241.keyex +++|12 FORMAT(' THE LIST OF DEFINED FUNCTION KEYS IS ON THE', 01244 M01S01242.keyex +++| .' LOCAL FILE *KEYPRNT*.') 01245 M01S01243.keyex +++|13 FORMAT(/7X,'TERMINAL CHARACTERISTICS',/ 01246 M01S01244.keyex +++| .7X,'-------- ---------------',/ 01247 M01S01245.keyex +++| .9X,'NUMBER PAD - ',A7,/9X,'SCREEN MODE - ',A7/ 01248 M01S01246.keyex +++| .9X,'CHARS./ LINE - ',A7) 01249 M01S01247.keyex +++| 01250 M01S01248.keyex +++|* GET FILE AND OUTPUT USER DEFINED FUNCTION KEYS. 01251 M01S01249.keyex +++| 01252 M01S01250.keyex +++| CALL RDSORC 01253 M01S01251.keyex +++| REWIND 6 01254 M01S01252.keyex +++| WRITE(6, 10) 01255 M01S01253.keyex +++| DO 110 I = 1, NPAN 01256 M01S01254.keyex +++| DO 100 J = 1, NKEY 01257 M01S01255.keyex +++| IF(I .EQ. 1) THEN 01258 M01S01256.keyex +++| IF(KEYS(J)(1:7) .NE. ' ') THEN 01259 M01S01257.keyex +++| WRITE(6,11) LABELS(I,J), KEYS(J)(1:7), 01260 M01S01258.keyex +++| . KEYS(J)(8:67) 01261 M01S01259.keyex +++| ENDIF 01262 M01S01260.keyex +++| ENDIF 01263 M01S01261.keyex +++| IF(I .EQ. 2) THEN 01264 M01S01262.keyex +++| IF(KEYS(J + 15)(1:7) .NE. ' ') THEN 01265 M01S01263.keyex +++| WRITE(6,11) LABELS(I,J), KEYS(J+15)(1:7), 01266 M01S01264.keyex +++| . KEYS(J+15)(8:67) 01267 M01S01265.keyex +++| ENDIF 01268 M01S01266.keyex +++| ENDIF 01269 M01S01267.keyex +++| IF(I .EQ. 3) THEN 01270 M01S01268.keyex +++| IF(KEYS(J + 30)(1:7) .NE. ' ') THEN 01271 M01S01269.keyex +++| WRITE(6, 11) LABELS(I, J), KEYS(J+30)(1:7), 01272 M01S01270.keyex +++| . KEYS(J+30)(8:67) 01273 M01S01271.keyex +++| ENDIF 01274 M01S01272.keyex +++| ENDIF 01275 M01S01273.keyex +++|100 CONTINUE 01276 M01S01274.keyex +++|110 CONTINUE 01277 M01S01275.keyex +++| 01278 M01S01276.keyex +++|* OUTPUT USER DEFINED TERMINAL SETUP CHARACTERISTICS. 01279 M01S01277.keyex +++| 01280 M01S01278.keyex +++| WRITE(6,13) SETDATA 01281 M01S01279.keyex +++| REWIND 6 01282 M01S01280.keyex +++| WRITE(2,12) 01283 M01S01281.keyex +++| ENDFILE 2 01284 M01S01282.keyex +++| RETURN 01285 M01S01283.keyex +++| END 01286 M01S01284.keyex +++| 01287 M01S01285.keyex +++| 01288 M01S01286.keyex +++| SUBROUTINE SEND 01289 M01S01287.keyex +++| 01290 M01S01288.keyex +++|** SEND - TRANSFER KEY DEFINITIONS FROM SYSTEM INTO TERMINAL. 01291 M01S01289.keyex +++|* 01292 M01S01290.keyex +++|* *SEND* TRANSFERS THE KEY DEFINITIONS, KEY LABELS, AND Z80 01293 M01S01291.keyex +++|* ROUTINES INTO THE TERMINAL. 01294 M01S01292.keyex +++|* 01295 M01S01293.keyex +++|* CALL SEND 01296 M01S01294.keyex +++|* 01297 M01S01295.keyex +++|* CALLS BYTE, PACK, ZSNDADD, ZSNDCHR, Z80CODE. 01298 M01S01296.keyex +++| 01299 M01S01297.keyex +++| 01300 M01S01298.keyex +++| IMPLICIT INTEGER (A - Z) 01301 M01S01299.keyex +++| 01302 M01S01300.keyex +++| PARAMETER (NKEYS = 45) 01303 M01S01301.keyex +++|* NUMBER OF DEFINABLE FUNCTION KEYS 01304 M01S01302.keyex +++| 01305 M01S01303.keyex +++| BOOLEAN ZBASE 01306 M01S01304.keyex +++|* HEX CODE FOR KEY TABLE OFFSET 01307 M01S01305.keyex +++| BOOLEAN ZCARRET(1) 01308 M01S01306.keyex +++|* HEX CODE FOR CARRIAGE RETURN 01309 M01S01307.keyex +++| BOOLEAN ZDEFKEY(4) 01310 M01S01308.keyex +++|* HEX SEQUENCE TO DEFINE FUNCTION KEY 01311 M01S01309.keyex +++| BOOLEAN ZDISKEY(3) 01312 M01S01310.keyex +++|* HEX SEQUENCE TO DISABLE KEYBOARD ENTRY 01313 M01S01311.keyex +++| BOOLEAN ZDISRET(3) 01314 M01S01312.keyex +++|* HEX SEQUENCE TO DISABLE CARRIAGE RETURN 01315 M01S01313.keyex +++| BOOLEAN ZECHO 01316 M01S01314.keyex +++|* HEX CODE FOR ECHO 01317 M01S01315.keyex +++| BOOLEAN ZECHOFF 01318 M01S01316.keyex +++|* HEX CODE FOR ECHO OFF 01319 M01S01317.keyex +++| BOOLEAN ZECHON 01320 M01S01318.keyex +++|* HEX CODE FOR ECHO ON 01321 M01S01319.keyex +++| BOOLEAN ZENBIAS(2) 01322 M01S01320.keyex +++|* HEX SEQUENCE TO ENABLE BIAS 01323 M01S01321.keyex +++| BOOLEAN ZENRETN(2) 01324 M01S01322.keyex +++|* HEX SEQUENCE TO ENABLE CARRIAGE RETURN 01325 M01S01323.keyex +++| BOOLEAN ZENKEYB(3) 01326 M01S01324.keyex +++|* HEX SEQUENCE TO ENABLE KEYBOARD ENTRY 01327 M01S01325.keyex +++| BOOLEAN ZTRMKEY(2) 01328 M01S01326.keyex +++|* HEX SEQUENCE TO TERMINATE KEY DEFINITIONS 01329 M01S01327.keyex +++| CHARACTER*7 FILENM 01330 M01S01328.keyex +++|* KEY DEFINITIONS FILE 01331 M01S01329.keyex +++| CHARACTER*67 KEYS(NKEYS) 01332 M01S01330.keyex +++|* FUNCTION KEY DEFINITIONS 01333 M01S01331.keyex +++| CHARACTER*7 SETDATA(3) 01334 M01S01332.keyex +++|* SETUP DATA 01335 M01S01333.keyex +++| INTEGER ASCII 01336 M01S01334.keyex +++|* Z80 CHARACTER 01337 M01S01335.keyex +++| INTEGER LASTNB 01338 M01S01336.keyex +++|* LAST NON-BLANK CHARACTER 01339 M01S01337.keyex +++| 01340 M01S01338.keyex +++| COMMON / INFO / KEYS, FILENM, SETDATA 01341 M01S01339.keyex +++| 01342 M01S01340.keyex +++| DATA ADDR / Z"C002"/ 01343 M01S01341.keyex +++| DATA ADDL / Z"C000"/ 01344 M01S01342.keyex +++| DATA ZBASE / Z"30" / 01345 M01S01343.keyex +++| DATA ZCARRET / Z"0D" / 01346 M01S01344.keyex +++| DATA ZDEFKEY / Z"1E", Z"09", Z"30", Z"34" / 01347 M01S01345.keyex +++| DATA ZDISKEY / Z"1E", Z"12", Z"4D" / 01348 M01S01346.keyex +++| DATA ZDISRET / Z"1E", Z"12", Z"5A" / 01349 M01S01347.keyex +++| DATA ZECHON / Z"34" / 01350 M01S01348.keyex +++| DATA ZECHOFF / Z"31" / 01351 M01S01349.keyex +++| DATA ZENBIAS / Z"1E", Z"30" / 01352 M01S01350.keyex +++| DATA ZENRETN / Z"1E", Z"05" / 01353 M01S01351.keyex +++| DATA ZENKEYB / Z"1E", Z"12", Z"4E" / 01354 M01S01352.keyex +++| DATA ZFEED / Z"0A" / 01355 M01S01353.keyex +++| DATA ZTRMKEY / Z"2F", Z"6F"/ 01356 M01S01354.keyex +++| 01357 M01S01355.keyex +++| 01358 M01S01356.keyex +++| CALL PACK(1, 0) 01359 M01S01357.keyex +++| 01360 M01S01358.keyex +++|* LOCK THE KEYBOARD DURING WHILE SENDING DATA TO TERMINAL. 01361 M01S01359.keyex +++| 01362 M01S01360.keyex +++| CALL SEQPACK(ZDISKEY,3) 01363 M01S01361.keyex +++| 01364 M01S01362.keyex +++|* DISABLE *CR* ON FUNCTION KEYS AND ENABLE BIAS. 01365 M01S01363.keyex +++| 01366 M01S01364.keyex +++| CALL SEQPACK(ZDISRET,3) 01367 M01S01365.keyex +++| CALL SEQPACK(ZENBIAS,2) 01368 M01S01366.keyex +++| 01369 M01S01367.keyex +++|* PROCESS EACH FUNCTION KEY'S DEFINITION. IF LAST CHARACTER IN THE 01370 M01S01368.keyex +++|* DEFINITION FIELD IS AN * (ASTERISK), TURN ECHO ON. 01371 M01S01369.keyex +++| 01372 M01S01370.keyex +++| DO 260 I = 1, NKEYS 01373 M01S01371.keyex +++| IF((KEYS(I)(8:8).EQ. ';') .OR. (KEYS(I)(8:8).EQ. ' ')) GOTO 260 01374 M01S01372.keyex +++| IF(KEYS(I)(67:67).EQ. '*') THEN 01375 M01S01373.keyex +++| ZECHO = ZECHON 01376 M01S01374.keyex +++| ELSE 01377 M01S01375.keyex +++| ZECHO = ZECHOFF 01378 M01S01376.keyex +++| ENDIF 01379 M01S01377.keyex +++| ZDEFKEY(3) = ZBASE + I 01380 M01S01378.keyex +++| ZDEFKEY(4) = ZECHO 01381 M01S01379.keyex +++| CALL SEQPACK(ZDEFKEY,4) 01382 M01S01380.keyex +++| CALL ZSNDADD(ADDR) 01383 M01S01381.keyex +++| 01384 M01S01382.keyex +++|* GET ACTUAL CHARACTERS FOR THE DEFINITION. 01385 M01S01383.keyex +++| 01386 M01S01384.keyex +++| LEN = 0 01387 M01S01385.keyex +++| IF((KEYS(I)(8:8) .EQ. 'Z') .AND. (KEYS(I)(9:9) .EQ. '"')) THEN 01388 M01S01386.keyex +++| 01389 M01S01387.keyex +++| DO 210 J = 10, 67, 2 01390 M01S01388.keyex +++| K = J + 1 01391 M01S01389.keyex +++| IF(KEYS(I)(J:J) .EQ. '"') GOTO 220 01392 M01S01390.keyex +++| IF(KEYS(I)(K:K) .EQ. '"') GOTO 220 01393 M01S01391.keyex +++| IF(KEYS(I)(J:J) .LE. '9') C1=ICHAR(KEYS(I)(J:J))-Z"10" 01394 M01S01392.keyex +++| IF(KEYS(I)(J:J) .GE. 'A') C1=ICHAR(KEYS(I)(J:J))-Z"20"+09 01395 M01S01393.keyex +++| IF(KEYS(I)(K:K) .LE. '9') C2=ICHAR(KEYS(I)(K:K))-Z"10" 01396 M01S01394.keyex +++| IF(KEYS(I)(K:K) .GE. 'A') C2=ICHAR(KEYS(I)(K:K))-Z"20"+09 01397 M01S01395.keyex +++| ASCII = C1*16+C2 01398 M01S01396.keyex +++| CALL ZSNDCHR(ASCII) 01399 M01S01397.keyex +++|210 CONTINUE 01400 M01S01398.keyex +++| 01401 M01S01399.keyex +++| J = 68 01402 M01S01400.keyex +++|220 J = K 01403 M01S01401.keyex +++| 01404 M01S01402.keyex +++|* PROCESSING CHARACTER DATA. 01405 M01S01403.keyex +++| 01406 M01S01404.keyex +++| ELSE 01407 M01S01405.keyex +++| 01408 M01S01406.keyex +++|* COUNT TRAILING BLANKS. 01409 M01S01407.keyex +++| 01410 M01S01408.keyex +++| DO 225 J = 66, 8, -1 01411 M01S01409.keyex +++| IF(KEYS(I)(J:J) .NE. ' ') THEN 01412 M01S01410.keyex +++| LASTNB = J 01413 M01S01411.keyex +++| GOTO 227 01414 M01S01412.keyex +++| ENDIF 01415 M01S01413.keyex +++|225 CONTINUE 01416 M01S01414.keyex +++| 01417 M01S01415.keyex +++|227 DO 230 J = 8, MIN(66, LASTNB) 01418 M01S01416.keyex +++| K = J + 1 01419 M01S01417.keyex +++| IF(KEYS(I)(J:J) .EQ. '!'.AND.((KEYS(I)(K:K) .EQ. ' ') 01420 M01S01418.keyex +++| . .OR.(K .EQ. 67))) GOTO 240 01421 M01S01419.keyex +++| IF(KEYS(I)(J:J) .EQ. ';') GOTO 250 01422 M01S01420.keyex +++| IF(KEYS(I)(J:J) .EQ. '!') THEN 01423 M01S01421.keyex +++| CALL ZSNDCHR(ZCARRET) 01424 M01S01422.keyex +++| IF(KEYS(I)(67:67) .EQ. '*') THEN 01425 M01S01423.keyex +++| CALL ZSNDCHR(ZFEED) 01426 M01S01424.keyex +++| LEN = LEN + 1 01427 M01S01425.keyex +++| ENDIF 01428 M01S01426.keyex +++| ELSE 01429 M01S01427.keyex +++| ASCII = ICHAR(KEYS(I)(J:J)) + Z"20" 01430 M01S01428.keyex +++| CALL ZSNDCHR(ASCII) 01431 M01S01429.keyex +++| ENDIF 01432 M01S01430.keyex +++|230 CONTINUE 01433 M01S01431.keyex +++| 01434 M01S01432.keyex +++| J = 67 01435 M01S01433.keyex +++|240 CALL ZSNDCHR(ZCARRET) 01436 M01S01434.keyex +++| J = J + 1 01437 M01S01435.keyex +++| ENDIF 01438 M01S01436.keyex +++| 01439 M01S01437.keyex +++|250 LEN = LEN + J - 8 01440 M01S01438.keyex +++| CALL SEQPACK(ZTRMKEY,2) 01441 M01S01439.keyex +++| CALL SEQPACK(ZCARRET,1) 01442 M01S01440.keyex +++| ADDR = ADDR + LEN + 1 01443 M01S01441.keyex +++|260 CONTINUE 01444 M01S01442.keyex +++| 01445 M01S01443.keyex +++|* SET UP AN ADDRESS IN THE 721 TO STORE THE KEY LABELS TO BE USED BY 01446 M01S01444.keyex +++|* THE *DISPLAY* OPTION. 01447 M01S01445.keyex +++| 01448 M01S01446.keyex +++| ZDEFKEY(3) = Z"74" 01449 M01S01447.keyex +++| ZDEFKEY(4) = Z"31" 01450 M01S01448.keyex +++| CALL SEQPACK(ZDEFKEY,4) 01451 M01S01449.keyex +++| CALL ZSNDADD(ADDR) 01452 M01S01450.keyex +++| 01453 M01S01451.keyex +++|* STORE THE F1 - F15 KEY LABELS IN THE TERMINAL. 01454 M01S01452.keyex +++| 01455 M01S01453.keyex +++| DO 280 I = 1, 15 01456 M01S01454.keyex +++| DO 270 J = 1, 7 01457 M01S01455.keyex +++| ASCII = ICHAR(KEYS(I)(J:J)) + Z"20" 01458 M01S01456.keyex +++| CALL ZSNDCHR(ASCII) 01459 M01S01457.keyex +++|270 CONTINUE 01460 M01S01458.keyex +++|280 CONTINUE 01461 M01S01459.keyex +++| 01462 M01S01460.keyex +++|* STORE THE 'LAB' LABEL AS F16 IN THE TERMINAL. 01463 M01S01461.keyex +++| 01464 M01S01462.keyex +++| DO 290 I = 1, 7 01465 M01S01463.keyex +++| ASCII = ICHAR(KEYS(27)(I:I)) + Z"20" 01466 M01S01464.keyex +++| CALL ZSNDCHR(ASCII) 01467 M01S01465.keyex +++|290 CONTINUE 01468 M01S01466.keyex +++| 01469 M01S01467.keyex +++|* TERMINATE KEY DEFINITIONS. 01470 M01S01468.keyex +++| 01471 M01S01469.keyex +++| CALL SEQPACK(ZTRMKEY,2) 01472 M01S01470.keyex +++| CALL SEQPACK(ZCARRET,1) 01473 M01S01471.keyex +++| ADDR = (ADDR + (7*16) + 1) - ADDL 01474 M01S01472.keyex +++| 01475 M01S01473.keyex +++|* SEND LENGTH OF CHARACTER LOAD TO BASE ADDRESS *ADDL*. 01476 M01S01474.keyex +++| 01477 M01S01475.keyex +++| ZDEFKEY(3) = Z"70" 01478 M01S01476.keyex +++| ZDEFKEY(4) = Z"32" 01479 M01S01477.keyex +++| CALL SEQPACK(ZDEFKEY,4) 01480 M01S01478.keyex +++| CALL ZSNDADD(ADDL) 01481 M01S01479.keyex +++| CALL ZSNDADD(ADDR) 01482 M01S01480.keyex +++| CALL SEQPACK(ZCARRET,1) 01483 M01S01481.keyex +++| 01484 M01S01482.keyex +++|* ENABLE KEYBOARD ENTRY. 01485 M01S01483.keyex +++| 01486 M01S01484.keyex +++| CALL Z80CODE 01487 M01S01485.keyex +++| CALL SEQPACK(ZENKEYB,3) 01488 M01S01486.keyex +++| CALL PACK(3, 1) 01489 M01S01487.keyex +++| RETURN 01490 M01S01488.keyex +++| END 01491 M01S01489.keyex +++| 01492 M01S01490.keyex +++| 01493 M01S01491.keyex +++| 01494 M01S01492.keyex +++| SUBROUTINE SEQPACK(SEQUENC,NBYTES) 01495 M01S01493.keyex +++| 01496 M01S01494.keyex +++|** SEQPACK - PACKS THE GIVEN SEQUENCE INTO A BUFFER FOR OUTPUT. 01497 M01S01495.keyex +++|* 01498 M01S01496.keyex +++|* *SEQPACK* PACKS THE GIVEN SEQUENCE INTO THE OUTPUT BUFFER VIA 01499 M01S01497.keyex +++|* THE *PACK* ROUTINE. 01500 M01S01498.keyex +++|* 01501 M01S01499.keyex +++|* CALL SEQPACK(SEQUENC,NBYTES) 01502 M01S01500.keyex +++|* 01503 M01S01501.keyex +++|* ENTRY SEQUENC = ARRAY OF BOOLEAN HEX CODES. 01504 M01S01502.keyex +++|* NBYTES = LENGTH OF HEX CODE ARRAY. 01505 M01S01503.keyex +++|* 01506 M01S01504.keyex +++|* CALLS PACK. 01507 M01S01505.keyex +++| 01508 M01S01506.keyex +++| IMPLICIT INTEGER (A - Z) 01509 M01S01507.keyex +++| 01510 M01S01508.keyex +++| PARAMETER (MAXBYTS = 5) 01511 M01S01509.keyex +++|* MAXIMUM LENGTH OF *SEQUENC* 01512 M01S01510.keyex +++| 01513 M01S01511.keyex +++| BOOLEAN OFFSET 01514 M01S01512.keyex +++|* OFFSET FOR Z80 PROCESSING 01515 M01S01513.keyex +++| BOOLEAN SEQUENC(MAXBYTS) 01516 M01S01514.keyex +++|* ARRAY OF BOOLEAN HEX CODES 01517 M01S01515.keyex +++| INTEGER NBYTES 01518 M01S01516.keyex +++|* LENGTH OF HEX CODE ARRAY 01519 M01S01517.keyex +++| 01520 M01S01518.keyex +++| DATA OFFSET / Z"800" / 01521 M01S01519.keyex +++| 01522 M01S01520.keyex +++| 01523 M01S01521.keyex +++| DO 100 I = 1, NBYTES 01524 M01S01522.keyex +++| CALL PACK(2, OFFSET + SEQUENC(I)) 01525 M01S01523.keyex +++|100 CONTINUE 01526 M01S01524.keyex +++| 01527 M01S01525.keyex +++| RETURN 01528 M01S01526.keyex +++| END 01529 M01S01527.keyex +++| 01530 M01S01528.keyex +++| 01531 M01S01529.keyex +++| SUBROUTINE SYSKEYS 01532 M01S01530.keyex +++| 01533 M01S01531.keyex +++|** SYSKEYS - SET SYSTEM DEFAULTS FOR KEYS AND SETUP CHARACTERISTICS. 01534 M01S01532.keyex +++|* 01535 M01S01533.keyex +++|* *SYSKEYS* INITIALIZES *KEYS* AND TERMINAL SETUP CHARACTERISTICS 01536 M01S01534.keyex +++|* WITH THE SYSTEM DEFAULTS. 01537 M01S01535.keyex +++|* 01538 M01S01536.keyex +++|* CALL SYSKEYS 01539 M01S01537.keyex +++|* 01540 M01S01538.keyex +++|* USES KEYS, SETDATA. 01541 M01S01539.keyex +++| 01542 M01S01540.keyex +++| 01543 M01S01541.keyex +++| IMPLICIT INTEGER (A - Z) 01544 M01S01542.keyex +++| 01545 M01S01543.keyex +++| PARAMETER (NKEYS = 45) 01546 M01S01544.keyex +++|* NUMBER OF DEFINABLE FUNCTION KEYS 01547 M01S01545.keyex +++| 01548 M01S01546.keyex +++| BOOLEAN KHELP 01549 M01S01547.keyex +++|* HEX CODE FOR HELP KEY 01550 M01S01548.keyex +++| BOOLEAN KEDIT 01551 M01S01549.keyex +++|* HEX CODE FOR EDIT KEY 01552 M01S01550.keyex +++| BOOLEAN KSTOP 01553 M01S01551.keyex +++|* HEX CODE FOR STOP KEY 01554 M01S01552.keyex +++| BOOLEAN ZBASE 01555 M01S01553.keyex +++|* HEX CODE FOR BASE OFFSET OF KEY TABLE 01556 M01S01554.keyex +++| CHARACTER*7 FILENM 01557 M01S01555.keyex +++|* KEY DEFINITIONS FILE 01558 M01S01556.keyex +++| CHARACTER*67 KEYS(NKEYS) 01559 M01S01557.keyex +++|* FUNCTION KEY DEFINITIONS 01560 M01S01558.keyex +++| CHARACTER*7 SETDATA(3) 01561 M01S01559.keyex +++|* TERMINAL SETUP DATA 01562 M01S01560.keyex +++| CHARACTER*7 STRDEF 01563 M01S01561.keyex +++|* DEFAULT STRING 01564 M01S01562.keyex +++| CHARACTER*7 STRHLP 01565 M01S01563.keyex +++|* HELP STRING 01566 M01S01564.keyex +++| CHARACTER*7 STRHL1 01567 M01S01565.keyex +++|* HELP WITH CARRIAGE RETURN STRING 01568 M01S01566.keyex +++| CHARACTER*7 STREDT 01569 M01S01567.keyex +++|* EDIT STRING 01570 M01S01568.keyex +++| CHARACTER*7 STRFSE 01571 M01S01569.keyex +++|* FSE WITH CARRIAGE RETURN STRING 01572 M01S01570.keyex +++| CHARACTER*7 STRSTP 01573 M01S01571.keyex +++|* STOP STRING 01574 M01S01572.keyex +++| CHARACTER*7 STRCTT 01575 M01S01573.keyex +++|* CONTROL-T STOP STRING 01576 M01S01574.keyex +++| 01577 M01S01575.keyex +++| COMMON / INFO / KEYS, FILENM, SETDATA 01578 M01S01576.keyex +++| 01579 M01S01577.keyex +++| DATA KHELP / Z"47" / 01580 M01S01578.keyex +++| DATA KEDIT / Z"49" / 01581 M01S01579.keyex +++| DATA KSTOP / Z"4D" / 01582 M01S01580.keyex +++| DATA ZBASE / Z"30" / 01583 M01S01581.keyex +++| DATA STRDEF / 'DEFAULT' / 01584 M01S01582.keyex +++| DATA STRHLP / 'HELP ' / 01585 M01S01583.keyex +++| DATA STRHL1 / 'HELP! ' / 01586 M01S01584.keyex +++| DATA STREDT / 'EDIT ' / 01587 M01S01585.keyex +++| DATA STRFSE / 'FSE! ' / 01588 M01S01586.keyex +++| DATA STRSTP / 'STOP ' / 01589 M01S01587.keyex +++| DATA STRCTT / 'Z"140D"' / 01590 M01S01588.keyex +++| 01591 M01S01589.keyex +++| 01592 M01S01590.keyex +++|* INITIALIZE *KEYS*. 01593 M01S01591.keyex +++| 01594 M01S01592.keyex +++| DO 100 I = 1, NKEYS 01595 M01S01593.keyex +++| KEYS(I) = ' ' 01596 M01S01594.keyex +++|100 CONTINUE 01597 M01S01595.keyex +++| 01598 M01S01596.keyex +++|* INITIALIZE *SETDATA*. 01599 M01S01597.keyex +++| 01600 M01S01598.keyex +++| SETDATA(1) = STRDEF 01601 M01S01599.keyex +++| SETDATA(2) = STRDEF 01602 M01S01600.keyex +++| SETDATA(3) = STRDEF 01603 M01S01601.keyex +++| 01604 M01S01602.keyex +++|* STORE LABEL AND KEY DEFINITION FOR EACH *KEYS(I)*. 01605 M01S01603.keyex +++|* EACH *KEYS(I)* = 7/LABEL, 60/DEFINITION. 01606 M01S01604.keyex +++| 01607 M01S01605.keyex +++| KEYS(KHELP - Z"30")(1:07) = STRHLP 01608 M01S01606.keyex +++| KEYS(KHELP - Z"30")(8:67) = STRHLP 01609 M01S01607.keyex +++| KEYS(KEDIT - Z"30")(1:07) = STREDT 01610 M01S01608.keyex +++| KEYS(KEDIT - Z"30")(8:67) = STRFSE 01611 M01S01609.keyex +++| KEYS(KSTOP - Z"30")(1:07) = STRSTP 01612 M01S01610.keyex +++| KEYS(KSTOP - Z"30")(8:67) = STRCTT 01613 M01S01611.keyex +++| RETURN 01614 M01S01612.keyex +++| END 01615 M01S01613.keyex +++| 01616 M01S01614.keyex +++| 01617 M01S01615.keyex +++| SUBROUTINE VERLOAD(LOADED) 01618 M01S01616.keyex +++| 01619 M01S01617.keyex +++|** VERLOAD - VERIFY THAT TERMINAL HAS LOADED CONTROLWARE. 01620 M01S01618.keyex +++|* 01621 M01S01619.keyex +++|* *VERLOAD* INITIATES A LOADED CONTROLWARE SEQUENCE FOLLOWED BY A 01622 M01S01620.keyex +++|* MODEL REPORT REQUEST (WHICH IS ALWAYS PRESENT ON A 721 TERMINAL). 01623 M01S01621.keyex +++|* IF THE FIRST ITEM THAT COMES BACK IS THE MODEL REPORT REQUEST 01624 M01S01622.keyex +++|* DATA, THEN THERE WAS NO LOADED CONTROLWARE PRESENT. 01625 M01S01623.keyex +++|* 01626 M01S01624.keyex +++|* CALL VERLOAD(LOADED) 01627 M01S01625.keyex +++|* 01628 M01S01626.keyex +++|* EXIT *LOADED* IS SET IF LOADED CONTROLWARE IS PRESENT. 01629 M01S01627.keyex +++|* 01630 M01S01628.keyex +++|* CALLS PACK, SEQPACK. 01631 M01S01629.keyex +++| 01632 M01S01630.keyex +++| 01633 M01S01631.keyex +++| IMPLICIT INTEGER (A - Z) 01634 M01S01632.keyex +++| 01635 M01S01633.keyex +++| BOOLEAN OUT 01636 M01S01634.keyex +++|* OCTAL CODE TO INITIATE TRANSPARENT MODE 01637 M01S01635.keyex +++| BOOLEAN ZDISKEY(3) 01638 M01S01636.keyex +++|* HEX SEQUENCE TO DISABLE KEYBOARD ENTRY 01639 M01S01637.keyex +++| BOOLEAN ZENKEYB(3) 01640 M01S01638.keyex +++|* HEX SEQUENCE TO ENABLE KEYBOARD ENTRY 01641 M01S01639.keyex +++| BOOLEAN ZHOSTLC(3) 01642 M01S01640.keyex +++|* HEX SEQUENCE FOR HOST LOADED CONTROLWARE 01643 M01S01641.keyex +++| BOOLEAN ZMODREP(3) 01644 M01S01642.keyex +++|* HEX SEQUENCE FOR MODEL REPORT REQUEST 01645 M01S01643.keyex +++| CHARACTER*2 CTRLT 01646 M01S01644.keyex +++|* CONTROL-T TERMINATION SEQUENCE 01647 M01S01645.keyex +++| CHARACTER*5 MODREP 01648 M01S01646.keyex +++|* TERMINAL MODEL REPORT 01649 M01S01647.keyex +++| CHARACTER*7 VERSTR 01650 M01S01648.keyex +++|* VERIFICATION STRING IF TERMINAL LOADED 01651 M01S01649.keyex +++| INTEGER IOS 01652 M01S01650.keyex +++|* IOSTAT VALUE FROM FORMATTED READ 01653 M01S01651.keyex +++| CHARACTER*112 OPRAM4 01654 M01S01652.keyex +++|* 721 HEX SEQUENCE CODES 01655 M01S01653.keyex +++| LOGICAL LOADED 01656 M01S01654.keyex +++|* CONTROLWARE LOADED FLAG 01657 M01S01655.keyex +++| 01658 M01S01656.keyex +++| DATA MODREP /'536.5'/ 01659 M01S01657.keyex +++| DATA VERSTR /'6A536.5'/ 01660 M01S01658.keyex +++| DATA CTRLT /'5T'/ 01661 M01S01659.keyex +++| DATA OUT /O"00060400001500000000"/ 01662 M01S01660.keyex +++|* OUT IS 1 WORD WITH THE DATA LEFT JUSTIFIED 01663 M01S01661.keyex +++|* 0006 = INITIATES TRANSPARENT INPUT MODE 01664 M01S01662.keyex +++|* 0400 = WORD LENGTH OF BLOCK TO TRANSMIT 01665 M01S01663.keyex +++|* 0015 = DELIMITER OF A *CR* 01666 M01S01664.keyex +++| 01667 M01S01665.keyex +++| DATA OPRAM4 / ' ' / 01668 M01S01666.keyex +++| DATA ZDISKEY / Z"1E", Z"12", Z"4D" / 01669 M01S01667.keyex +++| DATA ZENKEYB / Z"1E", Z"12", Z"4E" / 01670 M01S01668.keyex +++| DATA ZHOSTLC / Z"1E", Z"12", Z"75" / 01671 M01S01669.keyex +++| DATA ZMODREP / Z"1E", Z"43", Z"30" / 01672 M01S01670.keyex +++| 01673 M01S01671.keyex +++|11 FORMAT(A112) 01674 M01S01672.keyex +++| 01675 M01S01673.keyex +++| 01676 M01S01674.keyex +++|* TURN OFF INPUT PROMPT AND INITIATE TRANSPARENT INPUT. 01677 M01S01675.keyex +++| 01678 M01S01676.keyex +++| CALL PROMPT 01679 M01S01677.keyex +++| CLOSE (2 ,STATUS = 'DELETE' ) 01680 M01S01678.keyex +++| OPEN (2, RECL=100, FILE='OUTPUT', FORM = 'UNFORMATTED') 01681 M01S01679.keyex +++|12 WRITE (2) OUT 01682 M01S01680.keyex +++| CLOSE (2 ,STATUS = 'DELETE' ) 01683 M01S01681.keyex +++| OPEN (2, RECL=100, FILE='OUTPUT') 01684 M01S01682.keyex +++| 01685 M01S01683.keyex +++| 01686 M01S01684.keyex +++|* GET FUNCTION KEY LABELS FROM THE 721. 01687 M01S01685.keyex +++|* KEYBOARD MUST BE LOCKED WHILE 721 SENDS FUNCTION KEY DATA UPLINE. 01688 M01S01686.keyex +++| 01689 M01S01687.keyex +++| CALL PACK(1, 0) 01690 M01S01688.keyex +++| CALL SEQPACK(ZDISKEY,3) 01691 M01S01689.keyex +++| CALL SEQPACK(ZHOSTLC,3) 01692 M01S01690.keyex +++| CALL SEQPACK(ZMODREP,3) 01693 M01S01691.keyex +++| CALL PACK(3, 1) 01694 M01S01692.keyex +++| 01695 M01S01693.keyex +++|* CHECK IF THE MODEL REPORT COMES BACK FIRST. IF SO, KEYS HAVE NOT 01696 M01S01694.keyex +++|* BEEN DEFINED. THE VALUE OF THE MODEL REPORT WILL NOT BE AFFECTED BY 01697 M01S01695.keyex +++|* SYSTEM CHANGES. 01698 M01S01696.keyex +++| 01699 M01S01697.keyex +++| READ(5,11,IOSTAT=IOS,ERR=14,END=14)OPRAM4 01700 M01S01698.keyex +++| 01701 M01S01699.keyex +++|* CHECK IF TYPED-AHEAD INPUT ENTERED. NOTE THAT THE PROCESS LOOPS 01702 M01S01700.keyex +++|* UNTIL ALL TYPED-AHEAD INPUT IS REMOVED, AND IS SATISFIED ONLY 01703 M01S01701.keyex +++|* WHEN A CORRECT SEQUENCE IS RECEIVED FROM THE TERMINAL. 01704 M01S01702.keyex +++| 01705 M01S01703.keyex +++|13 IF (.NOT.((OPRAM4(3:7) .EQ. MODREP(1:5)).OR. 01706 M01S01704.keyex +++| . (OPRAM4(3:5) .EQ. CTRLT(1:2)).OR. 01707 M01S01705.keyex +++| . (OPRAM4(3:9) .EQ. VERSTR(1:7)))) THEN 01708 M01S01706.keyex +++| GOTO 12 01709 M01S01707.keyex +++| ENDIF 01710 M01S01708.keyex +++| CALL PACK(1, 0) 01711 M01S01709.keyex +++| CALL SEQPACK(ZENKEYB,3) 01712 M01S01710.keyex +++| CALL PACK(3, 1) 01713 M01S01711.keyex +++| IF(OPRAM4(3:7) .EQ. MODREP(1:5)) THEN 01714 M01S01712.keyex +++| LOADED = .FALSE. 01715 M01S01713.keyex +++| ELSE 01716 M01S01714.keyex +++| LOADED = .TRUE. 01717 M01S01715.keyex +++| ENDIF 01718 M01S01716.keyex +++| RETURN 01719 M01S01717.keyex +++| 01720 M01S01718.keyex +++|14 REWIND 5 01721 M01S01719.keyex +++| GOTO 13 01722 M01S01720.keyex +++| END 01723 M01S01721.keyex +++| 01724 M01S01722.keyex +++| 01725 M01S01723.keyex +++| SUBROUTINE WRSORC 01726 M01S01724.keyex +++| 01727 M01S01725.keyex +++|** WRSORC - WRITE KEY DEFINITIONS TO THE SOURCE FILE. 01728 M01S01726.keyex +++|* 01729 M01S01727.keyex +++|* *WRSORC* WILL WRITE THE KEY DEFINITIONS TO THE 01730 M01S01728.keyex +++|* SOURCE FILE. 01731 M01S01729.keyex +++|* 01732 M01S01730.keyex +++|* CALL WRSORC 01733 M01S01731.keyex +++|* 01734 M01S01732.keyex +++|* CALLS PF. 01735 M01S01733.keyex +++| 01736 M01S01734.keyex +++| 01737 M01S01735.keyex +++| IMPLICIT INTEGER (A - Z) 01738 M01S01736.keyex +++| 01739 M01S01737.keyex +++| PARAMETER (NKEYS = 45) 01740 M01S01738.keyex +++|* NUMBER OF DEFINABLE FUNCTION KEYS 01741 M01S01739.keyex +++| PARAMETER (NSETUP = 3) 01742 M01S01740.keyex +++|* NUMBER OF TERMINAL SETUP CHARACTERISTICS 01743 M01S01741.keyex +++| 01744 M01S01742.keyex +++| CHARACTER*7 FILENM 01745 M01S01743.keyex +++|* KEY DEFINITIONS FILE 01746 M01S01744.keyex +++| CHARACTER*60 KEYDEF 01747 M01S01745.keyex +++|* FUNCTION KEY DEFINITION 01748 M01S01746.keyex +++| CHARACTER*67 KEYS(NKEYS) 01749 M01S01747.keyex +++|* LABEL AND KEYDEF 01750 M01S01748.keyex +++| CHARACTER*7 LABEL 01751 M01S01749.keyex +++|* FUNCTION KEY LABEL 01752 M01S01750.keyex +++| CHARACTER*7 SETDATA(3) 01753 M01S01751.keyex +++|* SETUP TERMINAL CHARACTERISTICS 01754 M01S01752.keyex +++| 01755 M01S01753.keyex +++| COMMON / INFO / KEYS, FILENM, SETDATA 01756 M01S01754.keyex +++| 01757 M01S01755.keyex +++|10 FORMAT(A7, 1X, A60) 01758 M01S01756.keyex +++|20 FORMAT(A7) 01759 M01S01757.keyex +++| 01760 M01S01758.keyex +++| 01761 M01S01759.keyex +++| REWIND 1 01762 M01S01760.keyex +++| 01763 M01S01761.keyex +++|* WRITE FUNCTION KEY DEFINITIONS TO FILE. 01764 M01S01762.keyex +++| 01765 M01S01763.keyex +++| DO 210 I = 1, NKEYS 01766 M01S01764.keyex +++| WRITE(1, 10) KEYS(I)(1:7), KEYS(I)(8:67) 01767 M01S01765.keyex +++|210 CONTINUE 01768 M01S01766.keyex +++| 01769 M01S01767.keyex +++|* WRITE TERMINAL SETUP CHARACTERISTICS TO FILE. 01770 M01S01768.keyex +++| 01771 M01S01769.keyex +++| DO 220 I = 1, NSETUP 01772 M01S01770.keyex +++| WRITE(1, 20) SETDATA(I) 01773 M01S01771.keyex +++|220 CONTINUE 01774 M01S01772.keyex +++| 01775 M01S01773.keyex +++| REWIND 1 01776 M01S01774.keyex +++| CALL PF('REPLACE', 'TAPE1', FILENM, 'NA', IGNORE) 01777 M01S01775.keyex +++| RETURN 01778 M01S01776.keyex +++| END 01779 M01S01777.keyex +++| 01780 M01S01778.keyex +++| 01781 M01S01779.keyex +++| SUBROUTINE ZSNDADD(ADDRESS) 01782 M01S01780.keyex +++| 01783 M01S01781.keyex +++|** ZSNDADD - FORMAT AND PACK Z80 ADDRESS INTO BUFFER. 01784 M01S01782.keyex +++|* 01785 M01S01783.keyex +++|* *ZSNDSEQ* FORMATS THE GIVEN ADDRESS INTO MODIFIED HEX 01786 M01S01784.keyex +++|* FORMAT AND PACKS IT INTO THE BUFFER BEING SENT TO THE 01787 M01S01785.keyex +++|* TERMINAL. 01788 M01S01786.keyex +++|* 01789 M01S01787.keyex +++|* CALL ZSNDADD(ADDRESS) 01790 M01S01788.keyex +++|* 01791 M01S01789.keyex +++|* ENTRY ADDRESS - Z80 ADDRESS IN TERMINAL MEMORY. 01792 M01S01790.keyex +++|* 01793 M01S01791.keyex +++|* CALLS PACK. 01794 M01S01792.keyex +++| 01795 M01S01793.keyex +++| 01796 M01S01794.keyex +++| IMPLICIT INTEGER (A - Z) 01797 M01S01795.keyex +++| 01798 M01S01796.keyex +++| 01799 M01S01797.keyex +++| BOOLEAN ADDRESS 01800 M01S01798.keyex +++|* Z80 ADDRESS IN TERMINAL MEMORY 01801 M01S01799.keyex +++| 01802 M01S01800.keyex +++| 01803 M01S01801.keyex +++| CALL BYTE(SHIFT(AND(ADDRESS, Z"FF00"), -8), U1ADDR, L1ADDR) 01804 M01S01802.keyex +++| CALL BYTE(AND(ADDRESS, Z"00FF"), U2ADDR, L2ADDR) 01805 M01S01803.keyex +++| CALL PACK(2, U1ADDR) 01806 M01S01804.keyex +++| CALL PACK(2, L1ADDR) 01807 M01S01805.keyex +++| CALL PACK(2, U2ADDR) 01808 M01S01806.keyex +++| CALL PACK(2, L2ADDR) 01809 M01S01807.keyex +++| RETURN 01810 M01S01808.keyex +++| END 01811 M01S01809.keyex +++| 01812 M01S01810.keyex +++| 01813 M01S01811.keyex +++| SUBROUTINE ZSNDCHR(ZCHAR) 01814 M01S01812.keyex +++| 01815 M01S01813.keyex +++|** ZSNDCHR - FORMAT AND PACK Z80 CHARACTER INTO BUFFER. 01816 M01S01814.keyex +++|* 01817 M01S01815.keyex +++|* *ZSNDCHR* FORMATS THE GIVEN Z80 CHARACTER INTO MODIFIED HEX 01818 M01S01816.keyex +++|* FORMAT AND PACKS IT INTO THE BUFFER BEING SENT TO THE 01819 M01S01817.keyex +++|* TERMINAL. 01820 M01S01818.keyex +++|* 01821 M01S01819.keyex +++|* CALL ZSNDCHR(ZCHAR) 01822 M01S01820.keyex +++|* 01823 M01S01821.keyex +++|* ENTRY ZCHAR - Z80 CHARACTER. 01824 M01S01822.keyex +++|* 01825 M01S01823.keyex +++|* CALLS PACK. 01826 M01S01824.keyex +++| 01827 M01S01825.keyex +++| 01828 M01S01826.keyex +++| IMPLICIT INTEGER (A - Z) 01829 M01S01827.keyex +++| 01830 M01S01828.keyex +++| 01831 M01S01829.keyex +++| INTEGER TEMP1 01832 M01S01830.keyex +++|* Z80 UPPER BYTE 01833 M01S01831.keyex +++| INTEGER TEMP2 01834 M01S01832.keyex +++|* Z80 LOWER BYTE 01835 M01S01833.keyex +++| INTEGER ZCHAR 01836 M01S01834.keyex +++|* Z80 CHARACTER 01837 M01S01835.keyex +++| 01838 M01S01836.keyex +++| 01839 M01S01837.keyex +++| CALL BYTE(ZCHAR, TEMP1, TEMP2) 01840 M01S01838.keyex +++| CALL PACK(2, TEMP1) 01841 M01S01839.keyex +++| CALL PACK(2, TEMP2) 01842 M01S01840.keyex +++| RETURN 01843 M01S01841.keyex +++| END 01844 M01S01842.keyex +++| 01845 M01S01843.keyex +++| 01846 M01S01844.keyex +++| SUBROUTINE ZSNDSEQ(ZARRAY,ZLENGTH) 01847 M01S01845.keyex +++| 01848 M01S01846.keyex +++|** ZSNDSEQ - FORMAT AND PACK Z80 CODE SEQUENCE INTO BUFFER. 01849 M01S01847.keyex +++|* 01850 M01S01848.keyex +++|* *ZSNDSEQ* FORMATS THE Z80 CODE TO A MODIFIED HEX FORMAT 01851 M01S01849.keyex +++|* AND THEN PACKS THE SEQUENCE INTO THE BUFFER THAT IS TO 01852 M01S01850.keyex +++|* BE SENT TO THE TERMINAL. 01853 M01S01851.keyex +++|* 01854 M01S01852.keyex +++|* CALL ZSNDSEQ(ZARRAY,ZLENGTH) 01855 M01S01853.keyex +++|* 01856 M01S01854.keyex +++|* ENTRY ZARRAY - Z80 CODE ARRAY TO BE FORMATTED AND PACKED. 01857 M01S01855.keyex +++|* ZLENGTH - LENGTH OF THE ARRAY(SEQUENCE). 01858 M01S01856.keyex +++|* 01859 M01S01857.keyex +++|* CALLS ZSNDCHR. 01860 M01S01858.keyex +++| 01861 M01S01859.keyex +++| 01862 M01S01860.keyex +++| IMPLICIT INTEGER (A - Z) 01863 M01S01861.keyex +++| 01864 M01S01862.keyex +++| 01865 M01S01863.keyex +++| PARAMETER (MAXSEQ = 50) 01866 M01S01864.keyex +++|* MAXIMUM LENGTH OF SEQUENCE 01867 M01S01865.keyex +++| 01868 M01S01866.keyex +++| BOOLEAN ZARRAY(MAXSEQ) 01869 M01S01867.keyex +++|* Z80 CODE SEQUENCE 01870 M01S01868.keyex +++| INTEGER ZLENGTH 01871 M01S01869.keyex +++|* LENGTH OF THE Z80 CODE SEQUENCE 01872 M01S01870.keyex +++| 01873 M01S01871.keyex +++| 01874 M01S01872.keyex +++| DO 100 I = 1, ZLENGTH 01875 M01S01873.keyex +++| CALL ZSNDCHR(ZARRAY(I)) 01876 M01S01874.keyex +++| 100 CONTINUE 01877 M01S01875.keyex +++| RETURN 01878 M01S01876.keyex +++| END 01879 M01S01877.keyex +++| 01880 M01S01878.keyex +++| 01881 M01S01879.keyex +++| SUBROUTINE Z80CODE 01882 M01S01880.keyex +++| 01883 M01S01881.keyex +++|** Z80CODE - LOAD Z80 CONTROLWARE INTO TERMINAL. 01884 M01S01882.keyex +++|* 01885 M01S01883.keyex +++|* *Z80CODE* STORES THE Z80 ROUTINES *PUSH*, *POP*, 01886 M01S01884.keyex +++|* *RESET*, AND *LABEL* INTO THE TERMINAL, AND THEN 01887 M01S01885.keyex +++|* DEFINES SEVERAL VIRTUAL KEYS WITH THE ADDRESSES OF 01888 M01S01886.keyex +++|* THE LOADED CONTROLWARE. LATER, WHEN THE KEY IS 01889 M01S01887.keyex +++|* INVOKED, THE TERMINAL KNOWS THAT IT CONTAINS THE 01890 M01S01888.keyex +++|* ADDRESS OF THE LOADED CONTROLWARE, AND BEGINS 01891 M01S01889.keyex +++|* EXECUTION OF THE LOADED Z80 ROUTINES. 01892 M01S01890.keyex +++|* 01893 M01S01891.keyex +++|* THE SOURCE FOR THE FOLLOWING HARDCODED ROUTINES IS 01894 M01S01892.keyex +++|* CONTAINED ON THE MAINTENANCE PL AS DECKNAME *KEYUTIL*. 01895 M01S01893.keyex +++|* 01896 M01S01894.keyex +++|* TO REPRODUCE THE Z80 BINARY CODES, RUN THE Z80 VARIANT 01897 M01S01895.keyex +++|* OF COMPASS AGAINST THE Z80 ROUTINES IN *KEYUTIL*, THEN 01898 M01S01896.keyex +++|* HAND TRANSLATE THE CODE INTO THE ROUTINES BELOW. 01899 M01S01897.keyex +++|* 01900 M01S01898.keyex +++|* CALL Z80CODE 01901 M01S01899.keyex +++|* 01902 M01S01900.keyex +++|* CALLS PACK, SEQPACK. 01903 M01S01901.keyex +++|* 01904 M01S01902.keyex +++|* NOTES THE SOURCE FOR THE Z80 BINARY IS PROVIDED HERE. THIS 01905 M01S01903.keyex +++|* SOURCE IS ASSEMBLED USING A Z80 ASSEMBLER, AND THE 01906 M01S01904.keyex +++|* BINARY CODES PRODUCED ARE THEN PLACED INTO THE *FORTRAN* 01907 M01S01905.keyex +++|* DATA STATEMENTS. 01908 M01S01906.keyex +++| 01909 M01S01907.keyex +++| 01910 M01S01908.keyex +++| IMPLICIT INTEGER (A - Z) 01911 M01S01909.keyex +++| 01912 M01S01910.keyex +++| PARAMETER (LZPUSH = 27) 01913 M01S01911.keyex +++|* LENGTH OF THE Z80 PUSH ROUTINE 01914 M01S01912.keyex +++| PARAMETER (LZPOP = 24) 01915 M01S01913.keyex +++|* LENGTH OF THE Z80 POP ROUTINE 01916 M01S01914.keyex +++| PARAMETER (LZRESET = 30) 01917 M01S01915.keyex +++|* LENGTH OF THE Z80 RESET ROUTINE 01918 M01S01916.keyex +++| PARAMETER (LZLABEL = 29) 01919 M01S01917.keyex +++|* LENGTH OF THE Z80 LABEL ROUTINE 01920 M01S01918.keyex +++| PARAMETER (LZVERFY = 6) 01921 M01S01919.keyex +++|* LENGTH OF THE Z80 VERIFY ROUTINE 01922 M01S01920.keyex +++| PARAMETER (LKEYC = 5) 01923 M01S01921.keyex +++|* DIMENSION FOR THE *KEYC* ARRAY 01924 M01S01922.keyex +++| 01925 M01S01923.keyex +++| BOOLEAN ZABSLOC 01926 M01S01924.keyex +++|* ABSOLUTE LOCATION OF Z80 ROUTINES 01927 M01S01925.keyex +++| BOOLEAN ZCARRET(1) 01928 M01S01926.keyex +++|* HEX CODE FOR CARRIAGE RETURN 01929 M01S01927.keyex +++| BOOLEAN ZCONSEQ(4) 01930 M01S01928.keyex +++|* HEX SEQUENCE FOR CONTROLWARE SEQUENCE 01931 M01S01929.keyex +++| BOOLEAN ZPUSH(LZPUSH) 01932 M01S01930.keyex +++|* HEX ARRAY FOR PUSH ROUTINE 01933 M01S01931.keyex +++| BOOLEAN ZPOP(LZPOP) 01934 M01S01932.keyex +++|* HEX ARRAY FOR POP ROUTINE 01935 M01S01933.keyex +++| BOOLEAN ZRESET(LZRESET) 01936 M01S01934.keyex +++|* HEX ARRAY FOR RESET ROUTINE 01937 M01S01935.keyex +++| BOOLEAN ZLABEL(LZLABEL) 01938 M01S01936.keyex +++|* HEX ARRAY FOR LABEL ROUTINE 01939 M01S01937.keyex +++| BOOLEAN ZVERFY(LZVERFY) 01940 M01S01938.keyex +++|* HEX ARRAY FOR VERIFY ROUTINE 01941 M01S01939.keyex +++| INTEGER KEYC(LKEYC, 2) 01942 M01S01940.keyex +++|* ARRAY FOR Z80 CODE 01943 M01S01941.keyex +++| 01944 M01S01942.keyex +++| DATA ZABSLOC / Z"D100" / 01945 M01S01943.keyex +++| DATA ZCARRET / Z"0D" / 01946 M01S01944.keyex +++| DATA ZCONSEQ / Z"1E", Z"09", Z"70", Z"32" / 01947 M01S01945.keyex +++| DATA ZPUSH / 01948 M01S01946.keyex +++| 01949 M01S01947.keyex +++|* Z80 ROUTINE TO PUSH FUNCTION KEY DEFINITION TABLE IN TERMINAL. 01950 M01S01948.keyex +++| 01951 M01S01949.keyex +++| . Z"11", Z"76", Z"D1", Z"01", Z"F0", Z"00", Z"21", Z"E0", Z"D7" 01952 M01S01950.keyex +++| ., Z"ED", Z"B0", Z"3A", Z"47", Z"E0", Z"32", Z"66", Z"D2", Z"3A" 01953 M01S01951.keyex +++| ., Z"B9", Z"E0", Z"32", Z"67", Z"D2", Z"CD", Z"33", Z"D1", Z"C9" 01954 M01S01952.keyex +++| ./ 01955 M01S01953.keyex +++| 01956 M01S01954.keyex +++| DATA ZPOP / 01957 M01S01955.keyex +++| 01958 M01S01956.keyex +++|* Z80 ROUTINE TO POP FUNCTION KEY DEFINITION TABLE IN TERMINAL. 01959 M01S01957.keyex +++| 01960 M01S01958.keyex +++| . Z"21", Z"76", Z"D1", Z"01", Z"F0", Z"00", Z"11", Z"E0", Z"D7" 01961 M01S01959.keyex +++| ., Z"ED", Z"B0", Z"3A", Z"66", Z"D2", Z"32", Z"47", Z"E0", Z"3A" 01962 M01S01960.keyex +++| ., Z"67", Z"D2", Z"32", Z"B9", Z"E0", Z"C9" 01963 M01S01961.keyex +++| ./ 01964 M01S01962.keyex +++| 01965 M01S01963.keyex +++| DATA ZRESET / 01966 M01S01964.keyex +++| 01967 M01S01965.keyex +++|* Z80 ROUTINE TO RESET FUNCTION KEY DEFINITION TABLE IN TERMINAL. 01968 M01S01966.keyex +++| 01969 M01S01967.keyex +++| . Z"3A", Z"47", Z"E0", Z"F6", Z"02", Z"32", Z"47", Z"E0", Z"3E" 01970 M01S01968.keyex +++| ., Z"00", Z"32", Z"B9", Z"E0", Z"01", Z"F3", Z"00", Z"0B", Z"0B" 01971 M01S01969.keyex +++| ., Z"0B", Z"78", Z"B1", Z"C8", Z"21", Z"DD", Z"D7", Z"09", Z"36" 01972 M01S01970.keyex +++| ., Z"30", Z"18", Z"F2" 01973 M01S01971.keyex +++| ./ 01974 M01S01972.keyex +++| 01975 M01S01973.keyex +++| DATA ZLABEL / 01976 M01S01974.keyex +++| 01977 M01S01975.keyex +++|* Z80 ROUTINE TO DISPLAY RESIDENT KEY LABELS. 01978 M01S01976.keyex +++| 01979 M01S01977.keyex +++| . Z"3A", Z"DD", Z"D8", Z"67", Z"3A", Z"DE", Z"D8", Z"6F", Z"46" 01980 M01S01978.keyex +++| ., Z"78", Z"FE", Z"FF", Z"CA", Z"68", Z"D1", Z"E5", Z"CD", Z"87" 01981 M01S01979.keyex +++| ., Z"00", Z"E1", Z"23", Z"18", Z"F1", Z"06", Z"0D", Z"CD", Z"87" 01982 M01S01980.keyex +++| ., Z"00", Z"C9" 01983 M01S01981.keyex +++| ./ 01984 M01S01982.keyex +++| 01985 M01S01983.keyex +++| DATA ZVERFY / 01986 M01S01984.keyex +++| 01987 M01S01985.keyex +++|* Z80 ROUTINE TO SEND VERIFICATION CHARACTER TO HOST. 01988 M01S01986.keyex +++| 01989 M01S01987.keyex +++| . Z"06", Z"41", Z"CD", Z"87", Z"00", Z"C9" / 01990 M01S01988.keyex +++| 01991 M01S01989.keyex +++| DATA (KEYC(I, 1), KEYC(I, 2), I = 1, LKEYC)/ 01992 M01S01990.keyex +++| 01993 M01S01991.keyex +++|* ADDRESS OF Z80 ROUTINE *PUSH* IS STORED IN KEY 70. 01994 M01S01992.keyex +++| 01995 M01S01993.keyex +++| . Z"70", Z"D100" 01996 M01S01994.keyex +++| 01997 M01S01995.keyex +++|* ADDRESS OF Z80 ROUTINE *POP* IS STORED IN KEY 71. 01998 M01S01996.keyex +++| 01999 M01S01997.keyex +++| ., Z"71", Z"D11B" 02000 M01S01998.keyex +++| 02001 M01S01999.keyex +++|* ADDRESS OF Z80 ROUTINE *RESET* IS STORED IN KEY 72. 02002 M01S02000.keyex +++| 02003 M01S02001.keyex +++| ., Z"72", Z"D133" 02004 M01S02002.keyex +++| 02005 M01S02003.keyex +++|* ADDRESS OF Z80 ROUTINE *LABEL* IS STORED IN KEY 73. 02006 M01S02004.keyex +++| 02007 M01S02005.keyex +++| ., Z"73", Z"D151" 02008 M01S02006.keyex +++| 02009 M01S02007.keyex +++|* ADDRESS OF Z80 ROUTINE *VERIFY* IS STORED IN KEY 75. 02010 M01S02008.keyex +++| 02011 M01S02009.keyex +++| ., Z"75", Z"D16E" 02012 M01S02010.keyex +++| ./ 02013 M01S02011.keyex +++| 02014 M01S02012.keyex +++| 02015 M01S02013.keyex +++|*NOTIFY THE TERMINAL OF FOLLOWING CONTROL SEQUENCE. 02016 M01S02014.keyex +++| 02017 M01S02015.keyex +++| CALL SEQPACK(ZCONSEQ,4) 02018 M01S02016.keyex +++| 02019 M01S02017.keyex +++|* STORE ADDRESS FOR THE Z80 PROGRAM. 02020 M01S02018.keyex +++| 02021 M01S02019.keyex +++| ADDR = ZABSLOC 02022 M01S02020.keyex +++| CALL ZSNDADD(ADDR) 02023 M01S02021.keyex +++| 02024 M01S02022.keyex +++|* STORE Z80 CONTROLWARE ROUTINES IN CONSECUTIVE MEMORY AT *ZABSLOC*. 02025 M01S02023.keyex +++| 02026 M01S02024.keyex +++| CALL ZSNDSEQ(ZPUSH, LZPUSH) 02027 M01S02025.keyex +++| CALL ZSNDSEQ(ZPOP, LZPOP) 02028 M01S02026.keyex +++| CALL ZSNDSEQ(ZRESET, LZRESET) 02029 M01S02027.keyex +++| CALL ZSNDSEQ(ZLABEL, LZLABEL) 02030 M01S02028.keyex +++| CALL ZSNDSEQ(ZVERFY, LZVERFY) 02031 M01S02029.keyex +++| CALL SEQPACK(ZCARRET,1) 02032 M01S02030.keyex +++| 02033 M01S02031.keyex +++|* STORE ADDRESSES OF Z80 ROUTINES AT VIRTUAL 7X KEY DEFINITIONS. 02034 M01S02032.keyex +++| 02035 M01S02033.keyex +++| DO 110 I = 1, LKEYC 02036 M01S02034.keyex +++| ADDR = KEYC(I, 2) 02037 M01S02035.keyex +++| ZCONSEQ(3) = KEYC(I, 1) 02038 M01S02036.keyex +++| CALL SEQPACK(ZCONSEQ,4) 02039 M01S02037.keyex +++| CALL ZSNDADD(ADDR) 02040 M01S02038.keyex +++| CALL SEQPACK(ZCARRET,1) 02041 M01S02039.keyex +++|110 CONTINUE 02042 M01S02040.keyex +++| RETURN 02043 M01S02041.keyex +++| END 02044 M01S02042.keyex +++| IDENT PLT 02045 M01S02043.keyex +++| ENTRY PLT 02046 M01S02044.keyex +++| ENTRY PROMPT 02047 M01S02045.keyex +++| ENTRY ERR 02048 M01S02046.keyex +++| ENTRY RFL= 02049 M01S02047.keyex +++| SPACE 4,10 02050 M01S02048.keyex +++|* COMMON DECKS. 02051 M01S02049.keyex +++|*CALL COMCMAC 02052 M01S02050.keyex +++| PLT SPACE 4,30 02053 M01S02051.keyex +++|** PLT - PANEL LOADER TABLE. 02054 M01S02052.keyex +++|* 02055 M01S02053.keyex +++|* *PLT* FORCES THE CYBER LOADER TO INCLUDE THE SMF PANELS 02056 M01S02054.keyex +++|* AS STATICALLY LOADED PANELS, AND ARE THEREFORE STATISFIED 02057 M01S02055.keyex +++|* BY THE LOADER AT LOAD TIME. 02058 M01S02056.keyex +++|* 02059 M01S02057.keyex +++|* NOTE THE FIRST TWO STATEMENTS INDICATE THE NUMBER OF 02060 M01S02058.keyex +++|* PANELS. 02061 M01S02059.keyex +++| 02062 M01S02060.keyex +++| 02063 M01S02061.keyex +++|PLT VFD 60/8 02064 M01S02062.keyex +++| VFD 60/8 02065 M01S02063.keyex +++| VFD 60/7LKEYPAN1 02066 M01S02064.keyex +++| VFD 1/1,41/0,18/=XKEYPAN1 02067 M01S02065.keyex +++| VFD 60/7LKEYPAN2 02068 M01S02066.keyex +++| VFD 1/1,41/0,18/=XKEYPAN2 02069 M01S02067.keyex +++| VFD 60/7LKEYPAN3 02070 M01S02068.keyex +++| VFD 1/1,41/0,18/=XKEYPAN3 02071 M01S02069.keyex +++| VFD 60/7LKEYPAN4 02072 M01S02070.keyex +++| VFD 1/1,41/0,18/=XKEYPAN4 02073 M01S02071.keyex +++| VFD 60/7LKEYPAN5 02074 M01S02072.keyex +++| VFD 1/1,41/0,18/=XKEYPAN5 02075 M01S02073.keyex +++| VFD 60/7LKEYPAN6 02076 M01S02074.keyex +++| VFD 1/1,41/0,18/=XKEYPAN6 02077 M01S02075.keyex +++| VFD 60/7LKEYPAN7 02078 M01S02076.keyex +++| VFD 1/1,41/0,18/=XKEYPAN7 02079 M01S02077.keyex +++| VFD 60/7LKEYPAN8 02080 M01S02078.keyex +++| VFD 1/1,41/0,18/=XKEYPAN8 02081 M01S02079.keyex +++| PROMPT SPACE 4,15 02082 M01S02080.keyex +++|** PROMPT - TURN FORTRAN PROMPTS OFF. 02083 M01S02081.keyex +++|* 02084 M01S02082.keyex +++|* *PROMPT* TURNS OFF THE FORTRAN PROMPTS IN *CHECK* AND 02085 M01S02083.keyex +++|* *DISPLAY* ROUTINES. 02086 M01S02084.keyex +++|* 02087 M01S02085.keyex +++|* CALLS PROMPT. 02088 M01S02086.keyex +++| 02089 M01S02087.keyex +++| 02090 M01S02088.keyex +++|PROMPT SUBR 02091 M01S02089.keyex +++| PROMPT OFF 02092 M01S02090.keyex +++| EQ PROMPTX RETURN 02093 M01S02091.keyex +++| 02094 M01S02092.keyex +++| ERR SPACE 4,30 02095 M01S02093.keyex +++|** ERR - ERROR PROCESSING. 02096 M01S02094.keyex +++|* 02097 M01S02095.keyex +++|* *ERR* RESETS THE *R1* REGISTER WHICH IS USED AS AN ERROR FLAG 02098 M01S02096.keyex +++|* IN THE *CCL* PROCEDURE. 02099 M01S02097.keyex +++|* 02100 M01S02098.keyex +++|* ENTRY THE USER IS IN LINE MODE OR DOES NOT HAVE A *721* TYPE 02101 M01S02099.keyex +++|* TERMINAL. 02102 M01S02100.keyex +++|* 02103 M01S02101.keyex +++|* EXIT R1 = 1 02104 M01S02102.keyex +++|* 02105 M01S02103.keyex +++|* USES X - 1, 6 02106 M01S02104.keyex +++|* A - 1, 6 02107 M01S02105.keyex +++|* 02108 M01S02106.keyex +++|* CALLS GETJCR, SETJCR. 02109 M01S02107.keyex +++| 02110 M01S02108.keyex +++| 02111 M01S02109.keyex +++|ERR SUBR 02112 M01S02110.keyex +++| GETJCR REGS 02113 M01S02111.keyex +++| SA1 REGS 02114 M01S02112.keyex +++| SX6 X1+1 02115 M01S02113.keyex +++| SA6 REGS 02116 M01S02114.keyex +++| SETJCR REGS 02117 M01S02115.keyex +++| EQ ERRX RETURN 02118 M01S02116.keyex +++| 02119 M01S02117.keyex +++|REGS CON 0 02120 M01S02118.keyex +++| 02121 M01S02119.keyex +++|* BLANK COMMON BLOCK IS USED TO CREATE AN RFL= ENTRY POINT. 02122 M01S02120.keyex +++| 02123 M01S02121.keyex +++| USE // 02124 M01S02122.keyex +++|RFL= BSS 0 02125 M01S02123.keyex +++| 02126 M01S02124.keyex +++| END
cdc/nos2.source/opl.opl871/deck/keyex.txt ยท Last modified: by 127.0.0.1