Seq # *Modification Id* Act
----------------------------+
00001 M01S00001.keyutil +++| IDENT KEYUTIL
00002 M01S00002.keyutil +++| MACHINE Z80
00003 M01S00003.keyutil +++| TITLE KEYUTIL - KEY UTILITY HOST LOADED CONTROLWARE.
00004 M01S00004.keyutil +++|*COMMENT KEYUTIL - KEY UTILITY HOST LOADED CONTROLWARE.
Line S00005 Modification History |
M01 (Added by) | keyutil |
M02 (Updated by) | 281l803 |
Seq # *Modification Id* Act
----------------------------+
00005 M02S00005.281l803 ---| COMMENT COPYRIGHT CONTROL DATA CORPORATION, 1984.
00006 M01S00001.281l803 +++| COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
00007 M01S00006.keyutil +++| KYU SPACE 4,10
00008 M01S00007.keyutil +++|*** KEYUTIL - KEY UTILITY HOST LOADED CONTROLWARE.
00009 M01S00008.keyutil +++|*
00010 M01S00009.keyutil +++|* W. F. ANSLEY. 83/06/01.
00011 M01S00010.keyutil +++|* M. L. SWANSON. 85/01/03.
00012 M01S00011.keyutil +++| KYU SPACE 4,10
00013 M01S00012.keyutil +++|*** *KEYUTIL* IS THE SOURCE CODE FOR THE Z80 PROGRAM THAT
00014 M01S00013.keyutil +++|* IS LOADED INTO THE 721 TERMINAL BY THE *KEY* UTILITY.
00015 M01S00014.keyutil +++|* THE PROGRAM *KEYEX* ACTUALLY HAS THE BINARY FOR THIS
00016 M01S00015.keyutil +++|* PROGRAM HARDCODED WITHIN ITSELF; THIS PROGRAM IS INCLUDED
00017 M01S00016.keyutil +++|* ON THE OPL FOR DOCUMENTATION PURPOSES ONLY. IF ANY
00018 M01S00017.keyutil +++|* CHANGES ARE MADE TO THIS PROGRAM, CORRESPONDING CHANGES
00019 M01S00018.keyutil +++|* MUST BE MADE TO THE HARDCODED VALUES WITHIN *KEYEX*.
00020 M01S00019.keyutil +++| KYU SPACE 4,10
00021 M01S00020.keyutil +++|*** ASSEMBLY CONSTANTS.
00022 M01S00021.keyutil +++|
00023 M01S00022.keyutil +++|SENDB EQU #0087 SEND CHARACTER IN B
00024 M01S00023.keyutil +++|OBYTE2 EQU #E047
00025 M01S00024.keyutil +++|DLMENA EQU #E0B9
00026 M01S00025.keyutil +++|KYT EQU #D7E0 KEY TABLE ADDRESS
00027 M01S00026.keyutil +++|KTL EQU #F0 KEY TABLE LENGTH
00028 M01S00027.keyutil +++|DEFB EQU #C000 DEFINITION BUFFER
00029 M01S00028.keyutil +++|DFBE EQU #CAFF DEFINITION BUFFER END
00030 M01S00029.keyutil +++|
00031 M01S00030.keyutil +++| ORG #D100
00032 M01S00031.keyutil +++|
00033 M01S00032.keyutil +++| KYU SPACE 4,25
00034 M01S00033.keyutil +++|*** PUSH - PUSH FUNCTION KEY DEFINITIONS.
00035 M01S00034.keyutil +++|*
00036 M01S00035.keyutil +++|* *PUSH* COPIES THE IMAGE OF THE CURRENT KEY DEFINITIONS
00037 M01S00036.keyutil +++|* AND COPIES IT TO A BUFFER WITHIN THE TERMINAL.
00038 M01S00037.keyutil +++|*
00039 M01S00038.keyutil +++|* CALLS RESET.
00040 M01S00039.keyutil +++|
00041 M01S00040.keyutil +++|PUSH BSS 0 PUSH ROUTINE
00042 M01S00041.keyutil +++| LD DE,SKTB GET KEY TABLE ADDRESS
00043 M01S00042.keyutil +++| LD BC,KTL GET BYTE COUNTER
00044 M01S00043.keyutil +++| LD HL,KYT GET KEY TABLE SAVE AREA
00045 M01S00044.keyutil +++| LDIR PUSH KEY TABLE
00046 M01S00045.keyutil +++| LD A,(OBYTE2)
00047 M01S00046.keyutil +++| LD (OBS2),A SAVE SETUP CHARACTERISTICS
00048 M01S00047.keyutil +++| LD A,(DLMENA)
00049 M01S00048.keyutil +++| LD (DLMS),A SAVE DELIMITER FLAG
00050 M01S00049.keyutil +++| SCF CARRIAGE RETURN AFTER FUNCTION KEY
00051 M01S00050.keyutil +++| CCF CLEAR CARRY FLAG
00052 M01S00051.keyutil +++| LD A,(DEFB) GET LENGTH OF KEY DEFINITIONS
00053 M01S00052.keyutil +++| LD D,A
00054 M01S00053.keyutil +++| LD A,(DEFB+1)
00055 M01S00054.keyutil +++| LD E,A
00056 M01S00055.keyutil +++| INC DE
00057 M01S00056.keyutil +++| INC DE SET DE TO LENGTH+2
00058 M01S00057.keyutil +++| LD (DFLS),DE SAVE TOTAL LENGTH
00059 M01S00058.keyutil +++| LD HL,DFBE MOVE HL TO END OF DEF BUFF
00060 M01S00059.keyutil +++| SBC HL,DE SET HL TO START OF PUSH AREA
00061 M01S00060.keyutil +++| LD (DFSA),HL SAVE WHERE MOVED
00062 M01S00061.keyutil +++| EX DE,HL MOVE DE TO LOCATION MOVED
00063 M01S00062.keyutil +++| LD HL,DEFB SET HL TO KEY DEFINITION BUFFER
00064 M01S00063.keyutil +++| LD BC,(DFLS) SET NUMBER OF BYTES TO MOVE
00065 M01S00064.keyutil +++| LDIR PUSH DEFINITIONS
00066 M01S00065.keyutil +++| CALL RESET RESET DEFINITION TABLE
00067 M01S00066.keyutil +++| RET RETURN
00068 M01S00067.keyutil +++|
00069 M01S00068.keyutil +++| KYU SPACE 4,25
00070 M01S00069.keyutil +++|*** POP - POP FUNCTION KEY DEFINITIONS.
00071 M01S00070.keyutil +++|*
00072 M01S00071.keyutil +++|* *POP* COPIES THE STORED FUNCTION KEY DEFINITIONS
00073 M01S00072.keyutil +++|* FROM THE BUFFER WITHIN THE TERMINAL TO THE
00074 M01S00073.keyutil +++|* RESIDENT FUNCTION KEY DEFINITION AREA.
00075 M01S00074.keyutil +++|
00076 M01S00075.keyutil +++|POP BSS 0 ENTRY
00077 M01S00076.keyutil +++| LD HL,SKTB RESTORE KEY TABLE BUFFER ADDRESS
00078 M01S00077.keyutil +++| LD BC,KTL RESTORE KEY TABLE LENGTH
00079 M01S00078.keyutil +++| LD DE,KYT RESTORE KEY TABLE AREA
00080 M01S00079.keyutil +++| LDIR RETURN USERS DEFINITIONS
00081 M01S00080.keyutil +++| LD A,(OBS2)
00082 M01S00081.keyutil +++| LD (OBYTE2),A RESTORE OBYTE2
00083 M01S00082.keyutil +++| LD A,(DLMS)
00084 M01S00083.keyutil +++| LD (DLMENA),A RESTORE DELIMITER FLAG
00085 M01S00084.keyutil +++| LD HL,(DFSA) DEF SAVED ADDRESS
00086 M01S00085.keyutil +++| LD A,H
00087 M01S00086.keyutil +++| OR L
00088 M01S00087.keyutil +++| RET Z IF NONE
00089 M01S00088.keyutil +++|
00090 M01S00089.keyutil +++| LD DE,DEFB RESTORE DEFINITION BUFFER
00091 M01S00090.keyutil +++| LD BC,(DFLS) NUMBER OF BYTES TO MOVE
00092 M01S00091.keyutil +++| LDIR RESTORE DEFINITIONS
00093 M01S00092.keyutil +++| RET RETURN
00094 M01S00093.keyutil +++|
00095 M01S00094.keyutil +++| KYU SPACE 4,25
00096 M01S00095.keyutil +++|*** RESET - RESET DEFINITION TABLE.
00097 M01S00096.keyutil +++|*
00098 M01S00097.keyutil +++|* *RESET* INITIALIZES THE RESIDENT KEY DEFINITION TABLE
00099 M01S00098.keyutil +++|* WITHIN THE TERMINAL.
00100 M01S00099.keyutil +++|
00101 M01S00100.keyutil +++|RESET BSS 0 ENTRY
00102 M01S00101.keyutil +++| LD A,(OBYTE2) GET OBYTE2
00103 M01S00102.keyutil +++| OR 2 SET NUMERIC PAD SHIFTED
00104 M01S00103.keyutil +++| LD (OBYTE2),A REPLACE OBYTE2
00105 M01S00104.keyutil +++| LD A,0
00106 M01S00105.keyutil +++| LD (DLMENA),A SET DELIMITER FLAG FALSE
00107 M01S00106.keyutil +++| LD BC,KTL+3
00108 M01S00107.keyutil +++|RESET1 BSS 0
00109 M01S00108.keyutil +++| DEC BC
00110 M01S00109.keyutil +++| DEC BC
00111 M01S00110.keyutil +++| DEC BC
00112 M01S00111.keyutil +++| LD A,B
00113 M01S00112.keyutil +++| OR C
00114 M01S00113.keyutil +++| RET Z UNTIL DONE WITH TABLE
00115 M01S00114.keyutil +++|
00116 M01S00115.keyutil +++| LD HL,KYT-3 SET HL TO KEY TABLE-3
00117 M01S00116.keyutil +++| ADD HL,BC SET HL TO DEFINITION BYTE
00118 M01S00117.keyutil +++| LD (HL),#30 UNDEFINE KEY
00119 M01S00118.keyutil +++| JR RESET1
00120 M01S00119.keyutil +++|
00121 M01S00120.keyutil +++| KYU SPACE 4,25
00122 M01S00121.keyutil +++|*** LABEL - GET LABELS FROM MEMORY.
00123 M01S00122.keyutil +++|*
00124 M01S00123.keyutil +++|* *LABEL* RETRIEVES THE STORED FUNCTION KEY LABELS
00125 M01S00124.keyutil +++|* FROM WITHIN THE TERMINAL MEMORY.
00126 M01S00125.keyutil +++|*
00127 M01S00126.keyutil +++|* CALLS POP, PUSH, SENDB.
00128 M01S00127.keyutil +++|
00129 M01S00128.keyutil +++|LABEL BSS 0 ENTRY
00130 M01S00129.keyutil +++| LD A,(#D8DD)
00131 M01S00130.keyutil +++| LD H,A
00132 M01S00131.keyutil +++| LD A,(#D8DE)
00133 M01S00132.keyutil +++| LD L,A
00134 M01S00133.keyutil +++|LABEL1 BSS 0
00135 M01S00134.keyutil +++| LD B,(HL)
00136 M01S00135.keyutil +++| LD A,B
00137 M01S00136.keyutil +++| CP #FF
00138 M01S00137.keyutil +++| JP Z,LABEL2 UNTIL REACH LAST BYTE
00139 M01S00138.keyutil +++|
00140 M01S00139.keyutil +++| PUSH HL
00141 M01S00140.keyutil +++| CALL SENDB SEND CHARACTER TO HOST
00142 M01S00141.keyutil +++| POP HL
00143 M01S00142.keyutil +++| INC HL TO NEXT CHARACTER
00144 M01S00143.keyutil +++| JR LABEL1
00145 M01S00144.keyutil +++|LABEL2 BSS 0
00146 M01S00145.keyutil +++| LD B,#0D
00147 M01S00146.keyutil +++| CALL SENDB SEND CARRIAGE RETURN
00148 M01S00147.keyutil +++| RET RETURN
00149 M01S00148.keyutil +++|
00150 M01S00149.keyutil +++|DFSA BSS 2 DEFINITIONS SAVED ADDRESS
00151 M01S00150.keyutil +++|SKTB BSS KTL SAVE KEY TABLE BUFFER
00152 M01S00151.keyutil +++|OBS2 CON 0 OBYTE2 SAVE AREA
00153 M01S00152.keyutil +++|DLMS CON 0 DELMENA SAVE AREA
00154 M01S00153.keyutil +++|DFLS CON 0 DEF LENGTH SAVE AREA
00155 M01S00154.keyutil +++|
00156 M01S00155.keyutil +++| END