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