MPASM 01.40 Released         KEYB_W95.ASM   8-11-1996  13:45:29         PAGE  1


LOC  OBJECT CODE     LINE SOURCE TEXT
  VALUE

                    00001         list    p=16c84, r=dec, n=0
                    00002 
  000000ED          00003 cmd_option      equ     0xed
  000000F3          00004 cmd_typematic   equ     0xf3
  000000F6          00005 cmd_default     equ     0xf6
  000000FE          00006 cmd_resend      equ     0xfe
  000000FF          00007 cmd_reset       equ     0xff
  00000078          00008 rst_warn        equ     0x78
  000000FD          00009 pwr_up          equ     0xfd    ;power up key stream
  000000FE          00010 t_pwr_up        equ     0xfe    ;terminate key stream
  FFFFFFFF          00011 no_send         equ     -1      ;do not send to amiga
                    00012 
                    00013         cblock  1
  00000001          00014         tmr0            ;timer
  00000002          00015         pc              ;lsb pc
  00000003          00016         status
  00000004          00017         fsr
  00000005          00018         pa              ;port a
  00000006          00019         pb              ;port b
  00000007          00020         dummy
  00000008          00021         eedata
  00000009          00022         eeadr
  0000000A          00023         pclath          ;msb pc latch
  0000000B          00024         intcon          ;interrupt control reg.
  0000000C          00025         int_addr        ;interrupt routine addr. 
  0000000D          00026         trans_addr      ;trans. routine addr. 
  0000000E          00027         _byte           ;byte to receive/transmit
  0000000F          00028         save_byte       ;resend byte
  00000010          00029         ami_byte        ;byte to transmit -> amiga
  00000011          00030         _temp           ;rotation temp storage
  00000012          00031         bit_cnt         ;bit counter
  00000013          00032         cnt_dwn         ;count down reg.
  00000014          00033         parity
  00000015          00034         at_s_ret        ;"at realsend routine" return addr.
  00000016          00035         x_flag          ;"xtra flag" reg.
  00000017          00036         leds            ;at-keyboard leds
  00000018          00037         l_byte          ;last received byte
  00000019          00038         e0_l_byte       ;last received 0xe0 byte
  0000001A          00039         tmr_ret         ;timer return addr.
  0000001B          00040         tmr_ret_pch     ;timer return pc high latch
  0000001C          00041         tmr_addr        ;delay wait routine addr.
  0000001D          00042         tmr_pch         ;delay wait routine pc high latch
  0000001E          00043         tmr_cntdwn      ;0xff cycles in wdt lookalike routine
  0000001F          00044         tmr_ms          ;remaining cycles in wdt lookalike routine
                    00045         endc
                    00046 
                    00047 #define carry           status,0
                    00048 #define zero            status,2
                    00049 #define rp0             status,5        ;page select
                    00050 #define rd              eecon1,0        ;read eeprom
                    00051 #define wr              eecon1,1        ;write eeprom
                    00052 #define wren            eecon1,2        ;write eeprom enable
                    00053 #define eeif            eecon1,4        ;eeprom write int
                    00054 #define rbif            intcon,0        ;pb change int. flag
                    00055 #define intf            intcon,1        ;pb,0 int. flag
                    00056 #define t0if            intcon,2        ;tmr0 int. flag
                    00057 #define rbie            intcon,3
                    00058 #define inte            intcon,4
                    00059 #define t0ie            intcon,5
                    00060 #define eeie            intcon,6
                    00061 #define gie             intcon,7        ;global interrupt enable
                    00062 #define pch_0           pclath,0
                    00063 #define pch_1           pclath,1
                    00064 
                    00065 #define at_clk_in       pb,0
                    00066 #define at_clk_out      pb,1
                    00067 #define ami_type        pb,3            ;resetmode switch
                    00068 #define at_dat_in       pb,6
                    00069 #define at_dat_out      pb,7
                    00070 #define ami_dat_out     pa,0
                    00071 #define ami_dat_in      pa,1
                    00072 #define _kbreset        pa,3
                    00073 #define ami_clk         pa,4            ;open drain
                    00074 #define par_chk         _byte,7         ;parity check bit
                    00075 #define _break          ami_byte,7      ;break bit
                    00076 #define c_lock          leds,2          ;caps lock on/off
                    00077 #define p_res           x_flag,0        ;pause pressed twice chk
                    00078 #define rw_ctrl         x_flag,1        ;reset warning chk bits
                    00079 #define rw_lalt         x_flag,2
                    00080 #define rw_ralt         x_flag,3
                    00081 #define rwarn           x_flag,4        ;reset warning main flag
                    00082 #define tmr_tst         x_flag,5        ;longdelay test bit
                    00083 #define s_break         x_flag,6        ;"special mission keys" break flag
                    00084 #define sync_cd         x_flag,7        ;sync countdown checkbit
                    00085 
0000                00086         org     0               ;reset vector
0000 30FF           00087         movlw   0xff            ;init ports
0001 0086           00088         movwf   pb
0002 0085           00089         movwf   pa
0003 29A5           00090         goto    init
                    00091 
0004                00092         org     4               ;interrupt vector
0004 188B           00093         btfsc   intf            ;pb,0
0005 2824           00094         goto    at_clk
                    00095 ;---------------------------------------------------
0006 110B           00096         bcf     t0if            ;watch dog timer lookalike routine
Message[305]: Using default destination of 1 (file).
0007 0B9E           00097         decfsz  tmr_cntdwn
0008 0009           00098         retfie                  ;65536us @ 4MHz
                    00099 
0009 1A96           00100         btfsc   tmr_tst
000A 2813           00101         goto    tmr_end
                    00102 
Message[305]: Using default destination of 1 (file).
000B 0A9E           00103         incf    tmr_cntdwn
000C 1696           00104         bsf     tmr_tst
000D 081F           00105         movf    tmr_ms,w
000E 0081           00106         movwf   tmr0
000F 081D           00107         movf    tmr_pch,w
0010 008A           00108         movwf   pclath
0011 081C           00109         movf    tmr_addr,w
0012 0009           00110         retfie
                    00111 
0013 308F           00112 tmr_end movlw   b'10001111'
Warning[224]: Use of this instruction is not recommended.
0014 0062           00113         option
0015 081B           00114         movf    tmr_ret_pch,w
0016 008A           00115         movwf   pclath
0017 081A           00116         movf    tmr_ret,w
0018 0008           00117         return
                    00118 
0019                00119 tmr_init
0019 009C           00120         movwf   tmr_addr        ;save wait routine addr.
001A 1296           00121         bcf     tmr_tst
001B 3087           00122         movlw   b'10000111'     ;assign presc. to tmr0, presc. 256
Warning[224]: Use of this instruction is not recommended.
001C 0062           00123         option
001D 0181           00124         clrf    tmr0
001E 30A0           00125         movlw   b'10100000'     ;gie,t0ie =enable
001F 008B           00126         movwf   intcon
0020 081D           00127         movf    tmr_pch,w
0021 008A           00128         movwf   pclath
0022 081C           00129         movf    tmr_addr,w
0023 0008           00130         return
                    00131 ;---------------------------------------------------
0024 108B           00132 at_clk  bcf     intf
0025 080C           00133         movf    int_addr,w      ;get correct int. routine
0026 0082           00134         movwf   pc
                    00135 ;---------------------------------------------------
0027 0082           00136 wait    movwf   pc
                    00137 
                    00138 ;========-at get key-===============================
0028                00139 at_get_key
0028 3030           00140         movlw   at_g0
0029 008C           00141         movwf   int_addr
002A 3082           00142         movlw   b'10000010'     ;set at_out
002B 0086           00143         movwf   pb
002C 3090           00144         movlw   b'10010000'     ;gie,inte=enable intf=clear
002D 008B           00145 at_g_st movwf   intcon
002E 3027           00146         movlw   wait
002F 2827           00147         goto    wait
                    00148 
0030 1B06           00149 at_g0   btfsc   at_dat_in       ;chk startbit =0
0031 2848           00150         goto    at_g_rint       ;if not ,return interrupt
                    00151 
0032 303A           00152         movlw   at_g1
0033 008C           00153         movwf   int_addr
0034 3040           00154         movlw   b'01000000'     ;parity chk on bit 6
0035 0094           00155         movwf   parity
0036 3008           00156         movlw   8               ;8 databits
0037 0092           00157         movwf   bit_cnt
0038 3027           00158         movlw   wait
0039 0009           00159         retfie
                    00160 
003A 0806           00161 at_g1   movf    pb,w
003B 0091           00162         movwf   _temp
Message[305]: Using default destination of 1 (file).
003C 0D91           00163         rlf     _temp
Message[305]: Using default destination of 1 (file).
003D 0D91           00164         rlf     _temp
Message[305]: Using default destination of 1 (file).
003E 0C8E           00165         rrf     _byte
003F 1B8E           00166         btfsc   par_chk         ;calc parity
Message[305]: Using default destination of 1 (file).
0040 0994           00167         comf    parity
Message[305]: Using default destination of 1 (file).
0041 0B92           00168         decfsz  bit_cnt         ;decrease bit counter
0042 2848           00169         goto    at_g_rint
                    00170 
0043 304A           00171         movlw   at_par_bit
0044 008C           00172         movwf   int_addr
0045 0814           00173         movf    parity,w
0046 3940           00174         andlw   b'01000000'     ;mask parity bit 6
0047 0094           00175         movwf   parity
0048                00176 at_g_rint
0048 3027           00177         movlw   wait
0049 0009           00178         retfie
                    00179 
004A                00180 at_par_bit
004A 0806           00181         movf    pb,w            ;check if received parity is correct
004B 3940           00182         andlw   b'01000000'     ;mask parity bit 6
Message[305]: Using default destination of 1 (file).
004C 0294           00183         subwf   parity
004D 1903           00184         btfsc   zero
004E 2854           00185         goto    at_stopbit
                    00186 
004F 3051           00187         movlw   at_g_rs         ;clean up stack, before resend
0050 0008           00188         return
                    00189 
0051 30FE           00190 at_g_rs movlw   cmd_resend      ;error, please resend
0052 205D           00191         call    at_send
0053 2828           00192         goto    at_get_key
                    00193 
0054                00194 at_stopbit
0054 3058           00195         movlw   at_g3
0055 008C           00196         movwf   int_addr
                    00197 
0056 3027           00198         movlw   wait
0057 0009           00199         retfie
                    00200 
0058 1C06           00201 at_g3   btfss   at_clk_in       ;wait clk hi
0059 2858           00202         goto    at_g3
005A 1086           00203         bcf     at_clk_out
005B 305C           00204         movlw   at_g4
005C 0008           00205 at_g4   return                  ;return at_get_key routine
                    00206 ;========-at send-==================================
005D 008F           00207 at_send movwf   save_byte       ;if resend
005E                00208 at_resend
005E 008E           00209         movwf   _byte
005F 018B           00210         clrf    intcon
0060 3008           00211         movlw   8
0061 0092           00212         movwf   bit_cnt
0062 3001           00213         movlw   1
0063 0094           00214         movwf   parity
0064 308D           00215         movlw   at_s
0065 008C           00216         movwf   int_addr
0066 3082           00217         movlw   b'10000010'     ;set at_out
0067 0086           00218         movwf   pb
                    00219 
0068 0806           00220 chk_bsy movf    pb,w            ;check if at= busy
0069 3941           00221         andlw   b'01000001'     ;mask at_in bits
006A 3C41           00222         sublw   b'01000001'
006B 1D03           00223         btfss   zero
006C 2868           00224         goto    chk_bsy
                    00225 
006D 3075           00226         movlw   at_s_parity     ;return addr.
006E 0095           00227         movwf   at_s_ret
006F 3090           00228         movlw   b'10010000'     ;gie=enable intf=clear inte=enable
0070 008B           00229         movwf   intcon
0071 018A           00230         clrf    pclath
0072 3027           00231         movlw   wait
0073 1386           00232         bcf     at_dat_out      ;tell the AT-keyb. we want to transmit
0074 2827           00233         goto    wait
                    00234 
0075                00235 at_s_parity                     ;parity, stop & ex bits send routine
0075 0814           00236         movf    parity,w
0076 3806           00237         iorlw   b'00000110'     ;set stop & ex-bit
0077 008E           00238         movwf   _byte
0078 307F           00239         movlw   at_s_ack        ;return addr.
0079 0095           00240         movwf   at_s_ret
007A 3003           00241         movlw   3
007B 0092           00242         movwf   bit_cnt
007C 3027           00243         movlw   wait
007D 178B           00244         bsf     gie             ;enable ints.
007E 2827           00245         goto    wait
                    00246 
007F                00247 at_s_ack                        ;at send ack. routine
007F 1C06           00248         btfss   at_clk_in       ;test clk=hi
0080 287F           00249         goto    at_s_ack
0081 30F6           00250         movlw   0xf6            ;short delay
0082 2100           00251         call    delay
0083 1086           00252         bcf     at_clk_out      ;ack.
0084 309C           00253         movlw   0x9c            ;ca:100us
0085 2100           00254         call    delay
0086 2028           00255         call    at_get_key      ;get ack. byte
0087 080E           00256         movf    _byte,w
0088 3CFE           00257         sublw   cmd_resend      ;if equal, we'll have to  resend
0089 1D03           00258         btfss   zero
008A 0008           00259         return
                    00260 
008B 080F           00261         movf    save_byte,w     ;prepare resend
008C 285E           00262         goto    at_resend
                    00263 
008D 0C0E           00264 at_s    rrf     _byte,w
Message[305]: Using default destination of 1 (file).
008E 0C8E           00265         rrf     _byte
008F 080E           00266         movf    _byte,w         ;real send routine
0090 3802           00267         iorlw   b'00000010'     ;set at_clk_out
0091 0086           00268         movwf   pb
0092 1B8E           00269         btfsc   par_chk
Message[305]: Using default destination of 1 (file).
0093 0994           00270         comf    parity
Message[305]: Using default destination of 1 (file).
0094 0B92           00271         decfsz  bit_cnt
0095 2898           00272         goto    at_s_r
0096 0815           00273         movf    at_s_ret,w
0097 0008           00274         return
                    00275 
0098 3027           00276 at_s_r  movlw   wait
0099 0009           00277         retfie
                    00278 
                    00279 ;===================================================
009A 1D86           00280 _reset  btfss   ami_type        ;check resetmode
009B 28B5           00281         goto    r_hardreset
                    00282 
009C 1796           00283         bsf     sync_cd
009D 300A           00284         movlw   10
009E 0093           00285         movwf   cnt_dwn
009F 3078           00286         movlw   rst_warn
00A0 2200           00287         call    ami_send
                    00288 
00A1 300A           00289         movlw   10
00A2 0093           00290         movwf   cnt_dwn
00A3 1616           00291         bsf     rwarn
00A4 3078           00292         movlw   rst_warn
00A5 2200           00293         call    ami_send
                    00294 
00A6 30B5           00295         movlw   r_hardreset
00A7 009A           00296         movwf   tmr_ret
00A8 019B           00297         clrf    tmr_ret_pch
00A9 3098           00298         movlw   152             ;10s
00AA 009E           00299         movwf   tmr_cntdwn
00AB 3069           00300         movlw   -151
00AC 009F           00301         movwf   tmr_ms
00AD 019D           00302         clrf    tmr_pch
00AE 30B0           00303         movlw   r_sync1         ;wait routine addr.
00AF 2019           00304         call    tmr_init
                    00305 
00B0 138B           00306 r_sync1 bcf     gie
00B1 1885           00307         btfsc   ami_dat_in      ;wait kdat hi. max 10s
00B2 28B5           00308         goto    r_hardreset
00B3 178B           00309         bsf     gie
00B4 0082           00310         movwf   pc
                    00311 
00B5                00312 r_hardreset
00B5 3001           00313         movlw   1
00B6 009B           00314         movwf   tmr_ret_pch
Warning[202]: Argument out of range.  Least significant bits used.
00B7 30C7           00315         movlw   i_1
00B8 009A           00316         movwf   tmr_ret
00B9 3007           00317         movlw   7               ;500ms
00BA 009E           00318         movwf   tmr_cntdwn
00BB 305F           00319         movlw   -161
00BC 009F           00320         movwf   tmr_ms
00BD 1205           00321         bcf     ami_clk         ;hard reset a2000
00BE 019D           00322         clrf    tmr_pch
00BF 1185           00323         bcf     _kbreset        ;hard reset a500/a1200
00C0 3027           00324         movlw   wait
00C1 2019           00325         call    tmr_init
00C2 2827           00326         goto    wait
                    00327 
                    00328 ;---------------------------------------------------
00C3 30B5           00329 r_sync  movlw   r_hardreset     ;wait kdat lo ack. 250ms
00C4 009A           00330         movwf   tmr_ret
00C5 019B           00331         clrf    tmr_ret_pch
00C6 3003           00332         movlw   3               ;3*65536us
00C7 009E           00333         movwf   tmr_cntdwn
00C8 302F           00334         movlw   -209            ;(2.5*10^5-3*65536)/256=209
00C9 009F           00335         movwf   tmr_ms
00CA 28E1           00336         goto    rw_s
                    00337 ;=======-AmiSync routine-===========================
00CB 1F96           00338 sync_up btfss   sync_cd
00CC 28D0           00339         goto    sync_up1
Message[305]: Using default destination of 1 (file).
00CD 0393           00340         decf    cnt_dwn
00CE 1903           00341         btfsc   zero
00CF 28B5           00342         goto    r_hardreset
                    00343 
00D0                00344 sync_up1
00D0 1005           00345         bcf     ami_dat_out     ;clock out 1:s
00D1 30EC           00346         movlw   -20
00D2 2100           00347         call    delay
00D3 1205           00348         bcf     ami_clk
00D4 30EC           00349         movlw   -20
00D5 2100           00350         call    delay
00D6 1605           00351         bsf     ami_clk
00D7 30EC           00352         movlw   -20
00D8 2100           00353         call    delay
00D9 1405           00354         bsf     ami_dat_out
                    00355 ;       goto    ami_sync
                    00356 
                    00357 ;---------------------------------------------------
00DA                00358 ami_sync
00DA 30CB           00359         movlw   sync_up
00DB 009A           00360         movwf   tmr_ret
00DC 019B           00361         clrf    tmr_ret_pch
00DD 3002           00362         movlw   2               ;2*65536us
00DE 009E           00363         movwf   tmr_cntdwn
00DF 30D1           00364         movlw   -47             ;remaining (1.43*10^5-2*65536)/256=47
00E0 009F           00365         movwf   tmr_ms
00E1 30FF           00366 rw_s    movlw   0xff            ;set all ami_outputs
00E2 0085           00367         movwf   pa
00E3 019D           00368         clrf    tmr_pch
00E4 30E6           00369         movlw   sync_1          ;wait routine addr.
00E5 2019           00370         call    tmr_init        ;init long delay
                    00371 
00E6 138B           00372 sync_1  bcf     gie
00E7 1C85           00373         btfss   ami_dat_in      ;wait lo ack. 143ms
00E8 28EB           00374         goto    sync_2
00E9 178B           00375         bsf     gie
00EA 0082           00376         movwf   pc
                    00377 
00EB 2013           00378 sync_2  call    tmr_end         ;deinit long delay
                    00379 
00EC 1A16           00380         btfsc   rwarn
00ED 0008           00381         return
                    00382 
00EE 1C85           00383 sync_3  btfss   ami_dat_in      ;wait ack. end
00EF 28EE           00384         goto    sync_3
00F0 0008           00385         return
                    00386 
0100                00387         org     0x100
                    00388 ;=======-Delay routine-=============================
0100 0081           00389 delay   movwf   tmr0
0101 308F           00390         movlw   b'10001111'
Warning[224]: Use of this instruction is not recommended.
0102 0062           00391         option
0103 128B           00392         bcf     t0ie            ;disable tmr int.
0104 110B           00393         bcf     t0if
0105 1D0B           00394 dly     btfss   t0if
0106 2905           00395         goto    dly
0107 0008           00396         return
                    00397 
                    00398 ;===================================================
0108                00399 translate
0108 140A           00400         bsf     pch_0
0109 108A           00401         bcf     pch_1
010A 080D           00402         movf    trans_addr,w
010B 0082           00403         movwf   pc
                    00404 ;---------------------------------------------------
010C 080E           00405 t_chk   movf    _byte,w
010D 3CE1           00406         sublw   0xe1            ;pause
010E 1903           00407         btfsc   zero
010F 2994           00408         goto    s_pause
                    00409 
0110 1016           00410         bcf     p_res           ;reset pause flag
                    00411 
0111 080E           00412         movf    _byte,w
0112 3CE0           00413         sublw   0xe0            ;arrowkeys etc.
0113 1903           00414         btfsc   zero
0114 2932           00415         goto    t_e0
                    00416 
0115 0199           00417         clrf    e0_l_byte
                    00418 
0116 080E           00419         movf    _byte,w
0117 3CF0           00420         sublw   0xf0            ;break code
0118 1903           00421         btfsc   zero
0119 2925           00422         goto    t_break
                    00423 
011A 1316           00424         bcf     s_break         ;reset "special mission keys" break flag
                    00425 
011B 0818           00426         movf    l_byte,w        ;get rid of repeating chars
011C 020E           00427         subwf   _byte,w
011D 1D03           00428         btfss   zero
011E 2922           00429         goto    not_eq
011F 30FF           00430         movlw   no_send
0120 0090           00431         movwf   ami_byte
0121 0008           00432         return
                    00433 
0122 080E           00434 not_eq  movf    _byte,w
0123 0098           00435         movwf   l_byte
0124 2B01           00436         goto    table
                    00437 
                    00438 ;---------------------------------------------------
0125 0198           00439 t_break clrf    l_byte
0126 1716           00440         bsf     s_break
Warning[202]: Argument out of range.  Least significant bits used.
0127 302C           00441         movlw   t_b1
0128 008D           00442         movwf   trans_addr
0129 30FF           00443         movlw   no_send
012A 0090           00444         movwf   ami_byte
012B 0008           00445         return
                    00446 
Warning[202]: Argument out of range.  Least significant bits used.
012C 300C           00447 t_b1    movlw   t_chk
012D 008D           00448         movwf   trans_addr
                    00449 
012E 080E           00450         movf    _byte,w
012F 2301           00451         call    table
0130 1790           00452         bsf     _break
0131 0008           00453         return
                    00454 ;---------------------------------------------------
0132 0198           00455 t_e0    clrf    l_byte
0133 1316           00456         bcf     s_break
Warning[202]: Argument out of range.  Least significant bits used.
0134 3039           00457         movlw   t_e01
0135 008D           00458         movwf   trans_addr
0136 30FF           00459         movlw   no_send
0137 0090           00460         movwf   ami_byte
0138 0008           00461         return
                    00462 
0139 080E           00463 t_e01   movf    _byte,w
013A 3CF0           00464         sublw   0xf0            ;break
013B 1903           00465         btfsc   zero
013C 2946           00466         goto    t_e0_b
                    00467 
Warning[202]: Argument out of range.  Least significant bits used.
013D 300C           00468         movlw   t_chk
013E 008D           00469         movwf   trans_addr
                    00470 
013F 0819           00471         movf    e0_l_byte,w     ;get rid of repeating chars
0140 020E           00472         subwf   _byte,w
0141 1903           00473         btfsc   zero
0142 0008           00474         return
                    00475 
0143 080E           00476         movf    _byte,w
0144 0099           00477         movwf   e0_l_byte
0145 2B00           00478         goto    e0_table
                    00479 
0146 1716           00480 t_e0_b  bsf     s_break
Warning[202]: Argument out of range.  Least significant bits used.
0147 304B           00481         movlw   t_e0_b1
0148 008D           00482         movwf   trans_addr
0149 0199           00483         clrf    e0_l_byte
014A 0008           00484         return
                    00485 
Warning[202]: Argument out of range.  Least significant bits used.
014B 300C           00486 t_e0_b1 movlw   t_chk
014C 008D           00487         movwf   trans_addr
                    00488 
014D 080E           00489         movf    _byte,w
014E 2300           00490         call    e0_table
014F 1790           00491         bsf     _break
0150 0008           00492         return
                    00493 
                    00494 ;=======-special mission keys-======================
                    00495 
0151 1B16           00496 s_home  btfsc   s_break
0152 2956           00497         goto    s_home_b
0153 3061           00498         movlw   0x61            ;right shift
0154 2200           00499         call    ami_send
0155 344F           00500         retlw   0x4f            ;arrow left
0156                00501 s_home_b
0156 30CF           00502         movlw   0x4f+0x80
0157 2200           00503         call    ami_send
0158 34E1           00504         retlw   0x61+0x80
                    00505 ;---------------------------------------------------
0159 1B16           00506 s_end   btfsc   s_break
015A 295E           00507         goto    s_end_b
015B 3061           00508         movlw   0x61            ;right shift
015C 2200           00509         call    ami_send
015D 344E           00510         retlw   0x4e            ;arrow right
015E 30CE           00511 s_end_b movlw   0x4e+0x80
015F 2200           00512         call    ami_send
0160 34E1           00513         retlw   0x61+0x80
                    00514 ;---------------------------------------------------
0161                00515 s_pageup
0161 1B16           00516         btfsc   s_break
0162 2966           00517         goto    s_pageup_b
0163 3061           00518         movlw   0x61            ;right shift
0164 2200           00519         call    ami_send
0165 344C           00520         retlw   0x4c            ;arrow up
0166                00521 s_pageup_b
0166 30CC           00522         movlw   0x4c+0x80       ;arrow up + break
0167 2200           00523         call    ami_send
0168 34E1           00524         retlw   0x61+0x80       ;right shift + break
                    00525 ;---------------------------------------------------
0169                00526 s_pagedown
0169 1B16           00527         btfsc   s_break
016A 296E           00528         goto    s_pagedown_b
016B 3061           00529         movlw   0x61            ;right shift
016C 2200           00530         call    ami_send
016D 344D           00531         retlw   0x4d            ;arrow down
016E                00532 s_pagedown_b
016E 30CD           00533         movlw   0x4d+0x80       ;arrow down + break
016F 2200           00534         call    ami_send
0170 34E1           00535         retlw   0x61+0x80       ;right shift + break
                    00536 ;---------------------------------------------------
0171                00537 s_c_screen
0171 1B16           00538         btfsc   s_break
0172 2976           00539         goto    s_c_screen_b
0173 3066           00540         movlw   0x66            ;left amiga
0174 2200           00541         call    ami_send
0175 3437           00542         retlw   0x37            ;m
0176                00543 s_c_screen_b
0176 30B7           00544         movlw   0x37+0x80       ;m + break
0177 2200           00545         call    ami_send
0178 34E6           00546         retlw   0x66+0x80       ;left amiga + break
                    00547 ;---------------------------------------------------
0179 1496           00548 s_ctrl  bsf     rw_ctrl
017A 1B16           00549         btfsc   s_break
017B 1096           00550         bcf     rw_ctrl
017C 3463           00551         retlw   0x63
                    00552 ;---------------------------------------------------
017D                00553 s_lamiga
017D 1516           00554         bsf     rw_lalt
017E 1B16           00555         btfsc   s_break
017F 1116           00556         bcf     rw_lalt
0180 3466           00557         retlw   0x66
                    00558 ;---------------------------------------------------
0181                00559 s_ramiga
0181 1596           00560         bsf     rw_ralt
0182 1B16           00561         btfsc   s_break
0183 1196           00562         bcf     rw_ralt
0184 3467           00563         retlw   0x67
                    00564 ;---------------------------------------------------
0185 1B16           00565 s_caps  btfsc   s_break
0186 34FF           00566         retlw   no_send
                    00567 
0187 018A           00568         clrf    pclath
0188 30ED           00569         movlw   cmd_option
0189 205D           00570         call    at_send
                    00571 
018A 1D17           00572         btfss   c_lock          ;chk capslock= on
018B 2990           00573         goto    s_c_on
                    00574 
018C 1117           00575         bcf     c_lock          ;capslock off
018D 0817           00576         movf    leds,w
018E 205D           00577         call    at_send
018F 34E2           00578         retlw   0x62+0x80       ;capslock + break
                    00579 
0190 1517           00580 s_c_on  bsf     c_lock          ;capslock on
0191 0817           00581         movf    leds,w
0192 205D           00582         call    at_send
0193 3462           00583         retlw   0x62            ;capslock
                    00584 ;---------------------------------------------------
0194 0198           00585 s_pause clrf    l_byte
0195 0199           00586         clrf    e0_l_byte
Warning[202]: Argument out of range.  Least significant bits used.
0196 309D           00587         movlw   s_p1
0197 008D           00588         movwf   trans_addr
0198 3007           00589         movlw   7               ;receive 7 more pause bytes,
0199 0093           00590         movwf   cnt_dwn         ;waste of time don't u think :-)
019A 30FF           00591         movlw   no_send
019B 0090           00592         movwf   ami_byte
019C 0008           00593         return
                    00594 
Message[305]: Using default destination of 1 (file).
019D 0B93           00595 s_p1    decfsz  cnt_dwn
019E 0008           00596         return
                    00597 
019F 1816           00598         btfsc   p_res           ;chk if pause pressed twice
01A0 289A           00599         goto    _reset          ;p_res = hi -> hardreset
                    00600 
01A1 1416           00601         bsf     p_res
Warning[202]: Argument out of range.  Least significant bits used.
01A2 300C           00602         movlw   t_chk
01A3 008D           00603         movwf   trans_addr
01A4 0008           00604         return
                    00605 
                    00606 ;===================================================
01A5 307D           00607 init    movlw   b'01111101'     ;0=output 1=input
Warning[224]: Use of this instruction is not recommended.
01A6 0066           00608         tris    pb
01A7 30E6           00609         movlw   b'11100110'
Warning[224]: Use of this instruction is not recommended.
01A8 0065           00610         tris    pa
01A9 308F           00611         movlw   b'10001111'     ;pull up pb disable,falling edge
Warning[224]: Use of this instruction is not recommended.
01AA 0062           00612         option                  ;assign prescaler to wdt, presc. 128
                    00613 
                    00614 ;---------------------------------------------------
01AB                00615 at_startup
01AB 3002           00616         movlw   2
01AC 009B           00617         movwf   tmr_ret_pch
Warning[202]: Argument out of range.  Least significant bits used.
01AD 30BA           00618         movlw   at_st_ret
01AE 009A           00619         movwf   tmr_ret
01AF 304C           00620         movlw   76              ;wdt 5s
01B0 009E           00621         movwf   tmr_cntdwn
01B1 30B5           00622         movlw   -75             ;(5*10^6-76*256²)/256=75
01B2 009F           00623         movwf   tmr_ms
01B3 019D           00624         clrf    tmr_pch
01B4 3027           00625         movlw   wait
01B5 2019           00626         call    tmr_init
                    00627 
01B6 3030           00628         movlw   at_g0
01B7 008C           00629         movwf   int_addr
01B8 30B0           00630         movlw   b'10110000'     ;gie,t0ie,inte=enable t0if,intf=reset
01B9 202D           00631         call    at_g_st
                    00632 
                    00633 ;---------------------------------------------------
01BA                00634 at_st_ret
01BA 1086           00635         bcf     at_clk_out
01BB 300F           00636         movlw   15              ;delay 1s
01BC 009E           00637         movwf   tmr_cntdwn
01BD 30BE           00638         movlw   -66             ;(10^6-15*256²)/256=66
01BE 009F           00639         movwf   tmr_ms
01BF 3001           00640         movlw   1
01C0 009B           00641         movwf   tmr_ret_pch
Warning[202]: Argument out of range.  Least significant bits used.
01C1 30C7           00642         movlw   i_1
01C2 009A           00643         movwf   tmr_ret
01C3 019D           00644         clrf    tmr_pch
01C4 3027           00645         movlw   wait
01C5 2019           00646         call    tmr_init
01C6 2827           00647         goto    wait
                    00648 ;---------------------------------------------------
                    00649 
01C7 0196           00650 i_1     clrf    x_flag          ;init "xtra flag" reg.
01C8 0198           00651         clrf    l_byte          ;init last byte chk
01C9 0199           00652         clrf    e0_l_byte
                    00653 
01CA 30FF           00654         movlw   cmd_reset       ;at reset
01CB 205D           00655         call    at_send
01CC 2028           00656         call    at_get_key      ;receive 0xaa= bat/selftest complete
                    00657 
01CD 30F6           00658         movlw   cmd_default
01CE 205D           00659         call    at_send
                    00660 
01CF 30ED           00661         movlw   cmd_option      ;at option cmd.
01D0 205D           00662         call    at_send
                    00663 
01D1 3004           00664         movlw   b'00000100'     ;capslock on
01D2 205D           00665         call    at_send
                    00666 
01D3 1796           00667         bsf     sync_cd         ;enable sync-countdown
01D4 3032           00668         movlw   50              ;if sync does not arrive within 50 retries,
01D5 0093           00669         movwf   cnt_dwn         ;then hard reset
01D6 20CB           00670         call    sync_up         ;synchronize with amiga
                    00671 
01D7 300A           00672         movlw   10
01D8 0093           00673         movwf   cnt_dwn
01D9 30FD           00674         movlw   pwr_up          ;power up key stream
01DA 2200           00675         call    ami_send
                    00676 
01DB 300A           00677         movlw   10
01DC 0093           00678         movwf   cnt_dwn
01DD 30FE           00679         movlw   t_pwr_up        ;terminate key stream
01DE 2200           00680         call    ami_send
01DF 1396           00681         bcf     sync_cd         ;disable sync-countdown
                    00682 
01E0 30ED           00683         movlw   cmd_option
01E1 205D           00684         call    at_send
                    00685 
01E2 0197           00686         clrf    leds            ;all leds off
01E3 0103           00687         clrw
01E4 205D           00688         call    at_send
                    00689 
Warning[202]: Argument out of range.  Least significant bits used.
01E5 300C           00690         movlw   t_chk
01E6 008D           00691         movwf   trans_addr      ;init trans_addr
                    00692 
                    00693 ;=======-Main Loop-=================================
01E7 018A           00694 loop    clrf    pclath
01E8 2028           00695         call    at_get_key
01E9 2108           00696         call    translate       ;atcode -> amigacode
                    00697 
01EA 0816           00698         movf    x_flag,w
01EB 390E           00699         andlw   b'00001110'
01EC 3C0E           00700         sublw   b'00001110'     ;chk reset warning
01ED 1903           00701         btfsc   zero
01EE 289A           00702         goto    _reset
                    00703 
01EF 0810           00704         movf    ami_byte,w
01F0 3CFF           00705         sublw   no_send         ;0xff = no amisend
01F1 1903           00706         btfsc   zero
01F2 29E7           00707         goto    loop
                    00708 
01F3 0810           00709         movf    ami_byte,w
01F4 2200           00710         call    ami_send
01F5 29E7           00711         goto    loop
                    00712 
0200                00713         org     0x200
                    00714 ;=======-Amiga Send-================================
0200                00715 ami_send
0200 018B           00716         clrf    intcon          ;disable all interrupts
0201 0090           00717         movwf   ami_byte
0202 0D10           00718         rlf     ami_byte,w      ;put bit #7 first
Message[305]: Using default destination of 1 (file).
0203 0D90           00719         rlf     ami_byte
Message[305]: Using default destination of 1 (file).
0204 0990           00720         comf    ami_byte        ;& invert, according to rkm hw-ref
0205 30FF           00721         movlw   0xff            ;set ami out
0206 0085           00722         movwf   pa
0207 3008           00723         movlw   8               ;8 bits to transmit
0208 0092           00724         movwf   bit_cnt
                    00725 
0209 0D10           00726 ami_out rlf     ami_byte,w
Message[305]: Using default destination of 1 (file).
020A 0D90           00727         rlf     ami_byte
020B 0810           00728         movf    ami_byte,w
020C 3818           00729         iorlw   b'00011000'     ;set ami_clk & _kbreset
020D 0085           00730         movwf   pa
020E 30EC           00731         movlw   -20             ;20us
020F 2100           00732         call    delay
0210 1205           00733         bcf     ami_clk
0211 30EC           00734         movlw   -20
0212 2100           00735         call    delay
0213 1605           00736         bsf     ami_clk
0214 30EC           00737         movlw   -20
0215 2100           00738         call    delay
Message[305]: Using default destination of 1 (file).
0216 0B92           00739         decfsz  bit_cnt
0217 2A09           00740         goto    ami_out
0218 1405           00741         bsf     ami_dat_out
                    00742 
0219 1A16           00743         btfsc   rwarn           ;chk if in resetmode
021A 28C3           00744         goto    r_sync          ;then wait 250ms for ack.
                    00745 
021B 28DA           00746         goto    ami_sync        ;wait 143ms for ack.
                    00747 
                    00748 
0300                00749         org     0x300
                    00750 ;======-key lookup table-===========================
0300                00751 e0_table
0300 3E70           00752         addlw   0x70    ;correct the keylookup-table to work with e0xx-codes
                    00753 
0301 2304           00754 table   call    tab
0302 0090           00755         movwf   ami_byte
0303 0008           00756         return
                    00757 
0304 140A           00758 tab     bsf     pch_0
0305 148A           00759         bsf     pch_1
Message[305]: Using default destination of 1 (file).
0306 0782           00760         addwf   pc
                    00761 
0307 34FF           00762         fill (retlw no_send),1
0308 3458           00763         retlw   0x58            ;f9     =0x01
0309 34FF           00764         fill (retlw no_send),1
030A 3454           00765         retlw   0x54            ;f5     =0x03
030B 3452           00766         retlw   0x52            ;f3     =0x04
030C 3450           00767         retlw   0x50            ;f1     =0x05
030D 3451           00768         retlw   0x51            ;f2     =0x06
030E 345B           00769         retlw   0x5b            ;f12    =0x07 -> ]}
030F 34FF           00770         fill (retlw no_send),1
0310 3459           00771         retlw   0x59            ;f10    =0x09
0311 3457           00772         retlw   0x57            ;f8     =0x0a
0312 3455           00773         retlw   0x55            ;f6     =0x0b
0313 3453           00774         retlw   0x53            ;f4     =0x0c
0314 3442           00775         retlw   0x42            ;tab    =0x0d
0315 3400           00776         retlw   0x00            ;`~     =0x0e
0316 34FF           00777         fill (retlw no_send),2
0318 3464           00778         retlw   0x64            ;l alt  =0x11
0319 3460           00779         retlw   0x60            ;l shift=0x12
031A 34FF           00780         fill (retlw no_send),1
031B 2979           00781         goto    s_ctrl          ;l ctrl =0x14
031C 3410           00782         retlw   0x10            ;Q      =0x15
031D 3401           00783         retlw   0x01            ;1      =0x16
031E 34FF           00784         fill (retlw no_send),3
0321 3431           00785         retlw   0x31            ;Z      =0x1a
0322 3421           00786         retlw   0x21            ;S      =0x1b
0323 3420           00787         retlw   0x20            ;A      =0x1c
0324 3411           00788         retlw   0x11            ;W      =0x1d
0325 3402           00789         retlw   0x02            ;2      =0x1e
0326 34FF           00790         fill (retlw no_send),2
0328 3433           00791         retlw   0x33            ;C      =0x21
0329 3432           00792         retlw   0x32            ;X      =0x22
032A 3422           00793         retlw   0x22            ;D      =0x23
032B 3412           00794         retlw   0x12            ;E      =0x24
032C 3404           00795         retlw   0x04            ;4      =0x25
032D 3403           00796         retlw   0x03            ;3      =0x26
032E 34FF           00797         fill (retlw no_send),2
0330 3440           00798         retlw   0x40            ;space  =0x29
0331 3434           00799         retlw   0x34            ;V      =0x2a
0332 3423           00800         retlw   0x23            ;F      =0x2b
0333 3414           00801         retlw   0x14            ;T      =0x2c
0334 3413           00802         retlw   0x13            ;R      =0x2d
0335 3405           00803         retlw   0x05            ;5      =0x2e
0336 34FF           00804         fill (retlw no_send),2
0338 3436           00805         retlw   0x36            ;N      =0x31
0339 3435           00806         retlw   0x35            ;B      =0x32
033A 3425           00807         retlw   0x25            ;H      =0x33
033B 3424           00808         retlw   0x24            ;G      =0x34
033C 3415           00809         retlw   0x15            ;Y      =0x35
033D 3406           00810         retlw   0x06            ;6      =0x36
033E 34FF           00811         fill (retlw no_send),3
0341 3437           00812         retlw   0x37            ;M      =0x3a
0342 3426           00813         retlw   0x26            ;J      =0x3b
0343 3416           00814         retlw   0x16            ;U      =0x3c
0344 3407           00815         retlw   0x07            ;7      =0x3d
0345 3408           00816         retlw   0x08            ;8      =0x3e
0346 34FF           00817         fill (retlw no_send),2
0348 3438           00818         retlw   0x38            ;;,     =0x41
0349 3427           00819         retlw   0x27            ;K      =0x42
034A 3417           00820         retlw   0x17            ;I      =0x43
034B 3418           00821         retlw   0x18            ;O      =0x44
034C 340A           00822         retlw   0x0a            ;0      =0x45
034D 3409           00823         retlw   0x09            ;9      =0x46
034E 34FF           00824         fill (retlw no_send),2
0350 3439           00825         retlw   0x39            ;:.     =0x49
0351 343A           00826         retlw   0x3a            ;_-     =0x4a
0352 3428           00827         retlw   0x28            ;L      =0x4b
0353 3429           00828         retlw   0x29            ;ö      =0x4c
0354 3419           00829         retlw   0x19            ;P      =0x4d
0355 340B           00830         retlw   0x0b            ;+      =0x4e
0356 34FF           00831         fill (retlw no_send),3
0359 342A           00832         retlw   0x2a            ;Ä      =0x52
035A 34FF           00833         fill (retlw no_send),1
035B 341A           00834         retlw   0x1a            ;Å      =0x54
035C 340C           00835         retlw   0x0c            ;=+     =0x55
035D 34FF           00836         fill (retlw no_send),2
035F 2985           00837         goto    s_caps          ;caps l.=0x58
0360 3461           00838         retlw   0x61            ;r shift=0x59
0361 3444           00839         retlw   0x44            ;return =0x5a
0362 341B           00840         retlw   0x1b            ;]      =0x5b
0363 34FF           00841         fill (retlw no_send),1
0364 342B           00842         retlw   0x2b            ;*'     =0x5d
0365 34FF           00843         fill (retlw no_send),3
0368 3430           00844         retlw   0x30            ;<>     =0x61
0369 34FF           00845         fill (retlw no_send),4
036D 3441           00846         retlw   0x41            ;bs     =0x66
036E 34FF           00847         fill (retlw no_send),2
0370 341D           00848         retlw   0x1d            ;kp1    =0x69
0371 34FF           00849         fill (retlw no_send),1
0372 342D           00850         retlw   0x2d            ;kp4    =0x6b
0373 343D           00851         retlw   0x3d            ;kp7    =0x6c
0374 34FF           00852         fill (retlw no_send),3
0377 340F           00853         retlw   0x0f            ;kp0    =0x70
0378 343C           00854         retlw   0x3c            ;kp.    =0x71
0379 341E           00855         retlw   0x1e            ;kp2    =0x72
037A 342E           00856         retlw   0x2e            ;kp5    =0x73
037B 342F           00857         retlw   0x2f            ;kp6    =0x74
037C 343E           00858         retlw   0x3e            ;kp8    =0x75
037D 3445           00859         retlw   0x45            ;esc    =0x76
037E 345A           00860         retlw   0x5a            ;numlock=0x77
037F 340D           00861         retlw   0x0d            ;f11    =0x78 -> \|
0380 345E           00862         retlw   0x5e            ;kp+    =0x79
0381 341F           00863         retlw   0x1f            ;kp3    =0x7a
0382 344A           00864         retlw   0x4a            ;kp-    =0x7b
0383 345D           00865         retlw   0x5d            ;kp*    =0x7c
0384 343F           00866         retlw   0x3f            ;kp9    =0x7d
0385 2985           00867         goto    s_caps          ;scrl l.=0x7e -> caps lock
0386 34FF           00868         fill (retlw no_send),2
0388 3465           00869         retlw   0x65            ;r alt  =0x11
0389 34FF           00870         retlw   no_send         ;l shift=0x12 (numlock x-byte +lshift)
038A 3456           00871         retlw   0x56            ;f7     =0x83
038B 2979           00872         goto    s_ctrl          ;r ctrl =0x14
038C 34FF           00873         fill (retlw no_send),0x1f-0x14-1
0396 297D           00874         goto    s_lamiga        ;win95  =0x1f
0397 34FF           00875         fill (retlw no_send),0x27-0x1f-1
039E 2981           00876         goto    s_ramiga        ;win95  =0x27
039F 34FF           00877         fill (retlw no_send),0x2f-0x27-1
03A6 2971           00878         goto    s_c_screen      ;menu95 =0x2f
03A7 34FF           00879         fill (retlw no_send),0x4a-0x2f-1
03C1 345C           00880         retlw   0x5c            ;kp/    =0x4a
03C2 34FF           00881         fill (retlw no_send),14
03D0 34FF           00882         retlw   no_send         ;r shift=0x59 (useless x-byte)
03D1 3443           00883         retlw   0x43            ;enter  =0x5a
03D2 34FF           00884         fill (retlw no_send),14
03E0 2959           00885         goto    s_end           ;end    =0x69
03E1 34FF           00886         fill (retlw no_send),1
03E2 344F           00887         retlw   0x4f            ;l arrow=0x6b
03E3 2951           00888         goto    s_home          ;home   =0x6c
03E4 34FF           00889         fill (retlw no_send),3
03E7 345F           00890         retlw   0x5f            ;insert =0x70 -> help
03E8 3446           00891         retlw   0x46            ;delete =0x71
03E9 344D           00892         retlw   0x4d            ;d arrow=0x72
03EA 34FF           00893         fill (retlw no_send),1
03EB 344E           00894         retlw   0x4e            ;r arrow=0x74
03EC 344C           00895         retlw   0x4c            ;u arrow=0x75
03ED 34FF           00896         fill (retlw no_send),4
03F1 2969           00897         goto    s_pagedown      ;pagedn =0x7a
03F2 34FF           00898         fill (retlw no_send),1
03F3 2971           00899         goto    s_c_screen      ;print s=0x7c
03F4 2961           00900         goto    s_pageup        ;pageup =0x7d
                    00901 
                    00902         end
MPASM 01.40 Released         KEYB_W95.ASM   8-11-1996  13:45:29         PAGE  2


SYMBOL TABLE
  LABEL                             VALUE 

__16C84                           00000001
_break                            ami_byte,7
_byte                             0000000E
_kbreset                          pa,3
_reset                            0000009A
_temp                             00000011
ami_byte                          00000010
ami_clk                           pa,4
ami_dat_in                        pa,1
ami_dat_out                       pa,0
ami_out                           00000209
ami_send                          00000200
ami_sync                          000000DA
ami_type                          pb,3
at_clk                            00000024
at_clk_in                         pb,0
at_clk_out                        pb,1
at_dat_in                         pb,6
at_dat_out                        pb,7
at_g0                             00000030
at_g1                             0000003A
at_g3                             00000058
at_g4                             0000005C
at_g_rint                         00000048
at_g_rs                           00000051
at_g_st                           0000002D
at_get_key                        00000028
at_par_bit                        0000004A
at_resend                         0000005E
at_s                              0000008D
at_s_ack                          0000007F
at_s_parity                       00000075
at_s_r                            00000098
at_s_ret                          00000015
at_send                           0000005D
at_st_ret                         000001BA
at_startup                        000001AB
at_stopbit                        00000054
bit_cnt                           00000012
c_lock                            leds,2
carry                             status,0
chk_bsy                           00000068
cmd_default                       000000F6
cmd_option                        000000ED
cmd_resend                        000000FE
cmd_reset                         000000FF
cmd_typematic                     000000F3
cnt_dwn                           00000013
delay                             00000100
dly                               00000105
dummy                             00000007
e0_l_byte                         00000019
e0_table                          00000300
eeadr                             00000009
eedata                            00000008
eeie                              intcon,6
eeif                              eecon1,4
fsr                               00000004
gie                               intcon,7
i_1                               000001C7
init                              000001A5
int_addr                          0000000C
intcon                            0000000B
inte                              intcon,4
intf                              intcon,1
l_byte                            00000018
leds                              00000017
loop                              000001E7
no_send                           FFFFFFFF
not_eq                            00000122
p_res                             x_flag,0
pa                                00000005
par_chk                           _byte,7
parity                            00000014
pb                                00000006
pc                                00000002
pch_0                             pclath,0
pch_1                             pclath,1
pclath                            0000000A
pwr_up                            000000FD
r_hardreset                       000000B5
r_sync                            000000C3
r_sync1                           000000B0
rbie                              intcon,3
rbif                              intcon,0
rd                                eecon1,0
rp0                               status,5
rst_warn                          00000078
rw_ctrl                           x_flag,1
rw_lalt                           x_flag,2
rw_ralt                           x_flag,3
rw_s                              000000E1
rwarn                             x_flag,4
s_break                           x_flag,6
s_c_on                            00000190
s_c_screen                        00000171
s_c_screen_b                      00000176
s_caps                            00000185
s_ctrl                            00000179
s_end                             00000159
s_end_b                           0000015E
s_home                            00000151
s_home_b                          00000156
s_lamiga                          0000017D
s_p1                              0000019D
s_pagedown                        00000169
s_pagedown_b                      0000016E
s_pageup                          00000161
s_pageup_b                        00000166
s_pause                           00000194
s_ramiga                          00000181
save_byte                         0000000F
status                            00000003
sync_1                            000000E6
sync_2                            000000EB
sync_3                            000000EE
sync_cd                           x_flag,7
sync_up                           000000CB
sync_up1                          000000D0
t0ie                              intcon,5
t0if                              intcon,2
t_b1                              0000012C
t_break                           00000125
t_chk                             0000010C
t_e0                              00000132
t_e01                             00000139
t_e0_b                            00000146
t_e0_b1                           0000014B
t_pwr_up                          000000FE
tab                               00000304
table                             00000301
tmr0                              00000001
tmr_addr                          0000001C
tmr_cntdwn                        0000001E
tmr_end                           00000013
tmr_init                          00000019
tmr_ms                            0000001F
tmr_pch                           0000001D
tmr_ret                           0000001A
tmr_ret_pch                       0000001B
tmr_tst                           x_flag,5
trans_addr                        0000000D
translate                         00000108
wait                              00000027
wr                                eecon1,1
wren                              eecon1,2
x_flag                            00000016
zero                              status,2


MEMORY USAGE MAP ('X' = Used,  '-' = Unused)

0000 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
0040 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
0080 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
00C0 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX X---------------
0100 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
0140 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
0180 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
01C0 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXX----------
0200 : XXXXXXXXXXXXXXXX XXXXXXXXXXXX---- ---------------- ----------------
0300 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
0340 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
0380 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
03C0 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXX-----------

All other memory blocks unused.

Program Memory Words Used:   760
Program Memory Words Free:   264


Errors   :     0
Warnings :    18 reported,     0 suppressed
Messages :    18 reported,     0 suppressed

