;****************************************************** ;* ондопнцпюллш дкъ гюохях дюммшу б погс й573пт1,пт2 * ;****************************************************** ; бшгнбш лнмхрнпю йнлоэчрепю "пюдхн-86пй" STARTSCR: EQU 0F82DH ; гюосяй бхденйнмрпнккепю MSG: EQU 0F81AH ; оевюрэ яннаыемхъ мю щйпюм PRINTA: EQU 0F815H ; оевюрэ <ю> б мEу-бхде DMA: EQU 0F800H ; юдпея йнмрпнккепю ОДО PROM: EQU 0A000м ; юдпея накюярх ROMSEL WSTART: JMP 0F86CH ; рнвйю бундю б CLI.(!!) RF2: Jлп PRORF2 ; гюосяй дкъ опнцпюллхпнбюмхъ ; й573пт2 RF1: JMP PRORF1 ; рн фе, дкъ й573пт1 ; ----->>>>> опнцпюллхпнбюмхе й573пт1 <<<<<<---- BUFEND: EQU BUFFER+1023 NTRY: EQU 100 ; вхякн жхйкнб гюохях б ъвеийс PRORF1: LXI D,BUFEND; гюмеярх б пецхярпш мювюкн CALL SET ; х йнмеж астепю, онцюяхрэ щйпюм ONELOC: MVI A,NTRY ; сярюмнбхрэ явервхй жхйкнб STA COUNT ; CYCLE1: MOV A,M ; бгърэ дюммше хг астепю, STAX б ; бшдюрэ ндхм хлоскэя пGл CALL REFRESH; пецемепюжхъ нгс LDA COUNT ; бяе жхйкш гюохях (NTRY) DCR ю ; ндмс ъвеийс йнмвхкхяэ "> STA COUNT ; JNZ CYCLE1 ; мер, опнднкфюел бшдюбюрэ пGл CALL DHCMP ; дю, бяе кх ъвеийх опнидемш ? JZ ENDLOOP; дю. йнмеж опнцпюллхпнбюмхъ INX б ; мер, оепеундхл й гюохях яке- INX м ; дсчыеи ъвеийх погс JMP ONELOC ; ENDLOOP: LXI H,CRLF1; сяоеьмне нйнмвюмхе гюохях CALL MS0 ; х оевюрэ яннаыемхъ #1 LXI м,нй ; ENDL: CALL MSB CALL STARTSCR; гюосяй дхяокеъ JMP WSTART ; бнгпюр б лнмхрнп. ; ----->>> опнцпюллхпнбюмхе й573пт2 <<<<<------ BUFEND: EQU BUFFER+2047 MAXTRY: EQU 50 ; опедек вхякю оношрнй гюохях ; б ндмс ъвеийс. . PRORF2: LXI D,BUFEND; гюдюрэ мювюкэмше оюпюлерпш CALL SET ; х бшйкчвхрэ дхяокеи UNLOC: XRA ю STA COUNT CYCLE2: LDAX б ; янбоюдюер кх яндепфхлне погс ялп л ; я яндепфхлшл астепю ^ JZ FIXIT ; дю, "гюйпеохл" ецн MOV ю,л ; мер, еые ндмю оношрйю <1 ms) STAX б ; оPOцPAMMхPOбAHхе ъвеийх погс CALL REFRESH ; пецемепюжхъ оюлърх LDA COUNT INR ю STA COUNT CPI MAXTRY ; дносярхлш кх еые оношрйх? JNZ CYCLE2 ; дк, онопнасел еые пюг ERROUT: ; мер, бшунд он Oьхайе гюохях PUSH б ; я оевюрэч юдпеяю ъвеийх х LXI H,CRLF1; опедсопефдемхъ. CALL MSG POP б PUSH б MOV ю,б ; оевюрэ дбсуаюирнцн юдпеяю CALL PRINTA ; детейрмни ъвеийх погс POP б MOV ю,я CALL PRINTA LXI H,ERRM JMP ENDL FIXIT: LDA COUNT ; мюидеммне вхякн оношрнй дкъ ADD A ; щрни ъвеийх слмнфхл мю 2 ADD ю ; х еыE пюг мю 2 STA COUNT ; онксвхл 4N оношрнй JZ NEWLOC ; ON: MOV A,M ; бшонкмхрэ 4N ЖХЙКНБ ГЮОХЯХ STAX б ; аег опнбепйх опюбхкэмнярх CALL REFRESH LDA COUNT ; бяе оношрйх йнмвхкхяэ ^ DCR ю STA COUNT JNZ ON ; мер, опнднкфюел NEWLOC: CALL DHCMP ; дю, мюдн опнцпюллхпнбюрэ еые ? JZ ENDLOOP ; мер, бшунд INX м ; д^ аепел якедсчыхи юдпея INX б ; б астепе х б пощс JMP ONLOC ; х опнднкфюел гюохяэ DHCMP: MOV A,D ; япюбмемхе 16-ахрмшу вхяек ялп м RNZ MOV ю, е ялп L RET SFT: LXI H,DMA+8 ; сярюмнбйю оюпюлерпнб MVI л,0 ; гюоперх рэ пюанрс дхяокеъ LXI м,BUFFER; сярюмнбхрэ сйюгюрекх мю LXI B,PROM ; мювюкн астепю х пощс RET REFRESH: ; пецемепюжхъ нгс ^бл PUSH м PUSH PSM LXI м,0 MVI ю,128. 10$: ялп л INX м DCR ю JNZ 10$ POP PSW POP м RET COUNT: DB 0 ; явервхй оношрнй гЮОХЯХ OK: DB 'погс гюопнцпюллхпнбюмн ' , 0Dм , 0юм, 0 ERRM: DB 'ньхайю гюохях ъвеийх ' ,0DH,0AH, 0 CRLF1: DB 0Dм,0Aм,< PROMER>',0 ORG 6000м BUFFER: DS 2048 ; накюярэ астепю дюммшу END