6131 F0 6132 27 Clear display 6133 CALL CRLF CD 6134 8A 6135 04 6136 XRA A AF Clear ACC 6137 STA 2100H 32 Hour cntr=0 6138 00 6139 21 613A STA 2101H 32 Min.cntr=0 613B 01 613C 21 613D STA2102H 32 Sec.cntr=0 613E 02 613F 21 6140 STA2103H 32 Set flag 6141 03 6142 21 6143 STA 2104H 32 Set intr.check cntr 6144 04 6145 21 6146 MVI A,0C3H 3E C3-. Jmp 6147 C3 6148 STA 2051H 32 This code is to be stored at vector addr.location of TRAP comes load ISR addr at 2052h cw for 8253 6149 51 614A 20 614B LXI H,ISR 21 Load ISR ADDR at 2052H 614C DE 614D 61 614E SHLD 2052H 22 614F 52 6150 20 6151 MVI A,7EH 3E CW for 8253 6152 7E 6153 OUT 1BH D3 6154 1B 6155 MVI A,24H 3E LSB for ctrl 1 of 8253 6156 24 6157 OUT 19H D3 6158 19 6159 MVI A, 0F4H 3E MSB for ctrl of 8253 615A F4 615B OUT 19H D3 615C 19 615D JMP DSPLY C3 Jump to display 615E AC 615F 61 6160 LOOP: LDA 2103H 3A Load flag 6161 03 6162 21 6163 CPI 00H FE Is 1 sec over? 6164 00 6165 JZ LOOP CA If not jump on zero to loop 6166 60 6167 61 6168 LDA 2102H 3A Load sec after 1 sec 6169 02 616A 21 616B ADI 01H C6 616C 01 616D DAA 27 616E CPI 60H FE Is one min. Over? 616F 60 6170 JZ NXT1 CA If yes go to Next1 6171 7D 6172 61 6173 STA 2102H 32 If no store sec. 6174 02 6175 21 6176 XRA A AF Reset flag to 0 6177 STA 2103H 32 6178 03 6179 21 617A JMP DSPLY C3 Jump to DSPLY 617B AC 617C 61 617D NXT1: XRA A AF As 1 min over sec cntr <-00 617E STA 2102H 32 617F 02 6180 21 6181 LDA 2101H 3A 6182 01 6183 21 6184 ADI 01H C6 Increment min cntr by 1 6185 01 6186 DAA 27 6187 CPI 60H FE Is 1 hour over? 6188 60 6189 JZ NXT2 CA If yes for to NXT2 618A 96 618B 61 618C STA 2101H 32 If no store min 618D 01 618E 21 618F XRA A AF Rest flag to 0 6190 STA 2103H 32 6191 03 6192 21 6193 JMP DSPLY C3 Jump to DSPLY 6194 AC 6195 61 6196 NXT2: XRA A AF Min cntr <-00 6197 STA 2101H 32 6198 02 6199 21 619A LDA 2100H 3A Increment min. 619B 01 619C 21 619D ADI 01H C6 Cntr by 1 619E 01 619F DAA 27 61A0 CPI 13H FE If 12 hours over? 61A1 60 61A2 JZ END CA If yes jump tp END 61A3 D6 61A4 61 61A5 STA 2100H 32 If no store hours 61A6 00 61A7 21 61A8 XRA A AF Reset flag to 0 61A9 STA 2103H 32 61AA 03 61AB 21 61AC DSPLY: MVI B,02H 06 Display 2 digits 61AD 02 61AE LDA 2100H 3A Load hours cntr 61AF 00 61B0 21 61B1 MOV E,A 5F Display Hrs on 61B2 CALL NMOUT CD Display 61B3 6C 61B4 03 61B5 MVI A,20H 3E Set cursor to 94th char position 61B6 20 61B7 CALL WRITE CD 61B8 78 61B9 20 61BA LDA 2101H 3A Load min. cntr 61BB 01 61BC 21 61BD MOV E,A 5F Display min on 61BE CALL NMOUT CD Display 61BF 6C 61C0 03 61C1 MVI A, 20H 3E Set cursor to 7th char position 61C2 20 61C3 CALL WRITE 3D 61C4 78 61C5 20 61C6 LDA 2102H 3A Load sec. Cntr 61C7 02 61C8 21 61C9 MOV E,A 5F Display sec on 61CA CALL NMOUT CD Display 1st position 61CB 6C 61CC 03 61CD CALL CRONLY CD 61CE 97 61CF 04 61D0 CALL TEST CD Check for key 61D1 72 61D2 20 61D3 JC LOOP DA Start counting 61D4 60 61D5 61 61D6 END: MVI A,76H 3E If key stop counter and jump to CMD mode 61D7 76 61D8 OUT 1BH D3 61D9 1B 61DA JMP CMDWDP C3 61DB 13 61DC 00 61DD NOP 00 61DE ISR: PUSH B C5 Save all registers 61DF PUSH D D5 61E0 PUSH H E5 61E1 PUSH PSW F5 61E2 LDA 2104H 3A 61E3 04 61E4 21 61E5 INR A 3C 61E6 CPI 28H FE 61E7 28 61E8 JNZ SKIP1 C2 Jump to skip1 61E9 F8 61EA 61 61EB MVI A,00 3E 61EC 00 61ED STA 2104H 32 Reset INTR chk 61EE 04 61EF 21 61F0 MVI A, 01H 3E Counter to 0 61F1 01 61F2 STA 2103H 32 Set flag cntr=1 61F3 03 61F4 21 61F5 JMP SKIP3 C3 Jump to skip3 61F6 FB 61F7 61 61F8 SKIP1: STA 2104H 32 Store INTR chk counter 61F9 04 61FA 21 61FB SKIP3: POP PSW F1 Load all 61FC POP H E1 Registers back 61FD POP D D1 61FE POP B C1 61FF RET C9 Return to min routine END