MPASM 01.21 Released LAPTIMER.ASM 12-1-1995 21:24:26 PAGE 1 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00001 ; 00002 ; laptimer.asm Video Insertionable LAP Timer 00003 ; for Microchip PIC16C57XT 00004 ; Copyright(C)1995 By H.Kashima 00005 ; 00006 00007 title laptimer 00008 processor 16c57 00009 radix dec 00010 list c = 128, n = 64 00011 00012 #include 00001 LIST 00002 ; P16C5X.INC Standard Header File, Version 2.02 Microchip Technology, Inc. 00143 LIST 00013 #include 00001 LIST 00002 ; P16C5XD.INC Defines Header File, Version 2.01 Microchip Technology, Inc. 00095 LIST 00014 00015 ; Version of current software, must be 4 char. 00016 ; 00017 #define VERSION_STR 0x21, 0x2d, 0x20, 0x0f 00018 00019 ; MCU clock (Hz) for 1/100sec calculate 00020 #define XTAL 3276800 ; for internal RTCC 00021 #define RTCLK XTAL / 4 ; for internal clock source 00022 ;#define XTAL 4000000 ; for external RTCC 00023 ;#define RTCLK 25600 ; for external source 00024 00025 ; prescaler value 00026 ; 00027 #define PSCR 256 00028 00029 ; 1/100 RTCC counts 00030 ; 00031 #define CSEC ( RTCLK / PSCR ) / 100 00032 ; 1/10 RTCC counts 00033 ; 00034 #define DSEC ( RTCLK / PSCR ) / 10 00035 ; lap limiter 00036 ; 00037 #define MAXLAP 24 00038 00039 00040 ; VDP locater 00041 ; 00042 #define LOC( x, y) 20 * y + x 00043 0008 00044 v_addr equ 0x08 ; VDP address 0009 00045 v_char equ 0x09 ; VDP data 000A 00046 v_leng equ 0x0a 00047 000B 00048 var1 equ 0x0b ; temporary registers 000C 00049 var2 equ 0x0c 000D 00050 var3 equ 0x0d 000E 00051 timeMSB equ 0x0e ; time value temporary 000F 00052 timeLSB equ 0x0f MPASM 01.21 Released LAPTIMER.ASM 12-1-1995 21:24:26 PAGE 2 laptimer LOC OBJECT CODE LINE SOURCE TEXT VALUE 00053 0010 00054 vdp_sr equ 0x10 ; shift temporary for setvdp 00055 0011 00056 putscnt equ 0x11 ; count temporary for PUT_S 00057 0010 00058 min equ 0x10 ; convertion temp for msec3time 0011 00059 sec equ 0x11 0012 00060 dsec equ 0x12 00061 0013 00062 prev_t equ 0x13 ; previous RTCC value 0014 00063 c_lap equ 0x14 ; current LAP number 0015 00064 f_lap equ 0x15 ; firstest LAP number 00065 0016 00066 lap_ptr equ 0x16 0017 00067 lap_pag equ 0x17 00068 0017 00069 div_cnt equ 0x17 ; divider counter 0017 00070 bit_cnt equ 0x17 ; shift temporary for setvdp 00071 0018 00072 AL equ 0x18 ; divide from, remainder 0019 00073 AH equ 0x19 001A 00074 BL equ 0x1a ; divide by 001B 00075 BH equ 0x1b 001C 00076 CL equ 0x1c ; quotient 001D 00077 CH equ 0x1d 00078 001E 00079 var4 equ 0x1e 001F 00080 var5 equ 0x1f 00081 00082 ; Put string to VDP 00083 ; 00084 PUT_S macro x, y, ptr 00085 00086 clrf putscnt 00087 movlw LOC( x, y) 00088 movwf v_addr 00089 movfw putscnt ; loop1 00090 XCALL ptr 00091 movwf v_char 00092 incf v_char, W 00093 btfsc STATUS, Z 00094 goto $ + 9 ; goto endm 00095 XCALL setvdp 00096 incf v_addr, F 00097 incf putscnt, F 00098 goto $ - 17 ; goto loop1 00099 00100 endm 00101 00102 00103 ; string clear in VDP 00104 ; strclr() v_addr, v_char, v_leng 00105 ; 00106 STRCLR macro 00107 00108 XCALL setvdp 00109 incf v_addr, F 00110 decfsz v_leng, F MPASM 01.21 Released LAPTIMER.ASM 12-1-1995 21:24:26 PAGE 3 laptimer LOC OBJECT CODE LINE SOURCE TEXT VALUE 00111 goto $ - 7 00112 00113 endm 00114 00115 00116 ; XCALL far call 00117 ; 00118 XCALL macro x_label 00119 00120 lcall x_label 00121 data 0x4a3 + 256 * ((($ + 2) >> 9) & 0x001) ; Set Page-bits 00122 data 0x4c3 + 256 * (( $ + 1) >> 10) 00123 00124 endm 00125 00126 00127 ; XGOTO far call 00128 ; 00129 XGOTO macro x_label 00130 00131 data 0x4a3 + 256 * ((x_label >> 9) & 0x001) ; Set Page-bits 00132 data 0x4c3 + 256 * (x_label >> 10) 00133 goto x_label 00134 00135 endm 00136 00137 00138 ; MCU PORT defines 00139 ; 00140 ; port B d0 LDI MSM6237 00141 ; d1 DA 00142 ; d2 CP 00143 ; d3 /CE 00144 ; d4 /RESET 00145 ; d5 none 00146 ; d6 none 00147 ; d7 BUZZER 00148 ; port C d0 IR IR Receiver 00149 ; d1 /STA Switch 00150 ; d2 /STP 00151 ; d3 /RST 00152 ; d4 /E1 Ext.IN 00153 ; d5 /E2 00154 ; d6 /E3 00155 ; d7 /VSYN /V.SYNC 0000 00156 B_LDI equ 0 0001 00157 B_DA equ 1 0002 00158 B_CP equ 2 0003 00159 B_CE equ 3 0004 00160 B_RES equ 4 0007 00161 B_BUZ equ 7 0000 00162 C_IR equ 0 0001 00163 C_STA equ 1 0002 00164 C_STP equ 2 0003 00165 C_RST equ 3 0004 00166 C_E1 equ 4 0005 00167 C_E2 equ 5 0006 00168 C_E3 equ 6 MPASM 01.21 Released LAPTIMER.ASM 12-1-1995 21:24:26 PAGE 4 laptimer LOC OBJECT CODE LINE SOURCE TEXT VALUE 0007 00169 C_VSYN equ 7 00170 00171 0000 00172 org 0x000 00173 ; 00174 ; MCU Initialize 0000 00175 start 0000 0C00 00176 movlw 0x00 0001 0005 00177 tris PORTA ; PORTA, PORTB 0002 0006 00178 tris PORTB ; is all output 0003 0CFF 00179 movlw 0xff 0004 0007 00180 tris PORTC ; PORTC is input 00181 0005 0C07 00182 movlw b'00000111' ; RTCC src is OSC / 4 0006 0002 00183 option ; with 1/256 prescaler 00184 00185 00186 ; startup 200ms beep 00187 ; 0007 05E6 00188 bsf PORTB, B_BUZ 0008 0C14 00189 movlw 20 0009 002C 00190 movwf var2 00191 000A 0061 00192 beep2 clrf TMR0 ; 10ms 000B 0C20 00193 beep1 movlw CSEC 000C 0081 00194 subwf TMR0, W 000D 0743 00195 btfss STATUS, Z 000E 0A0B 00196 goto beep1 00197 000F 02EC 00198 decfsz var2, F 0010 0A0A 00199 goto beep2 00200 0011 04E6 00201 bcf PORTB, B_BUZ 00202 00203 XCALL vinit ; VDP Initialize M Message[307]: Setting page bits. 0012 05A3 05C3 0900 M lcall vinit 0015 04A3 M data 0x4a3 + 256 * ((($ + 2) >> 9) & 0x001) ; Set Page-bits 0016 04C3 M data 0x4c3 + 256 * (( $ + 1) >> 10) M 00204 0017 0C20 00205 movlw 32 ; show random char 0018 002B 00206 movwf var1 0019 006C 00207 clrf var2 001A 0CB6 00208 rand2 movlw 182 001B 0028 00209 movwf v_addr 001C 020B 00210 movfw var1 001D 0E0F 00211 andlw b'00001111' 001E 0D90 00212 iorlw b'10010000' 001F 0029 00213 movwf v_char 00214 XCALL setvdp M Message[307]: Setting page bits. 0020 05A3 04C3 092A M lcall setvdp 0023 04A3 M data 0x4a3 + 256 * ((($ + 2) >> 9) & 0x001) ; Set Page-bits 0024 04C3 M data 0x4c3 + 256 * (( $ + 1) >> 10) M MPASM 01.21 Released LAPTIMER.ASM 12-1-1995 21:24:26 PAGE 5 laptimer LOC OBJECT CODE LINE SOURCE TEXT VALUE 0025 0CB4 00215 movlw 180 0026 002A 00216 movwf v_leng 0027 0068 00217 clrf v_addr 0028 020C 00218 rand1 movfw var2 0029 0029 00219 movwf v_char 00220 XCALL setvdp M Message[307]: Setting page bits. 002A 05A3 04C3 092A M lcall setvdp 002D 04A3 M data 0x4a3 + 256 * ((($ + 2) >> 9) & 0x001) ; Set Page-bits 002E 04C3 M data 0x4c3 + 256 * (( $ + 1) >> 10) M 002F 02A8 00221 incf v_addr, F 0030 02AC 00222 incf var2, F 0031 0747 00223 btfss PORTC, C_STP ; skip button 0032 0A3C 00224 goto rand3 0033 02EA 00225 decfsz v_leng, F 0034 0A28 00226 goto rand1 00227 XCALL wait50 M Message[307]: Setting page bits. 0035 04A3 05C3 09CC M lcall wait50 0038 04A3 M data 0x4a3 + 256 * ((($ + 2) >> 9) & 0x001) ; Set Page-bits 0039 04C3 M data 0x4c3 + 256 * (( $ + 1) >> 10) M 003A 02EB 00228 decfsz var1, F 003B 0A1A 00229 goto rand2 00230 003C 00231 rand3 00232 XCALL vinit ; VDP Initialize M Message[307]: Setting page bits. 003C 05A3 05C3 0900 M lcall vinit 003F 04A3 M data 0x4a3 + 256 * ((($ + 2) >> 9) & 0x001) ; Set Page-bits 0040 04C3 M data 0x4c3 + 256 * (( $ + 1) >> 10) M 00233 00234 ; TEST check 00235 ; 0041 0667 00236 btfsc PORTC, C_RST 0042 0A46 00237 goto notest 00238 XGOTO testsub M 0043 05A3 M data 0x4a3 + 256 * ((testsub >> 9) & 0x001) ; Set Page-bits 0044 05C3 M data 0x4c3 + 256 * (testsub >> 10) Message[306]: Crossing page boundary -- ensure page bits are set. 0045 0B29 M goto testsub M 00239 0046 00240 notest 00241 00242 ; 00243 ; Copyright Title 00244 00245 PUT_S 0, 0, title_s ; Print product title M 0046 0071 M clrf putscnt 0047 0C00 M movlw LOC( 0, 0) MPASM 01.21 Released LAPTIMER.ASM 12-1-1995 21:24:26 PAGE 6 laptimer LOC OBJECT CODE LINE SOURCE TEXT VALUE 0048 0028 M movwf v_addr 0049 0211 M movfw putscnt ; loop1 M XCALL title_s M Message[307]: Setting page bits. 004A 04A3 05C3 0900 M lcall title_s 004D 04A3 M data 0x4a3 + 256 * ((($ + 2) >> 9) & 0x001) ; Set Page-bits 004E 04C3 M data 0x4c3 + 256 * (( $ + 1) >> 10) M 004F 0029 M movwf v_char 0050 0289 M incf v_char, W 0051 0643 M btfsc STATUS, Z 0052 0A5B M goto $ + 9 ; goto endm M XCALL setvdp M Message[307]: Setting page bits. 0053 05A3 04C3 092A M lcall setvdp 0056 04A3 M data 0x4a3 + 256 * ((($ + 2) >> 9) & 0x001) ; Set Page-bits 0057 04C3 M data 0x4c3 + 256 * (( $ + 1) >> 10) M 0058 02A8 M incf v_addr, F 0059 02B1 M incf putscnt, F 005A 0A49 M goto $ - 17 ; goto loop1 M 00246 00247 ; 00248 ; wait 5 seconds 005B 00249 tit2 005B 0C05 00250 movlw 5 005C 002B 00251 movwf var1 00252 005D 0C14 00253 wait3 movlw 20 005E 002C 00254 movwf var2 00255 00256 wait2 XCALL wait50 ; wait 50ms M Message[307]: Setting page bits. 005F 04A3 05C3 09CC M lcall wait50 0062 04A3 M data 0x4a3 + 256 * ((($ + 2) >> 9) & 0x001) ; Set Page-bits 0063 04C3 M data 0x4c3 + 256 * (( $ + 1) >> 10) M 00257 0064 0747 00258 btfss PORTC, C_STP ; skip button 0065 0A6A 00259 goto rstart 00260 0066 02EC 00261 decfsz var2, F 0067 0A5F 00262 goto wait2 00263 0068 02EB 00264 decfsz var1, F 0069 0A5D 00265 goto wait3 00266 00267 ; Start MAIN Program 00268 ; 006A 00269 rstart 006A 0C18 00270 movlw MAXLAP ; clear all LAP data 006B 002B 00271 movwf var1 006C 00EB 00272 clrlap decf var1, F 006D 020B 00273 movfw var1 MPASM 01.21 Released LAPTIMER.ASM 12-1-1995 21:24:26 PAGE 7 laptimer LOC OBJECT CODE LINE SOURCE TEXT VALUE 00274 XCALL set_lap M Message[307]: Setting page bits. 006E 05A3 04C3 090E M lcall set_lap 0071 04A3 M data 0x4a3 + 256 * ((($ + 2) >> 9) & 0x001) ; Set Page-bits 0072 04C3 M data 0x4c3 + 256 * (( $ + 1) >> 10) M 0073 020B 00275 movfw var1 0074 0743 00276 btfss STATUS, Z 0075 0A6C 00277 goto clrlap 00278 0076 0CB4 00279 movlw 180 ; clear screen 0077 002A 00280 movwf v_leng 0078 0C0F 00281 movlw 0x0f 0079 0029 00282 movwf v_char 007A 0068 00283 clrf v_addr 00284 STRCLR M M XCALL setvdp M Message[307]: Setting page bits. 007B 05A3 04C3 092A M lcall setvdp 007E 04A3 M data 0x4a3 + 256 * ((($ + 2) >> 9) & 0x001) ; Set Page-bits 007F 04C3 M data 0x4c3 + 256 * (( $ + 1) >> 10) M 0080 02A8 M incf v_addr, F 0081 02EA M decfsz v_leng, F 0082 0A7B M goto $ - 7 M 00285 00286 PUT_S 5, 2, push_s ; print "PUSH START" M 0083 0071 M clrf putscnt 0084 0C2D M movlw LOC( 5, 2) 0085 0028 M movwf v_addr 0086 0211 M movfw putscnt ; loop1 M XCALL push_s M Message[307]: Setting page bits. 0087 04A3 05C3 09B6 M lcall push_s 008A 04A3 M data 0x4a3 + 256 * ((($ + 2) >> 9) & 0x001) ; Set Page-bits 008B 04C3 M data 0x4c3 + 256 * (( $ + 1) >> 10) M 008C 0029 M movwf v_char 008D 0289 M incf v_char, W 008E 0643 M btfsc STATUS, Z 008F 0A98 M goto $ + 9 ; goto endm M XCALL setvdp M Message[307]: Setting page bits. 0090 05A3 04C3 092A M lcall setvdp 0093 04A3 M data 0x4a3 + 256 * ((($ + 2) >> 9) & 0x001) ; Set Page-bits 0094 04C3 M data 0x4c3 + 256 * (( $ + 1) >> 10) M 0095 02A8 M incf v_addr, F 0096 02B1 M incf putscnt, F 0097 0A86 M goto $ - 17 ; goto loop1 M MPASM 01.21 Released LAPTIMER.ASM 12-1-1995 21:24:26 PAGE 8 laptimer LOC OBJECT CODE LINE SOURCE TEXT VALUE 00287 PUT_S 5, 6, time_s ; print "TOP ** --:" M 0098 0071 M clrf putscnt 0099 0C7D M movlw LOC( 5, 6) 009A 0028 M movwf v_addr 009B 0211 M movfw putscnt ; loop1 M XCALL time_s M Message[307]: Setting page bits. 009C 05A3 05C3 0924 M lcall time_s 009F 04A3 M data 0x4a3 + 256 * ((($ + 2) >> 9) & 0x001) ; Set Page-bits 00A0 04C3 M data 0x4c3 + 256 * (( $ + 1) >> 10) M 00A1 0029 M movwf v_char 00A2 0289 M incf v_char, W 00A3 0643 M btfsc STATUS, Z 00A4 0AAD M goto $ + 9 ; goto endm M XCALL setvdp M Message[307]: Setting page bits. 00A5 05A3 04C3 092A M lcall setvdp 00A8 04A3 M data 0x4a3 + 256 * ((($ + 2) >> 9) & 0x001) ; Set Page-bits 00A9 04C3 M data 0x4c3 + 256 * (( $ + 1) >> 10) M 00AA 02A8 M incf v_addr, F 00AB 02B1 M incf putscnt, F 00AC 0A9B M goto $ - 17 ; goto loop1 M 00288 00289 ; Waiting START button 00290 ; 00AD 0627 00291 w_sta btfsc PORTC, C_STA ; Pushed ? 00AE 0AAD 00292 goto w_sta 00293 00294 XCALL wait50 M Message[307]: Setting page bits. 00AF 04A3 05C3 09CC M lcall wait50 00B2 04A3 M data 0x4a3 + 256 * ((($ + 2) >> 9) & 0x001) ; Set Page-bits 00B3 04C3 M data 0x4c3 + 256 * (( $ + 1) >> 10) M 00295 00B4 0627 00296 btfsc PORTC, C_STA ; recheck button 00B5 0AAD 00297 goto w_sta 00298 00299 PUT_S 5, 2, rdy_s ; print "READY!" M 00B6 0071 M clrf putscnt 00B7 0C2D M movlw LOC( 5, 2) 00B8 0028 M movwf v_addr 00B9 0211 M movfw putscnt ; loop1 M XCALL rdy_s M Message[307]: Setting page bits. 00BA 05A3 05C3 0962 M lcall rdy_s 00BD 04A3 M data 0x4a3 + 256 * ((($ + 2) >> 9) & 0x001) ; Set Page-bits 00BE 04C3 M data 0x4c3 + 256 * (( $ + 1) >> 10) M MPASM 01.21 Released LAPTIMER.ASM 12-1-1995 21:24:26 PAGE 9 laptimer LOC OBJECT CODE LINE SOURCE TEXT VALUE 00BF 0029 M movwf v_char 00C0 0289 M incf v_char, W 00C1 0643 M btfsc STATUS, Z 00C2 0ACB M goto $ + 9 ; goto endm M XCALL setvdp M Message[307]: Setting page bits. 00C3 05A3 04C3 092A M lcall setvdp 00C6 04A3 M data 0x4a3 + 256 * ((($ + 2) >> 9) & 0x001) ; Set Page-bits 00C7 04C3 M data 0x4c3 + 256 * (( $ + 1) >> 10) M 00C8 02A8 M incf v_addr, F 00C9 02B1 M incf putscnt, F 00CA 0AB9 M goto $ - 17 ; goto loop1 M 00300 00CB 0727 00301 w_sta2 btfss PORTC, C_STA ; released ? 00CC 0ACB 00302 goto w_sta2 00303 00304 XCALL wait50 M Message[307]: Setting page bits. 00CD 04A3 05C3 09CC M lcall wait50 00D0 04A3 M data 0x4a3 + 256 * ((($ + 2) >> 9) & 0x001) ; Set Page-bits 00D1 04C3 M data 0x4c3 + 256 * (( $ + 1) >> 10) M 00305 00D2 0727 00306 btfss PORTC, C_STA ; recheck button released 00D3 0ACB 00307 goto w_sta2 00308 00309 00D4 0707 00310 w_ir1 btfss PORTC, C_IR ; waiting first IR 00D5 0AD8 00311 goto w_ir2 00D6 0627 00312 btfsc PORTC, C_STA 00D7 0AD4 00313 goto w_ir1 00314 00D8 00315 w_ir2 00D8 0C14 00316 movlw 20 ; set length 00D9 002A 00317 movwf v_leng 00DA 0C28 00318 movlw LOC(0, 2) ; clear "READY" 00DB 0028 00319 movwf v_addr 00DC 0C0F 00320 movlw 0x0f 00DD 0029 00321 movwf v_char 00322 STRCLR M M XCALL setvdp M Message[307]: Setting page bits. 00DE 05A3 04C3 092A M lcall setvdp 00E1 04A3 M data 0x4a3 + 256 * ((($ + 2) >> 9) & 0x001) ; Set Page-bits 00E2 04C3 M data 0x4c3 + 256 * (( $ + 1) >> 10) M 00E3 02A8 M incf v_addr, F 00E4 02EA M decfsz v_leng, F 00E5 0ADE M goto $ - 7 M 00323 00324 ; LAP COUNTING MPASM 01.21 Released LAPTIMER.ASM 12-1-1995 21:24:26 PAGE 10 laptimer LOC OBJECT CODE LINE SOURCE TEXT VALUE 00325 ; 00E6 0061 00326 clrf TMR0 00E7 0073 00327 clrf prev_t 00E8 0074 00328 clrf c_lap ; reset current LAP 00E9 0075 00329 clrf f_lap ; reset firstest LAP 00EA 0CFF 00330 movlw 0xff 00EB 003E 00331 movwf var4 ; firstest timeMSB 00EC 003F 00332 movwf var5 ; firstest timeLSB 00333 00ED 00334 laploop 00335 XCALL vinit3 ; rehash VDP(no screen clear) M Message[307]: Setting page bits. 00ED 05A3 05C3 0908 M lcall vinit3 00F0 04A3 M data 0x4a3 + 256 * ((($ + 2) >> 9) & 0x001) ; Set Page-bits 00F1 04C3 M data 0x4c3 + 256 * (( $ + 1) >> 10) M 00F2 006F 00336 clrf timeLSB ; clear current LAP time 00F3 006E 00337 clrf timeMSB 00F4 006C 00338 clrf var2 ; beep, messege flag 00339 00F5 05E6 00340 bsf PORTB, B_BUZ ; buzzer on 00341 00342 PUT_S 7, 0, lap_s ; put LAP number to center M 00F6 0071 M clrf putscnt 00F7 0C07 M movlw LOC( 7, 0) 00F8 0028 M movwf v_addr 00F9 0211 M movfw putscnt ; loop1 M XCALL lap_s M Message[307]: Setting page bits. 00FA 05A3 05C3 095D M lcall lap_s 00FD 04A3 M data 0x4a3 + 256 * ((($ + 2) >> 9) & 0x001) ; Set Page-bits 00FE 04C3 M data 0x4c3 + 256 * (( $ + 1) >> 10) M 00FF 0029 M movwf v_char 0100 0289 M incf v_char, W 0101 0643 M btfsc STATUS, Z 0102 0B0B M goto $ + 9 ; goto endm M XCALL setvdp M Message[307]: Setting page bits. 0103 05A3 04C3 092A M lcall setvdp 0106 04A3 M data 0x4a3 + 256 * ((($ + 2) >> 9) & 0x001) ; Set Page-bits 0107 04C3 M data 0x4c3 + 256 * (( $ + 1) >> 10) M 0108 02A8 M incf v_addr, F 0109 02B1 M incf putscnt, F 010A 0AF9 M goto $ - 17 ; goto loop1 M 00343 010B 0294 00344 incf c_lap, W ; make ascii 00345 XCALL itoa M Message[307]: Setting page bits. 010C 05A3 04C3 0956 M lcall itoa 010F 04A3 M data 0x4a3 + 256 * ((($ + 2) >> 9) & 0x001) ; Set Page-bits MPASM 01.21 Released LAPTIMER.ASM 12-1-1995 21:24:26 PAGE 11 laptimer LOC OBJECT CODE LINE SOURCE TEXT VALUE 0110 04C3 M data 0x4c3 + 256 * (( $ + 1) >> 10) M 00346 0111 0C0B 00347 movlw LOC( 11, 0) 0112 0028 00348 movwf v_addr 0113 021D 00349 movfw CH 0114 0029 00350 movwf v_char 00351 XCALL setvdp M Message[307]: Setting page bits. 0115 05A3 04C3 092A M lcall setvdp 0118 04A3 M data 0x4a3 + 256 * ((($ + 2) >> 9) & 0x001) ; Set Page-bits 0119 04C3 M data 0x4c3 + 256 * (( $ + 1) >> 10) M 011A 02A8 00352 incf v_addr, F 011B 021C 00353 movfw CL 011C 0029 00354 movwf v_char 00355 XCALL setvdp M Message[307]: Setting page bits. 011D 05A3 04C3 092A M lcall setvdp 0120 04A3 M data 0x4a3 + 256 * ((($ + 2) >> 9) & 0x001) ; Set Page-bits 0121 04C3 M data 0x4c3 + 256 * (( $ + 1) >> 10) M 00356 0122 0CA9 00357 movlw LOC( 9, 8) ; put LAP number to lower 0123 0028 00358 movwf v_addr 0124 05DD 00359 bsf CH, 6 ; make blink 0125 021D 00360 movfw CH 0126 0029 00361 movwf v_char 00362 XCALL setvdp M Message[307]: Setting page bits. 0127 05A3 04C3 092A M lcall setvdp 012A 04A3 M data 0x4a3 + 256 * ((($ + 2) >> 9) & 0x001) ; Set Page-bits 012B 04C3 M data 0x4c3 + 256 * (( $ + 1) >> 10) M 012C 02A8 00363 incf v_addr, F 012D 05DC 00364 bsf CL, 6 ; make blink 012E 021C 00365 movfw CL 012F 0029 00366 movwf v_char 00367 XCALL setvdp M Message[307]: Setting page bits. 0130 05A3 04C3 092A M lcall setvdp 0133 04A3 M data 0x4a3 + 256 * ((($ + 2) >> 9) & 0x001) ; Set Page-bits 0134 04C3 M data 0x4c3 + 256 * (( $ + 1) >> 10) M 00368 0135 00369 timloop 00370 00371 ; wait 10ms and add delta 00372 ; 0135 0213 00373 w10ms movfw prev_t 0136 0081 00374 subwf TMR0, W 0137 002B 00375 movwf var1 ; var1 = TMR0 - prev_t 0138 0C20 00376 movlw CSEC 0139 008B 00377 subwf var1, W ; if ( var1 < (CSEC)) goto w10ms MPASM 01.21 Released LAPTIMER.ASM 12-1-1995 21:24:26 PAGE 12 laptimer LOC OBJECT CODE LINE SOURCE TEXT VALUE 013A 0703 00378 btfss STATUS, C 013B 0B35 00379 goto w10ms 00380 013C 0201 00381 movfw TMR0 ; backup TMR0 to prev_t 013D 0033 00382 movwf prev_t 00383 013E 032B 00384 rrf var1, F ; W = var1 / 32 013F 032B 00385 rrf var1, F 0140 032B 00386 rrf var1, F 0141 032B 00387 rrf var1, F 0142 030B 00388 rrf var1, W 0143 0E07 00389 andlw b'00000111' 00390 0144 01EF 00391 addwf timeLSB, F ; add delta to timeLSB 0145 0703 00392 btfss STATUS, C 0146 0B4D 00393 goto valid 0147 02AE 00394 incf timeMSB, F 0148 0743 00395 btfss STATUS, Z ; time10:55:35 limiter 0149 0B4D 00396 goto valid 014A 0CFF 00397 movlw 0xff 014B 002F 00398 movwf timeLSB 014C 002E 00399 movwf timeMSB 00400 014D 0CAC 00401 valid movlw LOC( 12, 8) ; print TIME 014E 0028 00402 movwf v_addr 00403 XCALL msec2time M Message[307]: Setting page bits. 014F 05A3 04C3 0964 M lcall msec2time 0152 04A3 M data 0x4a3 + 256 * ((($ + 2) >> 9) & 0x001) ; Set Page-bits 0153 04C3 M data 0x4c3 + 256 * (( $ + 1) >> 10) M 00404 0154 020E 00405 movfw timeMSB ; if( timeMSB != 0 ) goto do_chk 0155 0743 00406 btfss STATUS, Z 0156 0B75 00407 goto do_chk 00408 0157 060C 00409 btfsc var2, 0 ; beep flag check 0158 0B5F 00410 goto mesclr 0159 0C14 00411 movlw 20 ; if( timeLSB > 20 ) buzzer_off 015A 008F 00412 subwf timeLSB, W 015B 0703 00413 btfss STATUS, C 015C 0B35 00414 goto timloop 015D 04E6 00415 bcf PORTB, B_BUZ 015E 050C 00416 bsf var2, 0 ; beep cleared 00417 015F 062C 00418 mesclr btfsc var2, 1 ; LAP message flag check 0160 0B75 00419 goto do_chk 0161 0CC8 00420 movlw 200 ; if( timeLSB > 200 ) goto timloop 0162 008F 00421 subwf timeLSB, W 0163 0703 00422 btfss STATUS, C 0164 0B35 00423 goto timloop 00424 0165 0C3C 00425 movlw 60 ; clear "LAP nn" 0166 002A 00426 movwf v_leng 0167 0C00 00427 movlw LOC( 0, 0) 0168 0028 00428 movwf v_addr 0169 0C0F 00429 movlw 0x0f MPASM 01.21 Released LAPTIMER.ASM 12-1-1995 21:24:26 PAGE 13 laptimer LOC OBJECT CODE LINE SOURCE TEXT VALUE 016A 0029 00430 movwf v_char 00431 STRCLR M M XCALL setvdp M Message[307]: Setting page bits. 016B 05A3 04C3 092A M lcall setvdp 016E 04A3 M data 0x4a3 + 256 * ((($ + 2) >> 9) & 0x001) ; Set Page-bits 016F 04C3 M data 0x4c3 + 256 * (( $ + 1) >> 10) M 0170 02A8 M incf v_addr, F 0171 02EA M decfsz v_leng, F 0172 0B6B M goto $ - 7 M 0173 052C 00432 bsf var2, 1 ; LAP message cleared 00433 0174 0B75 00434 goto do_chk 00435 0175 00436 do_chk 0175 0727 00437 btfss PORTC, C_STA ; check START button 0176 0B7B 00438 goto tim_end 00439 0177 0747 00440 btfss PORTC, C_STP ; check STOP button 0178 0BE7 00441 goto c_break 00442 0179 0607 00443 btfsc PORTC, C_IR ; check IR 017A 0B35 00444 goto timloop 00445 017B 00446 tim_end 017B 0214 00447 movfw c_lap 00448 XCALL set_lap ; store LAP datas M Message[307]: Setting page bits. 017C 05A3 04C3 090E M lcall set_lap 017F 04A3 M data 0x4a3 + 256 * ((($ + 2) >> 9) & 0x001) ; Set Page-bits 0180 04C3 M data 0x4c3 + 256 * (( $ + 1) >> 10) M 00449 0181 0294 00450 incf c_lap, W ; make ascii 00451 XCALL itoa M Message[307]: Setting page bits. 0182 05A3 04C3 0956 M lcall itoa 0185 04A3 M data 0x4a3 + 256 * ((($ + 2) >> 9) & 0x001) ; Set Page-bits 0186 04C3 M data 0x4c3 + 256 * (( $ + 1) >> 10) M 00452 0187 0C95 00453 movlw LOC( 9, 7) 0188 0028 00454 movwf v_addr 0189 021D 00455 movfw CH 018A 0029 00456 movwf v_char 00457 XCALL setvdp M Message[307]: Setting page bits. 018B 05A3 04C3 092A M lcall setvdp 018E 04A3 M data 0x4a3 + 256 * ((($ + 2) >> 9) & 0x001) ; Set Page-bits 018F 04C3 M data 0x4c3 + 256 * (( $ + 1) >> 10) M MPASM 01.21 Released LAPTIMER.ASM 12-1-1995 21:24:26 PAGE 14 laptimer LOC OBJECT CODE LINE SOURCE TEXT VALUE 0190 02A8 00458 incf v_addr, F 0191 021C 00459 movfw CL 0192 0029 00460 movwf v_char 00461 XCALL setvdp M Message[307]: Setting page bits. 0193 05A3 04C3 092A M lcall setvdp 0196 04A3 M data 0x4a3 + 256 * ((($ + 2) >> 9) & 0x001) ; Set Page-bits 0197 04C3 M data 0x4c3 + 256 * (( $ + 1) >> 10) M 00462 0198 0C98 00463 movlw LOC( 12, 7) ; print LAPTIME to tail 0199 0028 00464 movwf v_addr 00465 XCALL msec2time M Message[307]: Setting page bits. 019A 05A3 04C3 0964 M lcall msec2time 019D 04A3 M data 0x4a3 + 256 * ((($ + 2) >> 9) & 0x001) ; Set Page-bits 019E 04C3 M data 0x4c3 + 256 * (( $ + 1) >> 10) M 00466 019F 021E 00467 movfw var4 ; if( var4 > timeMSB ) goto flap3 01A0 008E 00468 subwf timeMSB, W 01A1 0703 00469 btfss STATUS, C 01A2 0BA9 00470 goto flap3 00471 01A3 0743 00472 btfss STATUS, Z ; if( var4 != timeMSB) goto flap4 01A4 0BE2 00473 goto flap4 00474 01A5 020F 00475 movfw timeLSB ; if( var5 < timeLSB ) goto flap4 01A6 009F 00476 subwf var5, W 01A7 0703 00477 btfss STATUS, C 01A8 0BE2 00478 goto flap4 00479 01A9 0214 00480 flap3 movfw c_lap ; made fastest LAP 01AA 0035 00481 movwf f_lap 01AB 020E 00482 movfw timeMSB 01AC 003E 00483 movwf var4 01AD 020F 00484 movfw timeLSB 01AE 003F 00485 movwf var5 00486 00487 PUT_S 3, 2, flap_s ; print "FIRSTEST.." M 01AF 0071 M clrf putscnt 01B0 0C2B M movlw LOC( 3, 2) 01B1 0028 M movwf v_addr 01B2 0211 M movfw putscnt ; loop1 M XCALL flap_s M Message[307]: Setting page bits. 01B3 05A3 05C3 096E M lcall flap_s 01B6 04A3 M data 0x4a3 + 256 * ((($ + 2) >> 9) & 0x001) ; Set Page-bits 01B7 04C3 M data 0x4c3 + 256 * (( $ + 1) >> 10) M 01B8 0029 M movwf v_char 01B9 0289 M incf v_char, W 01BA 0643 M btfsc STATUS, Z 01BB 0BC4 M goto $ + 9 ; goto endm MPASM 01.21 Released LAPTIMER.ASM 12-1-1995 21:24:26 PAGE 15 laptimer LOC OBJECT CODE LINE SOURCE TEXT VALUE M XCALL setvdp M Message[307]: Setting page bits. 01BC 05A3 04C3 092A M lcall setvdp 01BF 04A3 M data 0x4a3 + 256 * ((($ + 2) >> 9) & 0x001) ; Set Page-bits 01C0 04C3 M data 0x4c3 + 256 * (( $ + 1) >> 10) M 01C1 02A8 M incf v_addr, F 01C2 02B1 M incf putscnt, F 01C3 0BB2 M goto $ - 17 ; goto loop1 M 00488 01C4 0294 00489 incf c_lap, W 00490 XCALL itoa M Message[307]: Setting page bits. 01C5 05A3 04C3 0956 M lcall itoa 01C8 04A3 M data 0x4a3 + 256 * ((($ + 2) >> 9) & 0x001) ; Set Page-bits 01C9 04C3 M data 0x4c3 + 256 * (( $ + 1) >> 10) M 01CA 0C81 00491 movlw LOC( 9, 6) ; put TOP number to lower 01CB 0028 00492 movwf v_addr 01CC 021D 00493 movfw CH 01CD 0029 00494 movwf v_char 00495 XCALL setvdp M Message[307]: Setting page bits. 01CE 05A3 04C3 092A M lcall setvdp 01D1 04A3 M data 0x4a3 + 256 * ((($ + 2) >> 9) & 0x001) ; Set Page-bits 01D2 04C3 M data 0x4c3 + 256 * (( $ + 1) >> 10) M 01D3 02A8 00496 incf v_addr, F 01D4 021C 00497 movfw CL 01D5 0029 00498 movwf v_char 00499 XCALL setvdp M Message[307]: Setting page bits. 01D6 05A3 04C3 092A M lcall setvdp 01D9 04A3 M data 0x4a3 + 256 * ((($ + 2) >> 9) & 0x001) ; Set Page-bits 01DA 04C3 M data 0x4c3 + 256 * (( $ + 1) >> 10) M 00500 01DB 0C84 00501 movlw LOC( 12, 6) ; print FIRST TIME to tail 01DC 0028 00502 movwf v_addr 00503 XCALL msec2time M Message[307]: Setting page bits. 01DD 05A3 04C3 0964 M lcall msec2time 01E0 04A3 M data 0x4a3 + 256 * ((($ + 2) >> 9) & 0x001) ; Set Page-bits 01E1 04C3 M data 0x4c3 + 256 * (( $ + 1) >> 10) M 00504 01E2 02B4 00505 flap4 incf c_lap, F 01E3 0C18 00506 movlw MAXLAP 01E4 0094 00507 subwf c_lap, W 01E5 0743 00508 btfss STATUS, Z ; if( c_lap == MAXLAP ) break 01E6 0AED 00509 goto laploop 00510 MPASM 01.21 Released LAPTIMER.ASM 12-1-1995 21:24:26 PAGE 16 laptimer LOC OBJECT CODE LINE SOURCE TEXT VALUE 01E7 00511 c_break ; break LAP counting 01E7 00F4 00512 decf c_lap, F ; current c_lap are invalid 00513 XCALL vinit3 ; rehash VDP(no screen clear) M Message[307]: Setting page bits. 01E8 05A3 05C3 0908 M lcall vinit3 01EB 04A3 M data 0x4a3 + 256 * ((($ + 2) >> 9) & 0x001) ; Set Page-bits 01EC 04C3 M data 0x4c3 + 256 * (( $ + 1) >> 10) M 00514 XGOTO show_lap M 01ED 05A3 M data 0x4a3 + 256 * ((show_lap >> 9) & 0x001) ; Set Page-bits 01EE 05C3 M data 0x4c3 + 256 * (show_lap >> 10) Message[306]: Crossing page boundary -- ensure page bits are set. 01EF 0AB7 M goto show_lap M 00515 00516 0300 00517 org 0x300 00518 00519 ; Preview LAP contents 00520 ; 0300 00521 prevlap 0300 007E 00522 clrf var4 ; clear button mask 0301 006C 00523 clrf var2 ; loop temporary 0302 0C2C 00524 movlw LOC( 4, 2) ; list location 0303 002D 00525 movwf var3 00526 0304 020D 00527 list1 movfw var3 ; Print LAP num 0305 0028 00528 movwf v_addr 0306 028B 00529 incf var1, W ; W = var1 + var2 + 1 0307 01CC 00530 addwf var2, W 00531 XCALL itoa M Message[307]: Setting page bits. 0308 05A3 04C3 0956 M lcall itoa 030B 05A3 M data 0x4a3 + 256 * ((($ + 2) >> 9) & 0x001) ; Set Page-bits 030C 04C3 M data 0x4c3 + 256 * (( $ + 1) >> 10) M 030D 021D 00532 movfw CH 030E 0029 00533 movwf v_char 00534 XCALL setvdp M Message[307]: Setting page bits. 030F 05A3 04C3 092A M lcall setvdp 0312 05A3 M data 0x4a3 + 256 * ((($ + 2) >> 9) & 0x001) ; Set Page-bits 0313 04C3 M data 0x4c3 + 256 * (( $ + 1) >> 10) M 0314 02A8 00535 incf v_addr, F 0315 021C 00536 movfw CL 0316 0029 00537 movwf v_char 00538 XCALL setvdp M Message[307]: Setting page bits. 0317 05A3 04C3 092A M lcall setvdp 031A 05A3 M data 0x4a3 + 256 * ((($ + 2) >> 9) & 0x001) ; Set Page-bits 031B 04C3 M data 0x4c3 + 256 * (( $ + 1) >> 10) M MPASM 01.21 Released LAPTIMER.ASM 12-1-1995 21:24:26 PAGE 17 laptimer LOC OBJECT CODE LINE SOURCE TEXT VALUE 031C 02A8 00539 incf v_addr, F 00540 031D 020B 00541 movfw var1 ; check firstest LAP mark 031E 01CC 00542 addwf var2, W 031F 0095 00543 subwf f_lap, W 0320 0743 00544 btfss STATUS, Z 0321 0B2B 00545 goto list2 00546 0322 0C76 00547 movlw 0x76 ; '*' 0323 0029 00548 movwf v_char ; firstest mark 00549 XCALL setvdp M Message[307]: Setting page bits. 0324 05A3 04C3 092A M lcall setvdp 0327 05A3 M data 0x4a3 + 256 * ((($ + 2) >> 9) & 0x001) ; Set Page-bits 0328 04C3 M data 0x4c3 + 256 * (( $ + 1) >> 10) M 0329 02A8 00550 incf v_addr, F 032A 0B33 00551 goto list2a 00552 032B 0C0F 00553 list2 movlw 0x0f ; ' ' 032C 0029 00554 movwf v_char 00555 XCALL setvdp M Message[307]: Setting page bits. 032D 05A3 04C3 092A M lcall setvdp 0330 05A3 M data 0x4a3 + 256 * ((($ + 2) >> 9) & 0x001) ; Set Page-bits 0331 04C3 M data 0x4c3 + 256 * (( $ + 1) >> 10) M 0332 02A8 00556 incf v_addr, F 00557 0333 020B 00558 list2a movfw var1 ; get LAP data 0334 01CC 00559 addwf var2, W 00560 XCALL get_lap M Message[307]: Setting page bits. 0335 05A3 04C3 091C M lcall get_lap 0338 05A3 M data 0x4a3 + 256 * ((($ + 2) >> 9) & 0x001) ; Set Page-bits 0339 04C3 M data 0x4c3 + 256 * (( $ + 1) >> 10) M 00561 00562 XCALL msec2time ; print LAP time M Message[307]: Setting page bits. 033A 05A3 04C3 0964 M lcall msec2time 033D 05A3 M data 0x4a3 + 256 * ((($ + 2) >> 9) & 0x001) ; Set Page-bits 033E 04C3 M data 0x4c3 + 256 * (( $ + 1) >> 10) M 00563 033F 0C04 00564 movlw 4 ; if( var2 == 4 ) goto list3 0340 008C 00565 subwf var2, W 0341 0643 00566 btfsc STATUS, Z 0342 0B4F 00567 goto list3 00568 0343 020B 00569 movfw var1 ; var5 = var1 + var2 0344 003F 00570 movwf var5 0345 020C 00571 movfw var2 0346 01FF 00572 addwf var5, F MPASM 01.21 Released LAPTIMER.ASM 12-1-1995 21:24:26 PAGE 18 laptimer LOC OBJECT CODE LINE SOURCE TEXT VALUE 0347 0214 00573 movfw c_lap ; if( var5 == c_lap) goto list4 0348 009F 00574 subwf var5, W ; no next page, down allow is no need. 0349 0643 00575 btfsc STATUS, Z 034A 0B61 00576 goto list4 00577 034B 02AC 00578 incf var2, F ; var2++ 00579 034C 0C14 00580 movlw 20 ; var3 += 20 034D 01ED 00581 addwf var3, F 034E 0B04 00582 goto list1 00583 034F 00584 list3 034F 0214 00585 movfw c_lap ; check down allow 0350 003F 00586 movwf var5 ; var5 = c_lap - var1 - 5 0351 020B 00587 movfw var1 0352 00BF 00588 subwf var5, F 0353 0C05 00589 movlw 5 0354 00BF 00590 subwf var5, F 0355 0703 00591 btfss STATUS, C ; if( c_lap < (var1 + 5)) goto list4 0356 0B61 00592 goto list4 0357 0C87 00593 movlw LOC( 15, 6) 0358 0028 00594 movwf v_addr 0359 0C31 00595 movlw 0x31 ; print down allow 035A 0029 00596 movwf v_char 00597 XCALL setvdp M Message[307]: Setting page bits. 035B 05A3 04C3 092A M lcall setvdp 035E 05A3 M data 0x4a3 + 256 * ((($ + 2) >> 9) & 0x001) ; Set Page-bits 035F 04C3 M data 0x4c3 + 256 * (( $ + 1) >> 10) M 0360 053E 00598 bsf var4, C_STA ; enable START(NEXT) button 00599 0361 00600 list4 0361 020B 00601 movfw var1 ; if( var1 ) print up allow 0362 0643 00602 btfsc STATUS, Z 0363 0B6E 00603 goto list5 0364 0C37 00604 movlw LOC( 15, 2) 0365 0028 00605 movwf v_addr 0366 0C30 00606 movlw 0x30 ; up allow 0367 0029 00607 movwf v_char 00608 XCALL setvdp M Message[307]: Setting page bits. 0368 05A3 04C3 092A M lcall setvdp 036B 05A3 M data 0x4a3 + 256 * ((($ + 2) >> 9) & 0x001) ; Set Page-bits 036C 04C3 M data 0x4c3 + 256 * (( $ + 1) >> 10) M 036D 055E 00609 bsf var4, C_STP ; enable STOP(PREV) button 036E 00610 list5 00611 036E 0C0E 00612 r_btn movlw b'00001110' ; Button released? 036F 0147 00613 andwf PORTC, W 0370 0F0E 00614 xorlw b'00001110' 0371 0743 00615 btfss STATUS, Z 0372 0B6E 00616 goto r_btn 00617 XCALL wait50 M MPASM 01.21 Released LAPTIMER.ASM 12-1-1995 21:24:26 PAGE 19 laptimer LOC OBJECT CODE LINE SOURCE TEXT VALUE Message[307]: Setting page bits. 0373 04A3 05C3 09CC M lcall wait50 0376 05A3 M data 0x4a3 + 256 * ((($ + 2) >> 9) & 0x001) ; Set Page-bits 0377 04C3 M data 0x4c3 + 256 * (( $ + 1) >> 10) M 00618 0378 0C0E 00619 movlw b'00001110' ; recheck Button released? 0379 0147 00620 andwf PORTC, W 037A 0F0E 00621 xorlw b'00001110' 037B 0743 00622 btfss STATUS, Z 037C 0B6E 00623 goto r_btn 00624 037D 0727 00625 w_btn btfss PORTC, C_STA ; Button check 037E 0B84 00626 goto w_btn1 037F 0747 00627 btfss PORTC, C_STP 0380 0B84 00628 goto w_btn1 0381 0767 00629 btfss PORTC, C_RST 0382 0B84 00630 goto w_btn1 0383 0B7D 00631 goto w_btn 00632 00633 w_btn1 XCALL wait50 M Message[307]: Setting page bits. 0384 04A3 05C3 09CC M lcall wait50 0387 05A3 M data 0x4a3 + 256 * ((($ + 2) >> 9) & 0x001) ; Set Page-bits 0388 04C3 M data 0x4c3 + 256 * (( $ + 1) >> 10) M 00634 0389 0727 00635 btfss PORTC, C_STA ; recheck button 038A 0B90 00636 goto n_page 038B 0747 00637 btfss PORTC, C_STP 038C 0B95 00638 goto p_page 038D 0767 00639 btfss PORTC, C_RST 038E 0B9A 00640 goto restart 00641 038F 0B7D 00642 goto w_btn 00643 0390 00644 n_page 0390 073E 00645 btfss var4, C_STA 0391 0B7D 00646 goto w_btn 0392 0C05 00647 movlw 5 ; var += 5 0393 01EB 00648 addwf var1, F 0394 0B9D 00649 goto list6 00650 0395 00651 p_page 0395 075E 00652 btfss var4, C_STP 0396 0B7D 00653 goto w_btn 0397 0C05 00654 movlw 5 ; var -= 5 0398 00AB 00655 subwf var1, F 0399 0B9D 00656 goto list6 00657 039A 00658 restart 00659 XGOTO rstart M 039A 04A3 M data 0x4a3 + 256 * ((rstart >> 9) & 0x001) ; Set Page-bits 039B 04C3 M data 0x4c3 + 256 * (rstart >> 10) Message[306]: Crossing page boundary -- ensure page bits are set. 039C 0A6A M goto rstart MPASM 01.21 Released LAPTIMER.ASM 12-1-1995 21:24:26 PAGE 20 laptimer LOC OBJECT CODE LINE SOURCE TEXT VALUE M 00660 039D 00661 list6 039D 0C64 00662 movlw 100 ; clear LAP lists 039E 002A 00663 movwf v_leng 039F 0C28 00664 movlw LOC( 0, 2) 03A0 0028 00665 movwf v_addr 03A1 0C0F 00666 movlw 0x0f 03A2 0029 00667 movwf v_char 00668 STRCLR M M XCALL setvdp M Message[307]: Setting page bits. 03A3 05A3 04C3 092A M lcall setvdp 03A6 05A3 M data 0x4a3 + 256 * ((($ + 2) >> 9) & 0x001) ; Set Page-bits 03A7 04C3 M data 0x4c3 + 256 * (( $ + 1) >> 10) M 03A8 02A8 M incf v_addr, F 03A9 02EA M decfsz v_leng, F 03AA 0BA3 M goto $ - 7 M 03AB 0B00 00669 goto prevlap 00670 00671 ; 00672 ; Subroutine area 1 00673 ; 0200 00674 org 0x200 00675 00676 ; page selector 00677 ; 0200 00678 pag_sel 0200 0036 00679 movwf lap_ptr 0201 0037 00680 movwf lap_pag 0202 0C08 00681 movlw 8 0203 01F6 00682 addwf lap_ptr, F 0204 01F7 00683 addwf lap_pag, F 0205 0376 00684 rlf lap_ptr, F 0206 0C0E 00685 movlw b'00001110' 0207 0176 00686 andwf lap_ptr, F 0208 0377 00687 rlf lap_pag, F 0209 0377 00688 rlf lap_pag, F 020A 0C60 00689 movlw b'01100000' 020B 0157 00690 andwf lap_pag, W 020C 0136 00691 iorwf lap_ptr, F 00692 020D 0800 00693 retlw 0 00694 ; 00695 ; LAP data manager 00696 ; set_lap(W), timeMSB, timeLSB 00697 ; 020E 00698 set_lap 020E 0900 00699 call pag_sel 00700 020F 0216 00701 movfw lap_ptr 0210 0D11 00702 iorlw b'00010001' 0211 0024 00703 movwf FSR 0212 020E 00704 movfw timeMSB MPASM 01.21 Released LAPTIMER.ASM 12-1-1995 21:24:26 PAGE 21 laptimer LOC OBJECT CODE LINE SOURCE TEXT VALUE 0213 0020 00705 movwf INDF 0214 0064 00706 clrf FSR 00707 0215 0216 00708 movfw lap_ptr 0216 0D10 00709 iorlw b'00010000' 0217 0024 00710 movwf FSR 0218 020F 00711 movfw timeLSB 0219 0020 00712 movwf INDF 021A 0064 00713 clrf FSR 00714 021B 0800 00715 retlw 0 00716 ; 00717 ; get_lap(W) return timeMSB, timeLSB 00718 ; 021C 00719 get_lap 021C 0900 00720 call pag_sel 00721 021D 0216 00722 movfw lap_ptr 021E 0D11 00723 iorlw b'00010001' 021F 0024 00724 movwf FSR 0220 0200 00725 movfw INDF 0221 002E 00726 movwf timeMSB 0222 0064 00727 clrf FSR 00728 0223 0216 00729 movfw lap_ptr 0224 0D10 00730 iorlw b'00010000' 0225 0024 00731 movwf FSR 0226 0200 00732 movfw INDF 0227 002F 00733 movwf timeLSB 0228 0064 00734 clrf FSR 00735 0229 0800 00736 retlw 0 00737 00738 ; 00739 ; send to VDP broken: bit_cnt, div_cnt, vdp_sr, min 00740 ; void far setvdp( addr, data ) 022A 00741 setvdp 022A 0077 00742 clrf bit_cnt 022B 06E7 00743 vsyn1 btfsc PORTC, C_VSYN ; wait /V.SYNC to high 022C 0A32 00744 goto vsyn2 022D 0000 00745 nop 022E 0000 00746 nop 022F 02F7 00747 decfsz bit_cnt, F 0230 0A2B 00748 goto vsyn1 0231 08FF 00749 retlw 0xff 00750 0232 0466 00751 vsyn2 bcf PORTB, B_CE ; /CE = 0 00752 0233 0C08 00753 movlw 8 ; send VDP address 0234 0037 00754 movwf bit_cnt 0235 0208 00755 movfw v_addr 0236 0030 00756 movwf vdp_sr 00757 0237 0446 00758 vdp1 bcf PORTB, B_CP 0238 0370 00759 rlf vdp_sr, F 0239 0603 00760 btfsc STATUS, C 023A 0A3D 00761 goto vdp2 ; data bit is HIGH 023B 0426 00762 bcf PORTB, B_DA ; data bit is LOW MPASM 01.21 Released LAPTIMER.ASM 12-1-1995 21:24:26 PAGE 22 laptimer LOC OBJECT CODE LINE SOURCE TEXT VALUE 023C 0A3E 00763 goto vdp3 023D 0526 00764 vdp2 bsf PORTB, B_DA 023E 0546 00765 vdp3 bsf PORTB, B_CP 00766 023F 02F7 00767 decfsz bit_cnt, F 0240 0A37 00768 goto vdp1 00769 0241 0446 00770 bcf PORTB, B_CP 0242 0506 00771 bsf PORTB, B_LDI ; LDI = 1, send VDP data 00772 0243 0C08 00773 movlw 8 0244 0037 00774 movwf bit_cnt 0245 0209 00775 movfw v_char 0246 0030 00776 movwf vdp_sr 00777 0247 0446 00778 vdp4 bcf PORTB, B_CP 0248 0370 00779 rlf vdp_sr, F 0249 0603 00780 btfsc STATUS, C 024A 0A4D 00781 goto vdp5 ; data bit is HIGH 024B 0426 00782 bcf PORTB, B_DA ; data bit is LOW 024C 0A4E 00783 goto vdp6 024D 0526 00784 vdp5 bsf PORTB, B_DA 024E 0546 00785 vdp6 bsf PORTB, B_CP 00786 024F 02F7 00787 decfsz bit_cnt, F 0250 0A47 00788 goto vdp4 0251 0446 00789 bcf PORTB, B_CP 00790 0252 0000 00791 nop 0253 0406 00792 bcf PORTB, B_LDI ; LDI = 0 0254 0566 00793 bsf PORTB, B_CE ; /CE = 1 00794 0255 0800 00795 retlw 0 00796 00797 ; 00798 ; translate integer 00799 ; itoa(W) broken: AL, CH, CL, W 00800 ; CH, CL = output 0256 0038 00801 itoa movwf AL 0257 0C20 00802 movlw 0x20 0258 003D 00803 movwf CH ; CH = degit10 0259 003C 00804 movwf CL ; CL = degit1 00805 025A 0C0A 00806 bcd1 movlw 10 025B 0098 00807 subwf AL, W 025C 0703 00808 btfss STATUS, C 025D 0A61 00809 goto bcd2 025E 0038 00810 movwf AL ; (AL >= 10 ) 025F 02BD 00811 incf CH, F 0260 0A5A 00812 goto bcd1 00813 0261 0218 00814 bcd2 movfw AL ; (AL < 10 ) 0262 01FC 00815 addwf CL, F 00816 0263 0800 00817 retlw 0 00818 00819 ; 00820 ;print the time from 16bit integer with location MPASM 01.21 Released LAPTIMER.ASM 12-1-1995 21:24:26 PAGE 23 laptimer LOC OBJECT CODE LINE SOURCE TEXT VALUE 00821 ; 00822 ;msec2time() v_addr, timeLSB, timeMSB 0264 00823 msec2time 00824 00825 XGOTO ms2tsub M 0264 05A3 M data 0x4a3 + 256 * ((ms2tsub >> 9) & 0x001) ; Set Page-bits 0265 05C3 M data 0x4c3 + 256 * (ms2tsub >> 10) Message[306]: Crossing page boundary -- ensure page bits are set. 0266 0B0D M goto ms2tsub M 00826 0267 00827 ms2t_rtn 0267 020E 00828 movfw timeMSB 0268 0039 00829 movwf AH 0269 020F 00830 movfw timeLSB 026A 0038 00831 movwf AL 00832 026B 0C17 00833 movlw 0x17 ; minuit 026C 003B 00834 movwf BH 026D 0C70 00835 movlw 0x70 026E 003A 00836 movwf BL 026F 09B9 00837 call function_div 0270 021C 00838 movfw CL 0271 0030 00839 movwf min 00840 0272 007B 00841 clrf BH ; second 0273 0C64 00842 movlw 0x64 0274 003A 00843 movwf BL 0275 09B9 00844 call function_div 0276 021C 00845 movfw CL 0277 0031 00846 movwf sec 00847 0278 0218 00848 movfw AL ; 1/100 second 0279 0032 00849 movwf dsec 00850 027A 0210 00851 movfw min ; make ascii 027B 0956 00852 call itoa 027C 021D 00853 movfw CH 027D 0029 00854 movwf v_char 00855 XCALL setvdp M Message[307]: Setting page bits. 027E 05A3 04C3 092A M lcall setvdp 0281 05A3 M data 0x4a3 + 256 * ((($ + 2) >> 9) & 0x001) ; Set Page-bits 0282 04C3 M data 0x4c3 + 256 * (( $ + 1) >> 10) M 0283 02A8 00856 incf v_addr, F 0284 021C 00857 movfw CL 0285 0029 00858 movwf v_char 00859 XCALL setvdp M Message[307]: Setting page bits. 0286 05A3 04C3 092A M lcall setvdp 0289 05A3 M data 0x4a3 + 256 * ((($ + 2) >> 9) & 0x001) ; Set Page-bits 028A 04C3 M data 0x4c3 + 256 * (( $ + 1) >> 10) M 028B 02A8 00860 incf v_addr, F MPASM 01.21 Released LAPTIMER.ASM 12-1-1995 21:24:26 PAGE 24 laptimer LOC OBJECT CODE LINE SOURCE TEXT VALUE 028C 0C1D 00861 movlw 0x1d ; ':' 028D 0029 00862 movwf v_char 028E 092A 00863 call setvdp 028F 02A8 00864 incf v_addr, F 00865 0290 0211 00866 movfw sec 0291 0956 00867 call itoa 0292 021D 00868 movfw CH 0293 0029 00869 movwf v_char 00870 XCALL setvdp M Message[307]: Setting page bits. 0294 05A3 04C3 092A M lcall setvdp 0297 05A3 M data 0x4a3 + 256 * ((($ + 2) >> 9) & 0x001) ; Set Page-bits 0298 04C3 M data 0x4c3 + 256 * (( $ + 1) >> 10) M 0299 02A8 00871 incf v_addr, F 029A 021C 00872 movfw CL 029B 0029 00873 movwf v_char 00874 XCALL setvdp M Message[307]: Setting page bits. 029C 05A3 04C3 092A M lcall setvdp 029F 05A3 M data 0x4a3 + 256 * ((($ + 2) >> 9) & 0x001) ; Set Page-bits 02A0 04C3 M data 0x4c3 + 256 * (( $ + 1) >> 10) M 02A1 02A8 00875 incf v_addr, F 02A2 0C1D 00876 movlw 0x1d ; ':' 02A3 0029 00877 movwf v_char 02A4 092A 00878 call setvdp 02A5 02A8 00879 incf v_addr, F 00880 02A6 0212 00881 movfw dsec 02A7 0956 00882 call itoa 02A8 021D 00883 movfw CH 02A9 0029 00884 movwf v_char 00885 XCALL setvdp M Message[307]: Setting page bits. 02AA 05A3 04C3 092A M lcall setvdp 02AD 05A3 M data 0x4a3 + 256 * ((($ + 2) >> 9) & 0x001) ; Set Page-bits 02AE 04C3 M data 0x4c3 + 256 * (( $ + 1) >> 10) M 02AF 02A8 00886 incf v_addr, F 02B0 021C 00887 movfw CL 02B1 0029 00888 movwf v_char 00889 XCALL setvdp M Message[307]: Setting page bits. 02B2 05A3 04C3 092A M lcall setvdp 02B5 05A3 M data 0x4a3 + 256 * ((($ + 2) >> 9) & 0x001) ; Set Page-bits 02B6 04C3 M data 0x4c3 + 256 * (( $ + 1) >> 10) M 02B7 02A8 00890 incf v_addr, F 00891 02B8 0800 00892 retlw 0 00893 00894 ; MPASM 01.21 Released LAPTIMER.ASM 12-1-1995 21:24:26 PAGE 25 laptimer LOC OBJECT CODE LINE SOURCE TEXT VALUE 00895 ; 00896 ; Divide ax by bx 00897 ; quotient in cx, remainder in ax 00898 ; 02B9 00899 function_div 02B9 0CF0 00900 movlw 0xf0 02BA 0037 00901 movwf div_cnt 02BB 007C 00902 clrf CL 02BC 007D 00903 clrf CH 00904 02BD 00905 position 02BD 06FB 00906 btfsc BH, 7 02BE 0AC4 00907 goto div_1 02BF 037A 00908 rlf BL, F 02C0 037B 00909 rlf BH, F 02C1 03F7 00910 incfsz div_cnt, F 02C2 0ABD 00911 goto position 02C3 0800 00912 retlw 0 00913 02C4 00F7 00914 div_1 decf div_cnt, F 00915 02C5 027A 00916 comf BL, F ; Negate/Increment bx, make z 02C6 027B 00917 comf BH, F 02C7 02BA 00918 incf BL, F 02C8 0643 00919 btfsc STATUS, Z 02C9 02BB 00920 incf BH, F 02CA 0C00 00921 movlw 0 00922 02CB 021A 00923 movf BL, W ; Add bx to ax, make c and z 02CC 01F8 00924 addwf AL, F 02CD 021B 00925 movf BH, W 02CE 0603 00926 btfsc STATUS, C 02CF 03F9 00927 incfsz AH, F 02D0 01D9 00928 addwf AH, W 02D1 0039 00929 movwf AH 02D2 0118 00930 iorwf AL, W 02D3 0C00 00931 movlw 0 00932 02D4 027A 00933 comf BL, F ; Negate/Increment bx, make z 02D5 027B 00934 comf BH, F 02D6 02BA 00935 incf BL, F 02D7 0643 00936 btfsc STATUS, Z 02D8 02BB 00937 incf BH, F 02D9 0C00 00938 movlw 0 00939 02DA 037C 00940 rlf CL, F 02DB 037D 00941 rlf CH, F 02DC 061C 00942 btfsc CL, W 02DD 0AE7 00943 goto div_2 00944 02DE 021A 00945 movf BL, W ; Add bx to ax, make c and z 02DF 01F8 00946 addwf AL, F 02E0 021B 00947 movf BH, W 02E1 0603 00948 btfsc STATUS, C 02E2 03F9 00949 incfsz AH, F 02E3 01D9 00950 addwf AH, W 02E4 0039 00951 movwf AH 02E5 0118 00952 iorwf AL, W MPASM 01.21 Released LAPTIMER.ASM 12-1-1995 21:24:26 PAGE 26 laptimer LOC OBJECT CODE LINE SOURCE TEXT VALUE 02E6 0C00 00953 movlw 0 00954 02E7 0403 00955 div_2 bcf STATUS, C 02E8 033B 00956 rrf BH, F 02E9 033A 00957 rrf BL, F 02EA 0697 00958 btfsc div_cnt, 4 02EB 0AC4 00959 goto div_1 02EC 0800 00960 retlw 0 00961 00962 00963 ; 00964 ; Subroutine area 2(string datas) 00965 ; 0400 00966 org 0x400 00967 0400 01E2 00968 title_s addwf PCL, F 0401 080F 080F 080F 00969 dt 0x0F, 0x0F, 0x0F, 0x0F, 0x0F ; welcome to 080F 080F 0406 0819 0804 080B 00970 dt 0x19, 0x04, 0x0B, 0x02, 0x11 0802 0811 040B 080C 0804 080F 00971 dt 0x0C, 0x04, 0x0F, 0x16, 0x11 0816 0811 0410 080F 080F 080F 00972 dt 0x0F, 0x0F, 0x0F, 0x0F, 0x0F 080F 080F 0415 080F 080F 080F 00973 dt 0x0F, 0x0F, 0x0F, 0x0F, 0x0F ; 080F 080F 041A 080F 080F 080F 00974 dt 0x0F, 0x0F, 0x0F, 0x0F, 0x0F 080F 080F 041F 080F 080F 080F 00975 dt 0x0F, 0x0F, 0x0F, 0x0F, 0x0F 080F 080F 0424 080F 080F 080F 00976 dt 0x0F, 0x0F, 0x0F, 0x0F, 0x0F 080F 080F 0429 080F 0818 0808 00977 dt 0x0F, 0x18, 0x08, 0x03, 0x04 ; video super-impose 0803 0804 042E 0811 080F 0815 00978 dt 0x11, 0x0F, 0x15, 0x17, 0x12 0817 0812 0433 0804 0814 0835 00979 dt 0x04, 0x14, 0x35, 0x08, 0x0C 0808 080C 0438 0812 0811 0815 00980 dt 0x12, 0x11, 0x15, 0x04, 0x0F 0804 080F 043D 080F 080F 080F 00981 dt 0x0F, 0x0F, 0x0F, 0x0F, 0x0F ; lap timer 080F 080F 0442 080F 080B 0800 00982 dt 0x0F, 0x0B, 0x00, 0x12, 0x0F 0812 080F 0447 0816 0808 080C 00983 dt 0x16, 0x08, 0x0C, 0x04, 0x14 0804 0814 044C 080F 080F 080F 00984 dt 0x0F, 0x0F, 0x0F, 0x0F, 0x0F 080F 080F 0451 080F 080F 080F 00985 dt 0x0F, 0x0F, 0x0F, 0x0F, 0x0F 080F 080F 0456 080F 080F 080F 00986 dt 0x0F, 0x0F, 0x0F, 0x0F, 0x0F ; 080F 080F 045B 080F 080F 080F 00987 dt 0x0F, 0x0F, 0x0F, 0x0F, 0x0F 080F 080F 0460 080F 080F 080F 00988 dt 0x0F, 0x0F, 0x0F, 0x0F, 0x0F 080F 080F 0465 080F 080F 080F 00989 dt 0x0F, 0x0F, 0x0F, 0x0F, 0x0F 080F 080F MPASM 01.21 Released LAPTIMER.ASM 12-1-1995 21:24:26 PAGE 27 laptimer LOC OBJECT CODE LINE SOURCE TEXT VALUE 046A 0818 0804 0814 00990 dt 0x18, 0x04, 0x14, 0x15, 0x08 ; version 0815 0808 046F 0811 0810 080F 00991 dt 0x11, 0x10, 0x0F 0472 0821 082D 0820 00992 dt VERSION_STR 080F 0476 080F 080F 080F 00993 dt 0x0F, 0x0F, 0x0F 0479 080F 080F 080F 00994 dt 0x0F, 0x0F, 0x0F, 0x0F, 0x0F ; 080F 080F 047E 080F 080F 080F 00995 dt 0x0F, 0x0F, 0x0F, 0x0F, 0x0F 080F 080F 0483 080F 080F 080F 00996 dt 0x0F, 0x0F, 0x0F, 0x0F, 0x0F 080F 080F 0488 080F 080F 080F 00997 dt 0x0F, 0x0F, 0x0F, 0x0F, 0x0F 080F 080F 048D 080F 080F 080F 00998 dt 0x0F, 0x0F, 0x0F, 0x0F, 0x02 ; copyright(c)1995 080F 0802 0492 0811 0812 081B 00999 dt 0x11, 0x12, 0x1B, 0x14, 0x08 0814 0808 0497 0806 0807 0816 01000 dt 0x06, 0x07, 0x16, 0x1F, 0x02 081F 0802 049C 082F 0821 0829 01001 dt 0x2F, 0x21, 0x29, 0x29, 0x25 0829 0825 04A1 080F 080F 080F 01002 dt 0x0F, 0x0F, 0x0F, 0x0F, 0x0F ; by h.kashima 080F 080F 04A6 080F 080F 080F 01003 dt 0x0F, 0x0F, 0x0F, 0x01, 0x1B 0801 081B 04AB 080F 0807 082D 01004 dt 0x0F, 0x07, 0x2D, 0x0A, 0x00 080A 0800 04B0 0815 0807 0808 01005 dt 0x15, 0x07, 0x08, 0x0C, 0x00, 0xff 080C 0800 08FF 01006 04B6 01E2 01007 push_s addwf PCL, F 04B7 0852 0857 0855 01008 dt 0x52, 0x57, 0x55, 0x47, 0x4f ; PUSH 0847 084F 04BC 0855 0856 0840 01009 dt 0x55, 0x56, 0x40, 0x54, 0x56, 0xff ; START 0854 0856 08FF 01010 04C2 01E2 01011 ovfl_s addwf PCL, F 04C3 0811 0818 0804 01012 dt 0x11, 0x18, 0x04, 0x14, 0x05 ; overflow 0814 0805 04C8 080B 0811 0819 01013 dt 0x0B, 0x11, 0x19, 0xff 08FF 01014 01015 ; wait 50ms for pushed button 01016 ; 04CC 01017 wait50 04CC 0061 01018 clrf TMR0 04CD 0CA0 01019 wait50a movlw CSEC * 5 04CE 0081 01020 subwf TMR0, W 04CF 0743 01021 btfss STATUS, Z 04D0 0ACD 01022 goto wait50a 04D1 0800 01023 retlw 0 01024 01025 ; 01026 ; Subroutine area 3(string datas) 01027 ; 0600 01028 org 0x600 01029 MPASM 01.21 Released LAPTIMER.ASM 12-1-1995 21:24:26 PAGE 28 laptimer LOC OBJECT CODE LINE SOURCE TEXT VALUE 01030 ; VDP Initialize 01031 ; 0600 01032 vinit 0600 0C08 01033 movlw b'00001000' ; VDP reset 0601 0026 01034 movwf PORTB 0602 0061 01035 clrf TMR0 ; wait 10ms 0603 0C20 01036 vinit2 movlw CSEC 0604 0081 01037 subwf TMR0, W 0605 0743 01038 btfss STATUS, Z 0606 0A03 01039 goto vinit2 0607 0586 01040 bsf PORTB, B_RES ; VDP start 01041 0608 0CB4 01042 vinit3 movlw 180 ; set HP 0609 0028 01043 movwf v_addr 060A 0C0C 01044 movlw 12 ; 3count par 1char 060B 0029 01045 movwf v_char 01046 XCALL setvdp M Message[307]: Setting page bits. 060C 05A3 04C3 092A M lcall setvdp 060F 05A3 M data 0x4a3 + 256 * ((($ + 2) >> 9) & 0x001) ; Set Page-bits 0610 05C3 M data 0x4c3 + 256 * (( $ + 1) >> 10) M 01047 0611 0CB5 01048 movlw 181 ; set VP 0612 0028 01049 movwf v_addr 0613 0C13 01050 movlw 19 ; 4count par 1char 0614 0029 01051 movwf v_char 01052 XCALL setvdp M Message[307]: Setting page bits. 0615 05A3 04C3 092A M lcall setvdp 0618 05A3 M data 0x4a3 + 256 * ((($ + 2) >> 9) & 0x001) ; Set Page-bits 0619 05C3 M data 0x4c3 + 256 * (( $ + 1) >> 10) M 01053 061A 0CB6 01054 movlw 182 ; set CREG 061B 0028 01055 movwf v_addr 061C 0CD0 01056 movlw b'11010000' 061D 0029 01057 movwf v_char 01058 XCALL setvdp M Message[307]: Setting page bits. 061E 05A3 04C3 092A M lcall setvdp 0621 05A3 M data 0x4a3 + 256 * ((($ + 2) >> 9) & 0x001) ; Set Page-bits 0622 05C3 M data 0x4c3 + 256 * (( $ + 1) >> 10) M 01059 0623 0800 01060 retlw 0 01061 01062 0624 01E2 01063 time_s addwf PCL, F 0625 0816 0811 0812 01064 dt 0x16, 0x11, 0x12, 0x0F, 0x36 ; TOP * 080F 0836 062A 0836 080F 0835 01065 dt 0x36, 0x0F, 0x35, 0x35, 0x1D ; * --: 0835 081D 062F 0835 0835 081D 01066 dt 0x35, 0x35, 0x1D, 0x35, 0x35 ; --:-- 0835 0835 MPASM 01.21 Released LAPTIMER.ASM 12-1-1995 21:24:26 PAGE 29 laptimer LOC OBJECT CODE LINE SOURCE TEXT VALUE 0634 080F 080F 080F 01067 dt 0x0F, 0x0F, 0x0F, 0x0F, 0x0F ; 080F 080F 0639 080B 0800 0812 01068 dt 0x0B, 0x00, 0x12, 0x0F, 0x36 ; LAP * 080F 0836 063E 0836 080F 0835 01069 dt 0x36, 0x0F, 0x35, 0x35, 0x1D ; * --: 0835 081D 0643 0835 0835 081D 01070 dt 0x35, 0x35, 0x1D, 0x35, 0x35 ; --:-- 0835 0835 0648 080F 080F 080F 01071 dt 0x0F, 0x0F, 0x0F, 0x0F, 0x0F ; 080F 080F 064D 084B 0840 0852 01072 dt 0x4B, 0x40, 0x52, 0x0F, 0x76 ; LAP * 080F 0876 0652 0876 080F 0835 01073 dt 0x76, 0x0F, 0x35, 0x35, 0x1D ; * --: 0835 081D 0657 0835 0835 081D 01074 dt 0x35, 0x35, 0x1D, 0x35, 0x35, 0xff ; --:-- 0835 0835 08FF 01075 065D 01E2 01076 lap_s addwf PCL, F 065E 080B 0800 0812 01077 dt 0x0B, 0x00, 0x12, 0xff ; LAP 08FF 01078 0662 01E2 01079 rdy_s addwf PCL, F 0663 080F 080F 0854 01080 dt 0x0f, 0x0f, 0x54, 0x44, 0x40 ; REA 0844 0840 0668 0843 085B 086B 01081 dt 0x43, 0x5B, 0x6B, 0x0f, 0x0f, 0xff ; DY! 080F 080F 08FF 01082 066E 01E2 01083 flap_s addwf PCL, F 066F 0845 0848 0854 01084 dt 0x45, 0x48, 0x54, 0x55, 0x56 ; FIRST 0855 0856 0674 0844 0855 0856 01085 dt 0x44, 0x55, 0x56, 0x4f, 0x4b ; EST L 084F 084B 0679 0840 0852 086B 01086 dt 0x40, 0x52, 0x6b, 0xff ; AP! 08FF 01087 067D 01E2 01088 rest_s addwf PCL, F 067E 0812 0817 0815 01089 dt 0x12, 0x17, 0x15, 0x07, 0x0f ; PUSH 0807 080F 0683 0814 0804 0815 01090 dt 0x14, 0x04, 0x15, 0x04, 0x16 ; RESET 0804 0816 0688 080F 0816 0811 01091 dt 0x0f, 0x16, 0x11, 0x0f, 0x14 ; TO R 080F 0814 068D 0804 0816 0814 01092 dt 0x04, 0x16, 0x14, 0x1b, 0x0f, 0xff ; ETRY 081B 080F 08FF 01093 0693 01E2 01094 nodat_s addwf PCL, F 0694 0836 0850 0851 01095 dt 0x36, 0x50, 0x51, 0x0F, 0x43 ; NO DA 080F 0843 0699 0840 0856 0840 01096 dt 0x40, 0x56, 0x40, 0x36, 0xff ; TA 0836 08FF 01097 069E 01E2 01098 test_s addwf PCL, F 069F 0816 0804 0815 01099 dt 0x16, 0x04, 0x15, 0x16, 0x0f ; TEST 0816 080F 06A4 080C 0811 0803 01100 dt 0x0c, 0x11, 0x03, 0x04, 0xff ; MODE 0804 08FF 01101 06A9 01E2 01102 conte_s addwf PCL, F MPASM 01.21 Released LAPTIMER.ASM 12-1-1995 21:24:26 PAGE 30 laptimer LOC OBJECT CODE LINE SOURCE TEXT VALUE 06AA 080B 0800 0812 01103 dt 0x0b, 0x00, 0x12, 0x0f, 0x02 ; LAP C 080F 0802 06AF 0811 0810 0816 01104 dt 0x11, 0x10, 0x16, 0x04, 0x10 ; ONTEN 0804 0810 06B4 0816 0815 08FF 01105 dt 0x16, 0x15, 0xff ; TS 01106 01107 ; show_lap initilalize 01108 ; 06B7 01109 show_lap 06B7 0CB3 01110 movlw 179 ; clear screen 06B8 002A 01111 movwf v_leng 06B9 0068 01112 clrf v_addr 06BA 0C0F 01113 movlw 0x0f 06BB 0029 01114 movwf v_char 01115 STRCLR M M XCALL setvdp M Message[307]: Setting page bits. 06BC 05A3 04C3 092A M lcall setvdp 06BF 05A3 M data 0x4a3 + 256 * ((($ + 2) >> 9) & 0x001) ; Set Page-bits 06C0 05C3 M data 0x4c3 + 256 * (( $ + 1) >> 10) M 06C1 02A8 M incf v_addr, F 06C2 02EA M decfsz v_leng, F 06C3 0ABC M goto $ - 7 M 01116 01117 PUT_S 4, 0, conte_s ; print "LAP CONTENTS" M 06C4 0071 M clrf putscnt 06C5 0C04 M movlw LOC( 4, 0) 06C6 0028 M movwf v_addr 06C7 0211 M movfw putscnt ; loop1 M XCALL conte_s M Message[307]: Setting page bits. 06C8 05A3 05C3 09A9 M lcall conte_s 06CB 05A3 M data 0x4a3 + 256 * ((($ + 2) >> 9) & 0x001) ; Set Page-bits 06CC 05C3 M data 0x4c3 + 256 * (( $ + 1) >> 10) M 06CD 0029 M movwf v_char 06CE 0289 M incf v_char, W 06CF 0643 M btfsc STATUS, Z 06D0 0AD9 M goto $ + 9 ; goto endm M XCALL setvdp M Message[307]: Setting page bits. 06D1 05A3 04C3 092A M lcall setvdp 06D4 05A3 M data 0x4a3 + 256 * ((($ + 2) >> 9) & 0x001) ; Set Page-bits 06D5 05C3 M data 0x4c3 + 256 * (( $ + 1) >> 10) M 06D6 02A8 M incf v_addr, F 06D7 02B1 M incf putscnt, F 06D8 0AC7 M goto $ - 17 ; goto loop1 M 01118 PUT_S 0, 8, rest_s ; print "PUSH RST ..." M MPASM 01.21 Released LAPTIMER.ASM 12-1-1995 21:24:26 PAGE 31 laptimer LOC OBJECT CODE LINE SOURCE TEXT VALUE 06D9 0071 M clrf putscnt 06DA 0CA0 M movlw LOC( 0, 8) 06DB 0028 M movwf v_addr 06DC 0211 M movfw putscnt ; loop1 M XCALL rest_s M Message[307]: Setting page bits. 06DD 05A3 05C3 097D M lcall rest_s 06E0 05A3 M data 0x4a3 + 256 * ((($ + 2) >> 9) & 0x001) ; Set Page-bits 06E1 05C3 M data 0x4c3 + 256 * (( $ + 1) >> 10) M 06E2 0029 M movwf v_char 06E3 0289 M incf v_char, W 06E4 0643 M btfsc STATUS, Z 06E5 0AEE M goto $ + 9 ; goto endm M XCALL setvdp M Message[307]: Setting page bits. 06E6 05A3 04C3 092A M lcall setvdp 06E9 05A3 M data 0x4a3 + 256 * ((($ + 2) >> 9) & 0x001) ; Set Page-bits 06EA 05C3 M data 0x4c3 + 256 * (( $ + 1) >> 10) M 06EB 02A8 M incf v_addr, F 06EC 02B1 M incf putscnt, F 06ED 0ADC M goto $ - 17 ; goto loop1 M 01119 06EE 006B 01120 clrf var1 ; first num of current view page 01121 06EF 03D4 01122 incfsz c_lap, W ; if( c_lap == 0xff) nodata 06F0 0B0A 01123 goto show_2 01124 PUT_S 5, 2, nodat_s M 06F1 0071 M clrf putscnt 06F2 0C2D M movlw LOC( 5, 2) 06F3 0028 M movwf v_addr 06F4 0211 M movfw putscnt ; loop1 M XCALL nodat_s M Message[307]: Setting page bits. 06F5 05A3 05C3 0993 M lcall nodat_s 06F8 05A3 M data 0x4a3 + 256 * ((($ + 2) >> 9) & 0x001) ; Set Page-bits 06F9 05C3 M data 0x4c3 + 256 * (( $ + 1) >> 10) M 06FA 0029 M movwf v_char 06FB 0289 M incf v_char, W 06FC 0643 M btfsc STATUS, Z 06FD 0B06 M goto $ + 9 ; goto endm M XCALL setvdp M Message[307]: Setting page bits. 06FE 05A3 04C3 092A M lcall setvdp 0701 05A3 M data 0x4a3 + 256 * ((($ + 2) >> 9) & 0x001) ; Set Page-bits 0702 05C3 M data 0x4c3 + 256 * (( $ + 1) >> 10) M 0703 02A8 M incf v_addr, F 0704 02B1 M incf putscnt, F 0705 0AF4 M goto $ - 17 ; goto loop1 MPASM 01.21 Released LAPTIMER.ASM 12-1-1995 21:24:26 PAGE 32 laptimer LOC OBJECT CODE LINE SOURCE TEXT VALUE M 0706 007E 01125 clrf var4 ; up/down disable 01126 XGOTO r_btn M 0707 05A3 M data 0x4a3 + 256 * ((r_btn >> 9) & 0x001) ; Set Page-bits 0708 04C3 M data 0x4c3 + 256 * (r_btn >> 10) Message[306]: Crossing page boundary -- ensure page bits are set. 0709 0B6E M goto r_btn M 01127 070A 01128 show_2 01129 XGOTO prevlap M 070A 05A3 M data 0x4a3 + 256 * ((prevlap >> 9) & 0x001) ; Set Page-bits 070B 04C3 M data 0x4c3 + 256 * (prevlap >> 10) Message[306]: Crossing page boundary -- ensure page bits are set. 070C 0B00 M goto prevlap M 01130 01131 ; msec2time overlay 01132 ; 070D 01133 ms2tsub 070D 028E 01134 incf timeMSB, W ; if( time == 0xffff ) 070E 0743 01135 btfss STATUS, Z 070F 0B26 01136 goto mloop2 0710 028F 01137 incf timeLSB, W 0711 0743 01138 btfss STATUS, Z 0712 0B26 01139 goto mloop2 01140 0713 0071 01141 clrf putscnt ; print "overflow" 0714 0211 01142 mloop1 movfw putscnt 01143 XCALL ovfl_s M Message[307]: Setting page bits. 0715 04A3 05C3 09C2 M lcall ovfl_s 0718 05A3 M data 0x4a3 + 256 * ((($ + 2) >> 9) & 0x001) ; Set Page-bits 0719 05C3 M data 0x4c3 + 256 * (( $ + 1) >> 10) M 071A 0029 01144 movwf v_char 071B 0289 01145 incf v_char, W 071C 0643 01146 btfsc STATUS, Z 071D 0800 01147 retlw 0 01148 XCALL setvdp M Message[307]: Setting page bits. 071E 05A3 04C3 092A M lcall setvdp 0721 05A3 M data 0x4a3 + 256 * ((($ + 2) >> 9) & 0x001) ; Set Page-bits 0722 05C3 M data 0x4c3 + 256 * (( $ + 1) >> 10) M 0723 02A8 01149 incf v_addr, F 0724 02B1 01150 incf putscnt, F 0725 0B14 01151 goto mloop1 0726 01152 mloop2 01153 XGOTO ms2t_rtn M 0726 05A3 M data 0x4a3 + 256 * ((ms2t_rtn >> 9) & 0x001) ; Set Page-bits 0727 04C3 M data 0x4c3 + 256 * (ms2t_rtn >> 10) Message[306]: Crossing page boundary -- ensure page bits are set. MPASM 01.21 Released LAPTIMER.ASM 12-1-1995 21:24:26 PAGE 33 laptimer LOC OBJECT CODE LINE SOURCE TEXT VALUE 0728 0A67 M goto ms2t_rtn M 01154 01155 01156 ; TEST routines 01157 ; 0729 01158 testsub 0729 0061 01159 clrf TMR0 072A 006F 01160 clrf timeLSB 01161 072B 0CB4 01162 test0 movlw 180 ; clear screen 072C 002A 01163 movwf v_leng 072D 0068 01164 clrf v_addr 072E 0C0F 01165 movlw 0x0f 072F 0029 01166 movwf v_char 01167 STRCLR M M XCALL setvdp M Message[307]: Setting page bits. 0730 05A3 04C3 092A M lcall setvdp 0733 05A3 M data 0x4a3 + 256 * ((($ + 2) >> 9) & 0x001) ; Set Page-bits 0734 05C3 M data 0x4c3 + 256 * (( $ + 1) >> 10) M 0735 02A8 M incf v_addr, F 0736 02EA M decfsz v_leng, F 0737 0B30 M goto $ - 7 M 01168 01169 PUT_S 5, 0, test_s M 0738 0071 M clrf putscnt 0739 0C05 M movlw LOC( 5, 0) 073A 0028 M movwf v_addr 073B 0211 M movfw putscnt ; loop1 M XCALL test_s M Message[307]: Setting page bits. 073C 05A3 05C3 099E M lcall test_s 073F 05A3 M data 0x4a3 + 256 * ((($ + 2) >> 9) & 0x001) ; Set Page-bits 0740 05C3 M data 0x4c3 + 256 * (( $ + 1) >> 10) M 0741 0029 M movwf v_char 0742 0289 M incf v_char, W 0743 0643 M btfsc STATUS, Z 0744 0B4D M goto $ + 9 ; goto endm M XCALL setvdp M Message[307]: Setting page bits. 0745 05A3 04C3 092A M lcall setvdp 0748 05A3 M data 0x4a3 + 256 * ((($ + 2) >> 9) & 0x001) ; Set Page-bits 0749 05C3 M data 0x4c3 + 256 * (( $ + 1) >> 10) M 074A 02A8 M incf v_addr, F 074B 02B1 M incf putscnt, F 074C 0B3B M goto $ - 17 ; goto loop1 M 01170 MPASM 01.21 Released LAPTIMER.ASM 12-1-1995 21:24:26 PAGE 34 laptimer LOC OBJECT CODE LINE SOURCE TEXT VALUE 074D 0C50 01171 test4 movlw LOC( 0, 4) 074E 0028 01172 movwf v_addr 074F 0C08 01173 movlw 8 0750 002B 01174 movwf var1 0751 0207 01175 movfw PORTC 0752 002C 01176 movwf var2 0753 036C 01177 test1 rlf var2, F 0754 0703 01178 btfss STATUS, C 0755 0B59 01179 goto test2 0756 0C21 01180 movlw 0x21 0757 0029 01181 movwf v_char 0758 0B5B 01182 goto test3 01183 0759 0C20 01184 test2 movlw 0x20 075A 0029 01185 movwf v_char 01186 01187 test3 XCALL setvdp M Message[307]: Setting page bits. 075B 05A3 04C3 092A M lcall setvdp 075E 05A3 M data 0x4a3 + 256 * ((($ + 2) >> 9) & 0x001) ; Set Page-bits 075F 05C3 M data 0x4c3 + 256 * (( $ + 1) >> 10) M 0760 02A8 01188 incf v_addr, F 01189 0761 02EB 01190 decfsz var1, F 0762 0B53 01191 goto test1 01192 0763 0707 01193 btfss PORTC, C_IR ; buzer on if IR = 0. 0764 0B67 01194 goto test5 0765 04E6 01195 bcf PORTB, B_BUZ 0766 0B68 01196 goto test6 0767 05E6 01197 test5 bsf PORTB, B_BUZ 01198 0768 0C9F 01199 test6 movlw CSEC * 5 - 1 0769 0081 01200 subwf TMR0, W 076A 0703 01201 btfss STATUS, C 076B 0B4D 01202 goto test4 01203 076C 0061 01204 clrf TMR0 076D 02AF 01205 incf timeLSB, F ; if( timeLSB++ == 200) timeLSB = 0 076E 0CC8 01206 movlw 200 076F 008F 01207 subwf timeLSB, W 0770 0643 01208 btfsc STATUS, Z 0771 006F 01209 clrf timeLSB 01210 0772 0C05 01211 movlw 5 ; print timeLSB 0773 01E8 01212 addwf v_addr, F 0774 0403 01213 bcf STATUS, C 0775 030F 01214 rrf timeLSB, W 01215 XCALL itoa M Message[307]: Setting page bits. 0776 05A3 04C3 0956 M lcall itoa 0779 05A3 M data 0x4a3 + 256 * ((($ + 2) >> 9) & 0x001) ; Set Page-bits 077A 05C3 M data 0x4c3 + 256 * (( $ + 1) >> 10) M 077B 021D 01216 movfw CH MPASM 01.21 Released LAPTIMER.ASM 12-1-1995 21:24:26 PAGE 35 laptimer LOC OBJECT CODE LINE SOURCE TEXT VALUE 077C 0029 01217 movwf v_char 01218 XCALL setvdp M Message[307]: Setting page bits. 077D 05A3 04C3 092A M lcall setvdp 0780 05A3 M data 0x4a3 + 256 * ((($ + 2) >> 9) & 0x001) ; Set Page-bits 0781 05C3 M data 0x4c3 + 256 * (( $ + 1) >> 10) M 0782 02A8 01219 incf v_addr, F 0783 021C 01220 movfw CL 0784 0029 01221 movwf v_char 01222 XCALL setvdp M Message[307]: Setting page bits. 0785 05A3 04C3 092A M lcall setvdp 0788 05A3 M data 0x4a3 + 256 * ((($ + 2) >> 9) & 0x001) ; Set Page-bits 0789 05C3 M data 0x4c3 + 256 * (( $ + 1) >> 10) M 01223 078A 020F 01224 movfw timeLSB ; if(!timeLSB) goto test4 078B 0643 01225 btfsc STATUS, Z 078C 0B4D 01226 goto test4 01227 078D 0E3F 01228 andlw 0x3f ; if(!(timeLSB % 32)) cls 078E 0643 01229 btfsc STATUS, Z 078F 0B2B 01230 goto test0 01231 0790 0B4D 01232 goto test4 01233 01234 01235 01236 ; RESET Vector 01237 ; 07FF 01238 org 0x7ff 01239 Message[306]: Crossing page boundary -- ensure page bits are set. 07FF 0A00 01240 goto start 01241 01242 end MPASM 01.21 Released LAPTIMER.ASM 12-1-1995 21:24:26 PAGE 36 laptimer SYMBOL TABLE LABEL VALUE AH 00000019 AL 00000018 BH 0000001B BL 0000001A B_BUZ 00000007 B_CE 00000003 B_CP 00000002 B_DA 00000001 B_LDI 00000000 B_RES 00000004 C 00000000 CARRY_BIT STATUS,C CH 0000001D CL 0000001C CSEC ( RTCLK / PSCR ) / 100 C_E1 00000004 C_E2 00000005 C_E3 00000006 C_IR 00000000 C_RST 00000003 C_STA 00000001 C_STP 00000002 C_VSYN 00000007 DC 00000001 DIGIT_CARRY_BIT STATUS,DC DSEC ( RTCLK / PSCR ) / 10 F 00000001 FSR 00000004 INDF 00000000 LOC 20 * y + x MAXLAP 24 NOT_PD 00000003 NOT_TO 00000004 PA0 00000005 PA1 00000006 PA2 00000007 PCL 00000002 PORTA 00000005 PORTB 00000006 PORTC 00000007 POWER_DOWN_BIT STATUS,NOTPD PRESCALER OPTION_REG,PSA PS0 00000000 PS1 00000001 PS2 00000002 PSA 00000003 PSCR 256 PUT_S RA0 PORTA,H'0000' RA1 PORTA,H'0001' RA2 PORTA,H'0002' RA3 PORTA,H'0003' RB0 PORTB,H'0000' RB1 PORTB,H'0001' RB2 PORTB,H'0002' RB3 PORTB,H'0003' RB4 PORTB,H'0004' RB5 PORTB,H'0005' MPASM 01.21 Released LAPTIMER.ASM 12-1-1995 21:24:26 PAGE 37 laptimer SYMBOL TABLE LABEL VALUE RB6 PORTB,H'0006' RB7 PORTB,H'0007' RC0 PORTC,H'0000' RC1 PORTC,H'0001' RC2 PORTC,H'0002' RC3 PORTC,H'0003' RC4 PORTC,H'0004' RC5 PORTC,H'0005' RC6 PORTC,H'0006' RC7 PORTC,H'0007' RTCC_EDGE OPTION_REG,T0SE RTCC_SOURCE OPTION_REG,T0CS RTCLK XTAL / 4 STATUS 00000003 STRCLR T0CS 00000005 T0SE 00000004 TIMEOUT_BIT STATUS,NOTTO TMR0 00000001 VERSION_STR 0x21, 0x2d, 0x20, 0x0f W 00000000 XCALL XGOTO XTAL 3276800 Z 00000002 ZERO_BIT STATUS,Z _CP_OFF 00000FFF _CP_ON 00000FF7 _HS_OSC 00000FFE _LP_OSC 00000FFC _RC_OSC 00000FFF _WDT_OFF 00000FFB _WDT_ON 00000FFF _XT_OSC 00000FFD __16C57 00000001 bcd1 0000025A bcd2 00000261 beep1 0000000B beep2 0000000A bit_cnt 00000017 c_break 000001E7 c_lap 00000014 clrlap 0000006C conte_s 000006A9 div_1 000002C4 div_2 000002E7 div_cnt 00000017 do_chk 00000175 dsec 00000012 f_lap 00000015 flap3 000001A9 flap4 000001E2 flap_s 0000066E function_div 000002B9 get_lap 0000021C itoa 00000256 lap_pag 00000017 lap_ptr 00000016 MPASM 01.21 Released LAPTIMER.ASM 12-1-1995 21:24:26 PAGE 38 laptimer SYMBOL TABLE LABEL VALUE lap_s 0000065D laploop 000000ED list1 00000304 list2 0000032B list2a 00000333 list3 0000034F list4 00000361 list5 0000036E list6 0000039D mesclr 0000015F min 00000010 mloop1 00000714 mloop2 00000726 ms2t_rtn 00000267 ms2tsub 0000070D msec2time 00000264 n_page 00000390 nodat_s 00000693 notest 00000046 ovfl_s 000004C2 p_page 00000395 pag_sel 00000200 position 000002BD prev_t 00000013 prevlap 00000300 push_s 000004B6 putscnt 00000011 r_btn 0000036E rand1 00000028 rand2 0000001A rand3 0000003C rdy_s 00000662 rest_s 0000067D restart 0000039A rstart 0000006A sec 00000011 set_lap 0000020E setvdp 0000022A show_2 0000070A show_lap 000006B7 start 00000000 test0 0000072B test1 00000753 test2 00000759 test3 0000075B test4 0000074D test5 00000767 test6 00000768 test_s 0000069E testsub 00000729 tim_end 0000017B timeLSB 0000000F timeMSB 0000000E time_s 00000624 timloop 00000135 tit2 0000005B title_s 00000400 v_addr 00000008 MPASM 01.21 Released LAPTIMER.ASM 12-1-1995 21:24:26 PAGE 39 laptimer SYMBOL TABLE LABEL VALUE v_char 00000009 v_leng 0000000A valid 0000014D var1 0000000B var2 0000000C var3 0000000D var4 0000001E var5 0000001F vdp1 00000237 vdp2 0000023D vdp3 0000023E vdp4 00000247 vdp5 0000024D vdp6 0000024E vdp_sr 00000010 vinit 00000600 vinit2 00000603 vinit3 00000608 vsyn1 0000022B vsyn2 00000232 w10ms 00000135 w_btn 0000037D w_btn1 00000384 w_ir1 000000D4 w_ir2 000000D8 w_sta 000000AD w_sta2 000000CB wait2 0000005F wait3 0000005D wait50 000004CC wait50a 000004CD 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 XXXXXXXXXXXXXXXX 0100 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0140 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0180 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 01C0 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX ---------------- 0200 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0240 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0280 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 02C0 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXX--- ---------------- 0300 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0340 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0380 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXX---- ---------------- 03C0 : ---------------- ---------------- ---------------- ---------------- 0400 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0440 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0480 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 04C0 : XXXXXXXXXXXXXXXX XX-------------- ---------------- ---------------- MPASM 01.21 Released LAPTIMER.ASM 12-1-1995 21:24:26 PAGE 40 laptimer MEMORY USAGE MAP ('X' = Used, '-' = Unused) 0600 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0640 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0680 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 06C0 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0700 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0740 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0780 : XXXXXXXXXXXXXXXX X--------------- ---------------- ---------------- 07C0 : ---------------- ---------------- ---------------- ---------------X All other memory blocks unused. Errors : 0 Warnings : 0 Messages : 86