home *** CD-ROM | disk | FTP | other *** search
/ Power Programming / powerprogramming1994.iso / progtool / microcrn / issue_43.arc / KAYPRO43.ARC / KAYPRO.5 < prev    next >
Text File  |  1988-07-21  |  5KB  |  164 lines

  1. ; Micro Cornucopia issue #43
  2. ; Kaypro Column - Figure 5 MAPU.ASM
  3.  
  4. ;***********************************************
  5. ;*                                             *
  6. ;*THIS SMALL PROGRAM GENERATES A CHARACTER     *
  7. ;*TRANSLATION TABLE FOR THE KAYPRO CURSOR      *
  8. ;*KEYS AND THE NUMERIC KEYPAD.  IT INSTALLS THE*
  9. ;*TABLE INTO THE CP/M BIOS.  THE TRANSLATION   *
  10. ;*WILL REMAIN IN FORCE UNTIL THE NEXT COLD     *
  11. ;*(NOT WARM) BOOT, OR UNTIL THE COMPLEMENTARY  *
  12. ;*PROGRAM 'UNMAPU' IS RUN.                     *
  13. ;*                                             *
  14. ;*THIS IS A SPECIAL VERSION FOR CP/M 2.2U      *
  15. ;*                                             *
  16. ;***********************************************
  17.  
  18. SIZE    EQU     61      ;CPM SIZE IN K
  19.  
  20. CBASE   EQU     SIZE*1024-1C00H;BEGINNING OF CCP
  21. FBASE   EQU     CBASE + 800H ;BEGINNING OF BDOS
  22.  
  23. BIOS    EQU     CBASE + 1600H;BEGINNING OF BIOS
  24.  
  25. KTAB    EQU     BIOS+244H;BEGIN OF KEYPAD TABLE
  26. VTAB    EQU     BIOS+343H;BEGIN OF CURSOR TABLE
  27.  
  28.         ORG     100H
  29.  
  30. MAPKEY: LXI     H, MAP;ADDRESS TRANSLATION TABLE
  31.         LXI     D, VTAB;ADDRESS CP/M CURSOR TABLE
  32.         MVI     B, 4    ;SET BYTE COUNT
  33. LOOP1:  MOV     A, M    ;COPY TABLE INTO BIOS
  34.         STAX    D
  35.         INX     H
  36.         INX     D
  37.         DCR     B
  38.         JNZ     LOOP1
  39.  
  40.         LXI     D, KTAB ;ADDRESS CP/M BIOS TABLE
  41.         MVI     B, COUNT;SET BYTE COUNT
  42. LOOP2:  MOV     A, M    ;COPY TABLE INTO BIOS
  43.         STAX    D
  44.         INX     H
  45.         INX     D
  46.         DCR     B
  47.         JNZ     LOOP2
  48.         RET             ;RETURN TO CCP
  49.  
  50. ;
  51. ; TRANSLATION TABLE FOR CURSOR KEYS
  52. ;
  53. MAP:    DB      'E'-'@' ;UP ARROW( ^E )
  54.         DB      'X'-'@' ;DOWN ARROW( ^X )
  55.         DB      'S'-'@' ;LEFT ARROW( ^S )
  56.         DB      'D'-'@' ;RIGHT ARROW( ^D )
  57.  
  58. ; TABLE OF COUNTS AND OFFSETS
  59.  
  60. ; THIS TABLE BEGINS THE DATA LOADED INTO THE BIOS.
  61. ; DON'T CHANGE THIS TABLE EXPLICITLY. ITS VALUES
  62. ; WILL BE ADJUSTED TO MATCH THE CHARACTER TABLE.
  63.  
  64. KMAP:   DB      CNT1
  65.         DB      OFF1
  66.         DB      CNT2
  67.         DB      OFF2
  68.         DB      CNT3
  69.         DB      OFF3
  70.         DB      CNT4
  71.         DB      OFF4
  72.         DB      CNT5
  73.         DB      OFF5
  74.         DB      CNT6
  75.         DB      OFF6
  76.         DB      CNT7
  77.         DB      OFF7
  78.         DB      CNT8
  79.         DB      OFF8
  80.         DB      CNT9
  81.         DB      OFF9
  82.         DB      CNT10
  83.         DB      OFF10
  84.         DB      CNT11
  85.         DB      OFF11
  86.         DB      CNT12
  87.         DB      OFF12
  88.         DB      CNT13
  89.         DB      OFF13
  90.         DB      CNT14
  91.         DB      OFF14
  92.  
  93. ;************************************************
  94. ;*                                              *
  95. ;* FOLLOWING DATA MAY BE CHANGED FOR THE KEYPAD *
  96. ;* TRANSLATIONS DESIRED.                        *
  97. ;*                                              *
  98. ;************************************************
  99.  
  100. ; BYTE DATA FOR THE MAPS
  101. ; CHANGE THIS DATA AS DESIRED FOR THE APPLICATION
  102. ; DATA MAY BE ONE OR MORE BYTES PER KEY, AS LONG
  103. ; AS TOTAL NUMBER OF BYTES DOES NOT EXCEED 223.
  104.  
  105. K1:     DB      'Q'-'@' ;NUM KEY '0'( ^Q )
  106. K2:     DB      'Z'-'@' ;NUM KEY '1'( ^Z )
  107. K3:     DB      'C'-'@' ;NUM KEY '2'( ^C )
  108. K4:     DB      'B'-'@' ;NUM KEY '3'( ^B )
  109. K5:     DB      'A'-'@' ;NUM KEY '4'( ^A )
  110. K6:     DB      'L'-'@' ;NUM KEY '5'( ^L )
  111. K7:     DB      'F'-'@' ;NUM KEY '6'( ^F )
  112. K8:     DB      'W'-'@' ;NUM KEY '7'( ^W )
  113. K9:     DB      'R'-'@' ;NUM KEY '8'( ^R )
  114. K10:    DB      'T'-'@' ;NUM KEY '9'( ^T )
  115. K11:    DB      'Y'-'@' ;NUM KEY '-'( ^Y )
  116. K12:    DB      'G'-'@' ;NUM KEY ','( ^G )
  117. K13:    DB      'K'-'@' ;NUM KEY 'ENTER'( ^K )
  118. K14:    DB      'V'-'@' ;NUM KEY '.'( ^V )
  119.  
  120. FIN:    DS      0       ;DUMMY FOR ADDR CALCS
  121.  
  122. COUNT   EQU     FIN - KMAP      ;#BYTES TO COPY
  123.  
  124. ;
  125. ; BYTE COUNTS FOR TRANSLATIONS
  126. ;
  127.  
  128. CNT1    EQU     K2 - K1
  129. CNT2    EQU     K3 - K2
  130. CNT3    EQU     K4 - K3
  131. CNT4    EQU     K5 - K4
  132. CNT5    EQU     K6 - K5
  133. CNT6    EQU     K7 - K6
  134. CNT7    EQU     K8 - K7
  135. CNT8    EQU     K9 - K8
  136. CNT9    EQU     K10 - K9
  137. CNT10   EQU     K11 - K10
  138. CNT11   EQU     K12 - K11
  139. CNT12   EQU     K13 - K12
  140. CNT13   EQU     K14 - K13
  141. CNT14   EQU     FIN - K14
  142.  
  143. ;
  144. ; OFFSETS FROM BEGINNING OF TABLE
  145. ;
  146.  
  147. OFF1    EQU     01CH
  148. OFF2    EQU     OFF1 + CNT1
  149. OFF3    EQU     OFF2 + CNT2
  150. OFF4    EQU     OFF3 + CNT3
  151. OFF5    EQU     OFF4 + CNT4
  152. OFF6    EQU     OFF5 + CNT5
  153. OFF7    EQU     OFF6 + CNT6
  154. OFF8    EQU     OFF7 + CNT7
  155. OFF9    EQU     OFF8 + CNT8
  156. OFF10   EQU     OFF9 + CNT9
  157. OFF11   EQU     OFF10 + CNT10
  158. OFF12   EQU     OFF11 + CNT11
  159. OFF13   EQU     OFF12 + CNT12
  160. OFF14   EQU     OFF13 + CNT13
  161.  
  162.         END
  163.  
  164.