⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 key05r2.lst

📁 使用68HC705J1A写的一个键盘的代码,包括资料说明,一份难得的资料,本人开发键盘时好不容易才找到的资料
💻 LST
📖 第 1 页 / 共 4 页
字号:

KEY05R2.ASM            Assembled with CASM   05/06/1998  18:19  PAGE 1



                   1  *****************************************************
                   2  *                                                   *
                   3  *   101 Key, IBM Keyboard Decoder for 68HC705J1A.   *
                   4  *                                                   *
                   5  *      Craig Peacock (cpeacock@senet.com.au)        *
                   6  *                    6th May 1998                   *
                   7  *                                                   *
                   8  *        Includes ALTDEC & CTRLHEX Routines         *
                   9  *                                                   *
                  10  *****************************************************
                  11  
                  12  ; Port A
                  13  
 0300             14  nreset  equ     5       ; Reset Output (Open Drain)
 0300             15  clk     equ     6       ; Clock I/O
 0300             16  data    equ     7       ; Data I/O
                  17  
                  18  ; Port B
                  19  
 0300             20  TXD     equ     5       ; Transmit Data
                  21  
                  22  ; Equates for LED Byte
                  23  
 0300             24  pscrlck equ     4       ; If true, Scroll Lock Pressed
 0300             25  pnumlck equ     3       ; If true, Num Lock Pressed
 0300             26  caplock equ     2       ; If true, Caps Lock is On (Active)
 0300             27  numlock equ     1       ; If true, Num Lock is On (Active)
 0300             28  scrlock equ     0       ; If true, Scroll Lock is On (Active)
                  29  
                  30  ; Equates for Status Flag, Byte
                  31  
 0300             32  rctrl   equ     7       ; If true, Right Ctrl Pressed
 0300             33  lctrl   equ     6       ; If true, Left Ctrl Pressed
 0300             34  ralt    equ     5       ; If true, Right Alt Pressed
 0300             35  lalt    equ     4       ; If true, Left Alt Pressed
                  36  
 0300             37  caploc  equ     2       ; If true, Caps Lock Pressed
 0300             38  rshift  equ     1       ; If true, Right Shift Key Pressed
 0300             39  lshift  equ     0       ; If true, Left Shift Key Pressed
                  40  
 00C0             41          org     ram
                  42  
 00C0             43  byte    rmb     1       ; Used to hold byte, during Trans & Rec
 00C1             44  status  rmb     1       ; Status Flags
 00C2             45  LED     rmb     1       ; LED Flags
 00C3             46  asc     rmb     3       ; Used for altdec & ctrlhex
 00C6             47  PAR     rmb     1       ; Used during receive for Parity Tracking
                  48  
 07F8             49          org     $7F8
                  50  
 07F8 0300        51          dw      start   ; Timer Interrupt Vector
 07FA 0300        52          dw      start   ; IRQ Vector
 07FC 0300        53          dw      start   ; Software Interrupt Vector
 07FE 0300        54          dw      start   ; Reset Vector
                  55  
 07F1             56          org     $7F1    ; Mask Option Register (MOR)
 07F1 20          57          db      $20     ; Osc Internal Res Enabled
                  58  


KEY05R2.ASM            Assembled with CASM   05/06/1998  18:19  PAGE 2



 0300             59          org     rom
                  60  
 0300 A600        61  start   lda     #%00000000      ;PORTA - Inputs
 0302 B704        62          sta     ddra            ;Set Data Direction Register
 0304 B710        63          sta     pdra            ;Enable Pull Downs
 0306 B700        64          sta     PORTA           ;Set nReset, Clk & Data low
                  65  
 0308 A627        66          lda     #%00100111      ;PORTB - I/O
 030A B705        67          sta     ddrb            ;Set Data Direction Register
 030C B711        68          sta     pdrb            ;Dis/enable Pull Downs
 030E A620        69          lda       #%00100000      ;Transmit Idle
 0310 B701        70    sta     PORTB
                  71  
 0312 CC031C      72          jmp     rstflag         ;No Attempt to Reset Keyboard made
                  73                                  ;as keyboard would still be in POST
                  74                                  ;or BAT Tests, if power applied at
                  75                                  ;the same time than the HC705.
                  76  
                  77  *****************************************************
                  78  *                                                   *
                  79  * reset - Sends a Reset Command to the Keyboard.    *
                  80  *         Not a very good effort to reset keyboard, *
                  81  *         as it doesn't check for ACK or BAT        *
                  82  *         Completion Code. I.e. Reset may not of    *
                  83  *         even Worked!                              *
                  84  *                                                   *
                  85  *****************************************************
                  86  
 0315 A6FF        87  reset   lda     #$FF            ;Reset Keyboard
 0317 B7C0        88          sta     byte
 0319 CD0497      89          jsr     transmit
                  90  
                  91  *****************************************************
                  92  *                                                   *
                  93  * rstflag - Resets Status and LED Flags. Used when  *
                  94  *           a successful Bat Completion code is     *
                  95  *           sent to sync keyboard's LED's to 705's  *
                  96  *           status register                         *
                  97  *                                                   *
                  98  *****************************************************
                  99  
 031C 3FC1       100  rstflag clr     status
 031E 3FC2       101          clr     LED
                 102  
                 103  *****************************************************
                 104  *                                                   *
                 105  * main - Main Keyboard Decoding Routine. Once key   *
                 106  *        been decoded, program should return here   *
                 107  *                                                   *
                 108  *****************************************************
                 109  
 0320 CD04DE     110  main    jsr     Receive ;Get's a Single Byte from the Keyboard.
 0323 B6C0       111          lda     byte
                 112  
 0325 A1F0       113          cmp     #$F0    ;A Key has been Released
 0327 2603       114          bne     main1
 0329 CC0427     115          jmp     release
                 116  


KEY05R2.ASM            Assembled with CASM   05/06/1998  18:19  PAGE 3



 032C A1AA       117  main1   cmp     #$AA    ;Successful Completion of BAT
 032E 2603       118          bne     main2
 0330 CC031C     119          jmp     rstflag
                 120  
 0333 A1E0       121  main2   cmp     #$E0    ;Extended Keys
 0335 2603       122          bne     main3
 0337 CC03D4     123          jmp     extend
                 124  
 033A A112       125  main3   cmp     #$12    ;Left Shift Key Pressed
 033C 2602       126          bne     main4
 033E 10C1       127          bset    lshift,status
                 128  
 0340 A159       129  main4   cmp     #$59    ;Right Shift Key Pressed
 0342 2602       130          bne     main5
 0344 12C1       131          bset    rshift,status
                 132  
 0346 A114       133  main5   cmp     #$14    ;Left Ctrl
 0348 2605       134          bne     main6
 034A 1CC1       135          bset    lctrl,status
 034C CC058A     136          jmp     clrasc
                 137  
 034F A111       138  main6   cmp     #$11    ;Left Alt
 0351 2605       139          bne     main7
 0353 18C1       140          bset    lalt,status
 0355 CC058A     141          jmp     clrasc
                 142  
 0358 A158       143  main7   cmp     #$58    ;Caps Lock Pressed
 035A 2605       144          bne     main8
 035C 05C154     145          brclr   caploc,status,caps
 035F 14C1       146          bset    caploc,status
                 147  
 0361 A17E       148  main8   cmp     #$7E    ;Scroll Lock Pressed
 0363 2605       149          bne     main9
 0365 09C161     150          brclr   pscrlck,status,scrl
 0368 18C1       151          bset    pscrlck,status
                 152  
 036A A177       153  main9   cmp     #$77    ;Num Lock Pressed
 036C 2605       154          bne     main10
 036E 07C14D     155          brclr   pnumlck,status,nums
 0371 16C1       156          bset    pnumlck,status
                 157  
 0373 A18F       158  main10  cmp     #$8F    ;Last Value in Look-Up Table
 0375 2503       159          blo     main11
 0377 CC0320     160          jmp     main    ;Out of Bounds
                 161  
 037A 97         162  main11  tax
 037B 04C20C     163          brset   caplock,LED,caps_on
 037E 02C10F     164          brset   rshift,status,shifton
 0381 00C10C     165          brset   lshift,status,shifton
                 166  
 0384 D605C8     167  cancel  lda     noshift,x               ;Load Lower Case Values
 0387 CC0393     168          jmp     main12
                 169  
 038A 02C1F7     170  caps_on brset   rshift,status,cancel    ;If ShiftLock & Shift, Cancel
 038D 00C1F4     171          brset   lshift,status,cancel
                 172  
 0390 D60658     173  shifton lda     shift,x                 ;Load Upper Case Values
                 174  


KEY05R2.ASM            Assembled with CASM   05/06/1998  18:19  PAGE 4



 0393 271B       175  main12  beq     return                  ;Scan Code not in Lookup Table.
                 176  
 0395 97         177          tax
 0396 B6C1       178          lda     status
 0398 A430       179          and     #$30                    ;Either Alt Key Pressed
 039A 2704       180          beq     main13
 039C 9F         181          txa
 039D CC053F     182          jmp     altdec
                 183  
 03A0 B6C1       184  main13  lda     status
 03A2 A4C0       185          and     #$C0                    ;Either CTRL Key Pressed
 03A4 2704       186          beq     main14
 03A6 9F         187          txa
 03A7 CC0525     188          jmp     ctrlhex
                 189  
 03AA 9F         190  main14  txa
 03AB B7C0       191          sta     byte
 03AD CD0593     192          jsr     RS232T                  ;Send to RS232
                 193  
 03B0 CC0320     194  return  jmp     main
                 195  
                 196  *****************************************************
                 197  *                                                   *
                 198  * caps - Toggle Status of Caps lock and Echo to     *
                 199  *        Keyboard                                   *
                 200  *                                                   *
                 201  *****************************************************
                 202  
 03B3 14C1       203  caps    bset    caploc,status   ; Set caploc flag to prevent routine being
                 204                                  ; called again
 03B5 B6C2       205          lda     LED
 03B7 A804       206          eor     #$04            ; Toggle Shift Lock Flag
 03B9 B7C2       207          sta     LED
 03BB CC0479     208          jmp     LEDshow
                 209  
                 210  *****************************************************
                 211  *                                                   *
                 212  * nums - Toggle Status of Nums lock and Echo to     *
                 213  *        Keyboard                                   *
                 214  *                                                   *
                 215  *****************************************************
                 216  
 03BE 16C1       217  nums    bset    pnumlck,status
                 218  
 03C0 B6C2       219          lda     LED
 03C2 A802       220          eor     #$02
 03C4 B7C2       221          sta     LED
 03C6 CC0479     222          jmp     LEDshow
                 223  
                 224  *****************************************************
                 225  *                                                   *
                 226  * scrl - Toggle Status of Scroll lock and Echo to   *
                 227  *        Keyboard                                   *
                 228  *                                                   *
                 229  *****************************************************
                 230  
 03C9 18C1       231  scrl    bset    pscrlck,status
                 232  


KEY05R2.ASM            Assembled with CASM   05/06/1998  18:19  PAGE 5



 03CB B6C2       233          lda     LED
 03CD A801       234          eor     #$01
 03CF B7C2       235          sta     LED
 03D1 CC0479     236          jmp     LEDshow
                 237  
                 238  *****************************************************
                 239  *                                                   *
                 240  * extend - An Extended Key has been Pressed         *
                 241  *                                                   *
                 242  *****************************************************
                 243  
 03D4 CD04DE     244  extend  jsr     Receive ;Get Next byte
 03D7 B6C0       245          lda     byte
                 246  
 03D9 A1F0       247          cmp     #$F0    ;An Extended Key Has been Released
 03DB 2603       248          bne     extend1
 03DD CC045F     249          jmp     rel_ext
                 250  
 03E0 A111       251  extend1 cmp     #$11    ;Right Alt Pressed
 03E2 2605       252          bne     extend2
 03E4 1AC1       253          bset    ralt,status
 03E6 CC058A     254          jmp     clrasc
                 255  
 03E9 A114       256  extend2 cmp     #$14    ;Right Ctrl Pressed
 03EB 2605       257          bne     extend3
 03ED 1EC1       258          bset    rctrl,status
 03EF CC058A     259          jmp     clrasc
                 260  
 03F2 A171       261  extend3 cmp     #$71    ;Delete
 03F4 2618       262          bne     extend4
 03F6 B6C1       263          lda     status

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -