ÚVOD | Novinky | 8 Bitů | Příslušenství | Drobnosti | TTL | Kontakt
SAPI-1 | ONDRA | PMI-80 | PMD-85 | klony PMD-85 | klony SM50/40 | PETR | PLAN-80A | IQ151 | TNS | FK-1 | HVĚZDA | SP 830 | PCS 1-QR6000
ZPS | Technické prostředky | Programové vybavení | Dokumentace
Zdrojový kód byl získán pomocí zpětného inženýrství.
; OVLADAC PRO XY4130 PRES PORT3 NA JPR-1 ; PRO SAPI-1 ZPS-2 A MONITOR V5.0 ;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ; TITLE OVLADAC PRO XY4130 NA SAPI-1 ZPS-2 MON V5.0 ; ; KONSTANTY CR EQU 0DH LF EQU 0AH BEL EQU 7 CTRLC EQU 3 ; ;PERIFERIE PORT2 EQU 2C00H ; ; SLUZBY MONITORU IOCHK EQU 0115H ; I/O BYT CHEK <A> IOSET EQU 0118H ; I/O BYT SET <C> IODEF EQU 011EH ; DEFINICE UZIVATELSKYCH PERIFERII NEXT EQU 0139H ; PREDANI OVLADANI MONITORU CINCR EQU 013FH ; ECHO+ANALYZA EXFLG EQU 014BH ; EXTERNI RIZENI FLAGU ; ; ROZSIRENE SLUZBY MONITORU V5.0 TX EQU 0151H ; ZOBRAZENI NASLEDUJICIHO TEXTU ; ; ADRESI V PAMETI ROM EQU 1800H ;ADRESA V ROM RAM EQU 4290H ;ADRESA V RAM ;******************************** ; START PROGRAMU ; ASEG ORG ROM ; ; TABULKA SKOKU JMP ZNAKP ; TISK JEDNOHO ZNAKU <C> JMP ZAVOV ; ZAVED OVLADAC JMP VPOZ ; NASTAVI VYCHOZI POZICI PO ZALOZENI PAPIRU ; X V <DE>, Y V <BC> PRO TEXT ? JMP AMOVA ; ABSULUTNI PRESUN X V <DE>, Y V <BC> JMP AVECTA ; ABSOLUTNI VEKTOR X V <DE>, Y V <BC> JMP APOIN ; ABSOLUTNI BOD X V <DE>, Y V <BC> JMP RMOVA ; RELATIVNI PRESUN X V <DE>, Y V <BC> JMP RVECTA ; RELATIVNI VEKTOR X V <DE>, Y V <BC> JMP RPOIN ; RELATIVNI BOD X V <DE>, Y V <BC> JMP NASZN ; NASTAV VELIKOST PISMA <HL> ; SIXX, SIXY, SIYX, SIYY JMP TESTT ; TEST TISKARNY (VYTISKNE ZNAKY 10H AZ FFH) JMP NTABGZ ; NASTAV ADRESU GENERATORU ZNAKU <HL> LHLD ATABGZ ; VRAT ADRESU GENERATORU ZNAKU <HL> RET ; ;ZAVEDENI OVLADACE ZAVOV: MVI C,13 ; SYSTEMOVA TISKARNA LXI D,ZNAKP ; ADRESA OVLADACE CALL IODEF ; NASTAV CALL IOCHK ; NACTI IOBYT ANI 10111111B ORI 10000000B ; L=L .. TISKARNA MOV C,A CALL IOSET ; NASTAV IOBYT LXI H,PVZN CALL NASZN ; NASTAV POCATECNI VELIKOST ZNAKU LXI H,TABGZ ; ADESA TABULKY ZNAKU V EPROM SHLD ATABGZ ; ULOZ AKTUALNI TABULKU ZNAKU CALL TX ; ZOBRAZ TEXT DB CR,LF DB 'L=XY413','0'+80H JMP HOME ; VYCHOZI HODNOTY PRO VELIKOST TEXTU PVZN: DW 4 ; SIXX DW 0 ; SIXY DW 0 ; SIYX DW 4 ; SIYY ; ;VSTUP DO TISKUVE RUTINY, ZNAK JE V <C> ; ZNAKP: PUSH B PUSH D PUSH H CALL ZNAKC POP H POP D POP B RET ; NTABGZ: SHLD ATABGZ ; UKOZ NOVOU ADRESU GENERATORU ZNAKU <HL> RET ; NASZN: LXI D,SIXX ; NASTAV NOVOU VELIKOST ZNAKU MVI B,8 NASZN1: MOV A,M STAX D INX D INX H DCR B JNZ NASZN1 RET ; ; ULOZI <DE> NA TXTSX, <BC> NA TXTSY A TXTNS NASTAVI NA 1 ; SOURADNICE V TXTSX A TXTSY SLIUZI PRO TISK TEXTU ; ULZXY: XCHG ; PROHOT <DE> A <HL> SHLD TXTSX ; <DE> ULOZ NA TXTSX XCHG ; PROHOT <DE> A <HL> MOV H,B MOV L,C ; <BC> DO <HL> SHLD TXTSY ; <BC> ULOZ NA TXTSY MVI A,1 STA TXTNS ; PRIZNAK NOVYCH SOURADNIC RET ; AMOVA: CALL ULZXY ; ULOZ X A Y MOVA: CALL PEN0 ; ZVEDNI PERO JMP ABS0 ; ADSULUTNI PRESUN ; AVECTA: CALL ULZXY ; ULOZ X A Y VECTA: CALL PEN1 ; SPUST PERO JMP ABS0 ; ADSULUTNI PRESUN ; APOIN: CALL ULZXY ; ULOZ X A Y CALL MOVA ; ADSULUTNI PRESUN JMP PENP ; UDELEJ TECKU ; RVECTA: CALL ULZXY ; ULOZ X A Y CALL PEN1 ; SPUST PERO JMP RELA ; RESATIVNI PRESUN ; ; NASTAVI PISATKO DO VYCHOZI POLOHY A POZCE DANE <BC> A <DE> ; VPOZ: CALL ULZXY ; ULOZ X A Y VPOZ1: LXI H,1414H ; NASTAV CASOVACI KONSTANTY SHLD TKON1 SHLD TKON2 ; ;NASTAVY POCATECNI KONSTATY ;TKON1 = 14H KONSTANTA PRO CASOVOU SMICKU 1 ;TKON2 = 14H KONSTANTA PRO CASOVOU SMICKU 2 ;TKON3 = 14H KONSTANTA PRO CASOVOU SMICKU 3 ; PUSH D ; SORADNICE X DO ZASOBNIKU PUSH B ; SORADNICE Y DO ZASOBNIKU MVI A,1 STA SPEN ; SPUST PERO ????? LXI B,8 MOV D,B MOV E,C ; "8" DO X A Y CALL RELA1 ; RELATIVNI PRESUN -> SINCHRONIZOVAT MOTORY LXI H,0D08H SHLD TKON1 ; ;NASTAVY KONSTATY ;TKON1 = 08H KONSTANTA PRO CASOVOU SMICKU 1 ;TKON2 = 0DH KONSTANTA PRO CASOVOU SMICKU 2 ;TKON3 = 14H KONSTANTA PRO CASOVOU SMICKU 3 ; LXI H,06A4H ; 1610, 16.1 CM? SHLD STPX ; OKAMZITA POLOHA X LXI H,04B0H ; 1200, 12.0CM? SHLD STPY ; OKAMZITA POLOHA Y POP B PUSH B ; OBNOV Y DO <BC> LXI D,0 ; X NA 0 CALL MOVA ; PRESUN POP B PUSH B ; OBNOV Y DO <BC> LXI D,50H ; 80, 8MM? NASTAV Y CALL MOVA ; PRESUN XRA A STA STPX ; VYNULUJ SPODNI BYTE OKAMZITE POLOHZ NA OSE X POP B POP D ; OBOV ZADANE X A Y CALL MOVA ; PRESUN ; ;NASTAVY POCATECNI KONSTATY ;DIAK = 00H PRIZNAK DIAKRITIKY, BUDE ZNAMENKO ;ZBS = 00H ZNAK BS ;DIAK2 = 00H PRIZNAK DIAKRITIKY, BYLO ZNAMENKO ;GZNAK = 00H PRIZNAK GRAFICKEHO ZNAKU ;TXTNS = 00H PRIZNAK NOVYCH SURADNIC PRO TISK TEXTU ;RADKO = 10H ROZSTUP MEZI RADKY ;WIDE = 06H DRUH MEZERY MEZI ZNAKY ; MVI A,0AH STA TKON3 MVI A,6 STA WIDE ; TISKOVA MEZERA DCR A LXI H,DIAK ; PRIZNAK DIAKRITIKY VPOZ2: MVI M,0 INX H DCR A JNZ VPOZ2 ; POKUT NENI NULA TAK ZNOVU MVI A,10 STA RADKO ; ROZESTUP MEZI RADKY RET ; ; ABSOLUTNI A RELATIVNI PRESUN ; RMOVA: CALL ULZXY ; ULOZ X A Y RELA1: CALL PEN0 ; ZVEDNI PERO RELA: LHLD STPX ; K X PRICTI RELATIVNI DX DAD D ; = NOVA X XCHG LHLD STPY ; TOTEZ S Y DAD B MOV B,H MOV C,L ; A MUZES UDELAT ABS. PRESUN ABS0: LHLD STPX ; DE = ZADAVE XZ XCHG ; HL = SKUTECNE X SHLD STPX ; DE <=> HL ; X <=> XZ SHLD NOPX ; A ULOZ NA NOVOU POZ. TISKU CALL SMR ; ZJISTI SMER POSUVU PRO X PUSH H ; SCHOVEJ ROZDIL X A XZ PUSH B ; SCHOVEJ YZ MOV C,A ; C = SMER POSUVU POP D ; DE = PREDESLE BC TJ. ZADANA YZ LHLD STPY ; HL = SKUTECNA Y XCHG ; DE <=> HL ; Y <=> YZ SHLD STPY SHLD NOPY ; ULOZ CALL SMR ; A ZJISTI SMER PRO Y RLC RLC RLC RLC ; DO VYSICH 4 BITU A MOV B,A ORA C ; SLOZ S C STA DIRE ; <= SMER DO Y A DO X POP D ; OBNOV ROZDIL X A XZ RZ ; JSOU JI OBA POVUNY 0 VRAT SE MOV A,L SUB E MOV A,H SBB D ; TEST, KTERY POSUN JE VETSI MOV A,C ; A = SMER POSUNU A JC DALX ; SKOC PROTOZE (YZ-Y)<(XZ-X) XCHG ; DE <=> HL ; (XZ-X) <=> (YZ-Z) MOV A,B ; A = SMER DO Y DALX: STA DIR1 SHLD DIFF LXI H,14H ; MALE POZASTAVENI CALL ZPOZ0 MVI A,29H STA ACCE ; ROZBEHOVA RYCHLOST MOV B,D ; BC = ROZDIL MOV C,E XRA A SUB E MOV L,A MVI A,0 SBB D MOV H,A ; HL = DE * -1 XRA A MOV A,D RAR MOV D,A MOV A,E RAR MOV E,A ; DE = DE / 2 ABS1: PUSH H ; SCHOVEJ HL A DE PUSH D XCHG ; DE <=> HL MOV H,B MOV L,C ; HL = BC DAD H DCX H ; HL = HL * 2 - 1 DAD D ; HL = HL + DE LXI H,ACCE JNC ABS2 ; JE-LI HL >= 0 SKOC LDA TKON3 CMP M JZ ABS2 DCR M ABS2: MVI A,28H SUB M SUB C MVI A,0 SBB B JC ABS3 INR M ABS3: LHLD DIFF POP D DAD D XCHG POP H PUSH H DAD D LDA DIR1 JNC ABS4 XCHG LDA DIRE ABS4: PUSH D CALL ELEM DCX B MOV A,B ORA C POP D POP H JNZ ABS1 RET ; SMR: MOV A,L ; VRATI A = 0 PRO SKUT. = ZADANE ; A = 8 PRO SKUT. < ZADANE ; A = A PRO SKUT. > ZADANE ; ; (VRATI A = 0 PRO SKUT. = ZADANE MINIGRAF) ; ( A = 1 PRO SKUT. < ZADANE MINIGRAF) ; ( A = F PRO SKUT. > ZADANE MINIGRAF) SUB E MOV L,A ; L = L - E MOV A,H SBB D MOV H,A ; H = H - D - PREDCHOZI ZNAM. DAD H ; HL = HL * 2 JNC SMVL ; -> JE-LI HL KLADNE XRA A ; ZAPORNE - PREVED NA KLADNE SUB L MOV L,A MVI A,0 SBB H MOV H,A ; HL = -1 * HL MVI A,0AH ; PRIZNAK A NAVRAT (MINIGRAF MVI A,0FH) RET SMVL: MOV A,H ORA L RZ ; JE-LI HL = 0 VRAT SE MVI A,8 ; (MINIGRAF MVI A,01H) RET ; JINAK PRIZNAK A NAVRAT ; ; ZANAK PRO TISK JE V <C> ; ; VZYNAM RIDICICH ZNAKU ; ; 00H - ZAPNE REZIM GRAFICKEHO ZNAKU ; 08H - ZNAK ZPET ; 0AH - NOVY RADEK ; 0CH - NOVA STRANKA ; 0DH - NAVRAT VOZU ; 0EH - ZAPNI DIAKRITIKU ; 0FH - VYPNI DIARITIKU ; ZNAKC: LDA TXTNS ; PRIZNAK NOVYCH SOURADNIC PRO TEXT DCR A ; PRIZNAK -1 JNZ ZNAKC1 ; NEJSOU NOVE SOURADNICE - NENI NULA STA TXTNS ; NULUJ PRIZNAK PUSH B ; SCHOV ZNAK CALL HOME ; NASTAV PISATKO NA VYCHOZI SOURADNICE POP B ; OBNOV ZNAK ZNAKC1: LDA GZNAK ; 0 <> GRAFICKY ZNAK ORA A JNZ GRAFZ ; TISK GRAFICKEHO ZNAKU ORA C JZ NGZ ; NASTAV ZE BUDE GRAFICKY ZNAK, ZNAK BYL 00H CPI 10H JNC KOI ; POKUT ZNAK VETSI NEZ 10H -> TISK CPI 0CH JZ STRAN ; NOVA STRANKA CPI CR JZ PCR ; NAVRAT VORU CPI LF JZ PLF ; NOVY RADEK CPI 0FH JZ DIAKS ; NYPNE DIAKRITYKU CPI 0EH JNZ HBS ; TEST NA BS MVI A,1 DB 6 ; (MVI) DIAKS: XRA A ; MVI B,0AFH ; PRI PRIMEM PRUCHODU ZAPNE DIAKRITIKU STA DIAK ; ULOZ ZDA JDE O NORMANI ZNAK NEBO S DIAKRITIKOU ; 0 = JE ZNAK S DIAKRITIKOU ; 0 <> JE NORMANI ZNAK RET ; GRAFZ: MOV A,C PUSH PSW CALL ZNAK4 ; TISK 1 SEGMETU ZNAKU, DATA V <A> POP PSW ANI 80H RZ ; DALSI SEGMENT ZNAKU XRA A STA GZNAK ; ZRUS T TIS GAFICKEHO ZNAKU JMP ZNAK3 ; MEZI ZNAKOVA MEZERA ; ; NAVRAT VOZU (CR) ; PCR: LDA RADKO ; NACTI RADKOVANI MOV B,A LHLD SIYX ; VELIKOST PISMA SIYX XCHG ; A DO <DE> LHLD TXTSX ; NACTI POLOHU TEXTU X CALL HLMDE ; SPOCITEJ MOV A,H ORA A JM STRAN ; JE-LI ZAPORNA X, NOVA STRANKA SHLD TXTSX ; ULOZ NOVOU POLOHU TEXTU X LDA RADKO ; NACTI RADKOVANI MOV B,A LHLD SIYY ; VELIKOST PISMA SIYX XCHG ; A DO <DE> LHLD TXTSY ; NACTI POLOHU TEXTU Y CALL HLMDE ; SPOCITEJ MOV A,H ORA A JM STRAN ; JE-LI ZAPORNA X, NOVA STRANKA SHLD TXTSY ; ULOZ NOVOU POLOHU TEXTU Y JMP PLF1 ; A NOVY RADEK ; ; NOVY RADEK (LF) ; PLF: LHLD TXTSY ; NACTI SOURADNICI TEXTU Y PLF1: MOV B,H MOV C,L ; DEJ JI DO <BC> LHLD TXTSX ; NACTI SOURADNICI TEXTU X XCHG ; DEJ JI DO <DE> JMP MOVA ; PRESUN ; ; ZALOZEZENI NOVEHO PAPIRU ; STRAN: XRA A ; MODE PRO DISPLEJ MOV C,A ; NORMALNI ZNAK CALL EXFLG CALL IOCHK ; NACTI IOBYT MOV C,A ; IOBYT DO <C> PUSH B ; USCHOVEJ IOBYT A PUVODNI OBSAH EXFLAG ANI 11111100B ORI 1 ; C=C POUZE KLAVESNICE S DISPLEJEM MOV C,A CALL IOSET ; NASTAV CALL PEN0 ; ZVEDNI PERO CALL TX ; ZOBRAZ TEXT DB CR,LF,BEL,'ZALOZ ' DB 'PAPIR A STISKNI' DB ' KLAVESU',CR,LF+80H CALL CINCR ; CEKEJ NA STISK KLAVESI POP B ; OBNOV IOBYT A PUVODNI OBSAH EXFLAG PUSH PSW ; SCHOV STISKLU KLAVESU CALL IOSET ; OBNOV PUVODNI IOBYT MOV A,B MVI C,0 ; MODE PRO DISPLEJ CALL EXFLG ; OBNOV PUVODNI TYP ZNAKU POP PSW ; OBNOV STISKLU KLAVESU CPI CTRLC JZ NEXT ; POKUT ^C NAVTAT DO MONITORU HOME: LXI B,99CH ; (2460 24.6CM?) POCATECNI HODNOTA OSY Y MOV H,B MOV L,C SHLD TXTSY ; ULOZ Y LXI H,0 ; POCATECNI HODNOTA OSY X SHLD TXTSX ; ULOZ NOVE X XCHG ; A X DO <DE> JMP VPOZ1 ; NASTAV VYHOZI POZICI PO ZALOZENI PAPIRU ; ; HLEDANI ZNAKU S DIAKRITIKOU (KOI-8CS) ZNAK JE V <C> ; KOI: MVI A,11111000B ; JEN HORNICH 5 BITU ANA C CPI 18H RZ ; POKUT ZNAKY 18H AZ 1FH NAVRAT MOV A,C ; ZNAK DO <A> CPI 80H JC HBS ; JE MENSI NEZ 7FH -> KOI-7, TISK SUI 80H ; <A> - 80H CPI 40H JC DIKZ ; JE MENSI NEZ 3FH -> 80H-BFH, TISK DIAKRITYKY MAL. PIS. SUI 40H ; <A> - 40H -> C0H-FFH LXI H,TKOI2 ; ADESA KONVERZNI TABULKY VEL. PIS ADD L MOV L,A MOV A,H ACI 0 MOV H,A ; SPOCITEJ ADRESU V TABULCE CALL DIAKS ; ULOZI PRIZNAK DIAKRITIKY (0) MOV A,M ; DATA Z TABULKY ORA A JZ NEDIK ; NENI ZNAK S DIAKRITIKOU PUSH PSW ; SCHOV ZNAK Z TABULKY RLC RLC RLC ; O 3 BITI V LEVO ANI 00000111B ; JEN SPODNI 3 BITY ORI 00011000B ; PRIDEJ BIT 3 A 4 TJ. 18H AZ 1FH CALL HBS POP PSW ; OBNOV ZNAK Z TABULKY ANI 00111111B ; JZ NEDIK ; POKUT 3F TAK MEZERA ORI 01000000B ; JINAK PRIDEJ BIT 6 HBS: PUSH H ; SCHOV <HL> CPI 8 JNZ ZNAK10 ; POKUT NENI 8 JDEM TISKNOUT ZNAK Z <A> STA ZBS ; ULOZ BS POP H ; OBNOV <HL> RET ; NEDIK: MVI A,20H ; NENI ZNAK S DIAKRITIKOU? TAK MEZERA JMP HBS ; ; TISKNE DIAKRITICKA ZNAMENKA ; DIKZ: CALL TSTBS ; TEST NA BS MOV A,C ; ZNAK DO <A> MVI B,5 ; POCITALO NASTAV NA 5 DIKZ1: RAR ; O BIT V PRAVO PRES CY JNC DIKZ3 ; NENI-LI 1 TAK DALSI POKUS PUSH B PUSH PSW LXI H,DIKZT ; ADRESA DIAKRITICKYCH ZNAKU MOV A,B ; POCITALO DO <A> ADD A ; * 2 ADD A ; * 4 . ADD L MOV L,A MOV A,H ACI 0 MOV H,A ; PRICTI K ADRESE GENERATORO DIAK ZNAMENEK MVI D,4 ; BUDOU DVE USECKY TJ. 4 KROKY DIKZ2: MOV A,M ; NACTI DATA CALL ZNAK4 ; TISK 1 SEGMETU ZNAKU, DATA V <A> INX H DCR D JNZ DIKZ2 ; POKUT NENI 0 TAK DALSI POP PSW POP B DIKZ3: DCR B JP DIKZ1 ; POKUT JE PARITA TAK DASLI KOLO JMP ZNAK3 ; MEZI ZNAKOVA MEZERA ; ;ODECTE KRAT <DE> OD <HL> ; HLMDE: XRA A ; DO <A> 0 ORA B RZ ; JE-JI B 0 NAVRAT XRA A SUB E MOV E,A MVI A,0 SBB D MOV D,A ; <DE>=1-<DE> ... DVOJKOVY DOPLNEK ? HLMDE1: DAD D ; <HL>=<HL>-<DE> DCR B RZ ; JE-LI O NAVRAT JMP HLMDE1 ; TSTBS: PUSH H LXI H,ZBS ; DO <HL> ADRESU PRIZNAKU BS XRA A ; ZNULUJ <A> CMP M ; POROVNEJ MOV M,A ; ZNULUJ PRIZNAK BS CZ NPOZ ; POKUT NEBYL BS NOVA POZICE POP H RET ; ;NASTAVY NOVOU POZICI ; NPOZ: LHLD NOPX SHLD PREX LHLD NOPY SHLD PREY RET ; ; TISK ZNAKU, ZNAK JE V <A> ; ZNAK10: PUSH PSW LXI H,DIAK2 ; PRIZNAK DIAKRYTIKY 2 XRA A CMP M JZ ZNAK11 ; POKU JE NULA SKOK NA TISK MOV M,A ; A ULOZ NULU MVI A,22H ; DO PROSTRED ZNAKU CALL ZNAK4 ; TISK 1 SEGMETU ZNAKU, DATA V <A> CALL NPOZ ; NOVA POZICE O PUL ZNAKU ZNAK11: POP PSW LXI H,ZBS ; ADRESU PRIZNAKU BS ANI 7FH ; JEN KOI-7 MOV C,A ; ZNAK DO <C> CALL TSTBS ; TEST NA BS LDA DIAK ; NECTI PRIZNAK DIAKRITZKY ORA A JZ ZNAK12 ; NENI TAK TISK MOV A,C CPI 7BH JC ZNAK12 ; JE MENSI NEZ 7BH TJ. {, TAK TISK ADI 5 ; PRICTI 5 MOV C,A ; NOVY ZNAK DO <C> INR M ; ULOZ HO NA NIC ZNAK12: MOV A,C ; ZNAK DO <A> SUI 10H ; JE JI MENSI NEZ 10H JC ZNAK2 ; SKOC ANI 0F8H ; NE, NULUJ NEJNISI 3 BZTY RAR RAR ; ROTACE PRES CY O DVA BITY VPRAVO LHLD ATABGZ ; ARESA TABULKY ZNAKU ADD L ; A PRICTI K NIZSI ADRESE TABGZ ZNAKU MOV L,A ; A DOMVI A,0 ; <A>=0 ADC H ; A PRICTI CY K VYSSI ADRESE TABGZ ZNAKU MOV H,A ; A DO MOV A,M INX H MOV H,M MOV L,A ; DO <HL> ADRESU GENERATOTU ZNAKU MOV A,C ; OBVOV ZNAK ANI 7 ; POUZE 3 NEJNIZSI BITY MOV C,A JZ VYZN ; JSOU-LI 0 SKOC SKZN: MOV A,M ; NEJSOU ORA A INX H JP SKZN ; TESTUJ NEJVYSI BIT DCR C JNZ SKZN ; POKUT NENI 0 TAK DALSI ZNAK ; TISKOVA DATA VYBRANA VYZN: MVI A,8 ; ??? NASTAV VYCHOZI POLOHU PRO TISK ??? CALL ZNAK4 ; TISK 1 SEGMETU ZNAKU, DATA V <A> ZNAK1: MOV A,M ; CTI TISKONA DATA CALL ZNAK4 ; TISK 1 SEGMETU ZNAKU, DATA V <A> MOV A,M ; ZNONU NACTI TISKONA DATA INX H ; UKAZOVATKO +1 ORA A JP ZNAK1 ; POKUNT NENI PARITA TAK DALSI SEGMENT ZNAKU ZNAK2: POP H ZNAK3: PUSH H LDA WIDE ; TISKOVA MEZERA ANI 3FH MVI C,0 CALL ZNAK5 POP H RET ; NGZ: INR A STA GZNAK ; NASTAV PRIZNAK PRO GRAFICKY ZNAK <1> CALL TSTBS ; TEST NA BS ; ; KRESLI VLASTNI USECKU ZNAKU ; KPYYYXXX ; !! ! +- 0 AZ 4 (7) ; !! +---- 0 AZ 7 ; !+------ 0 - PRESUN, 1 - TISK ; +------- 1 - POSLEDNI ZNAK ; ZNAK4: MOV C,A ANI 7 ; OSA X ZNAK5: PUSH H PUSH D PUSH PSW LHLD SIXX XCHG LHLD PREX CALL ZNAK8 XCHG MOV A,C ANI 38H ; OSA Y RAR RAR RAR LXI H,ZBS ADD M MOV B,A LHLD SIYX XCHG CALL ZNAK8 POP PSW PUSH H LHLD SIXY XCHG LHLD PREY CALL ZNAK8 MOV A,B XCHG LHLD SIYY XCHG CALL ZNAK8 PUSH H MOV A,C ANI 40H ; PERO JZ ZNAK6 LHLD NOPX XCHG LHLD NOPY MOV B,H MOV C,L LDA SPEN ORA A CZ MOVA POP B POP D CALL VECTA JMP ZNAK7 ZNAK6: CALL PEN0 POP H SHLD NOPY ; POLOHA PRISTIHO TISKU Y POP H SHLD NOPX ; POLOHA PRISTIHO TISKU X ZNAK7: POP D POP H RET ; ZNAK8: INR E ; POCITA VELIKOST ZNAKU DCR E RZ PUSH H LXI H,0 ZNAK9: DCR A JM ZNAK0 DAD D JMP ZNAK9 ZNAK0: POP D DAD D RET ;----------------------------------------------------- ; PROVED KROK S MOTORY ;----------------------------------------------------- ; SMR VRATI A = 0 PRO SKUT. = ZADANE 0000 ; A = 8 PRO SKUT. < ZADANE 0100 ; A = A PRO SKUT. > ZADANE 1010 ; ; 76543210 ; <A> YYYYXXXX ; ;PRIPOJENI XY41XX K PORTU 3OUT NA JPR-1 ; ; PORT2 OUT0 - PERO ; PORT2 OUT1 - X/Y ; PORT2 OUT6 - +/- ; PORT2 OUT7 - KROK ; ELEM: LHLD SMOT ; NACTI STAV MOTORU JE V MOV H,A ; CO DELAT V DO LDA SMOT ; NACTI STAV MOTORU <A> ANI 01000100B ; JEN BIT 6 A 2 ORA H ; SLOZ PRES OR STA SMOT ; ULOZ STAV MOTORU XRA A ; VYVUJ <A> MOV H,A ; A TAKY LDA ACCE ; RICHLOST PRI ROZBEHU RAR ; V PRAVO PRES CY TJ. /2 MOV L,A ; A DO JMP ROSAY ; JDEM CUKAT S MOTORY ; RPOIN: CALL ULZXY ; ULOZ X A Y CALL PEN0 ; DVEDNI PERO CALL RELA ; RELATIVNI PRESUN PENP: CALL PEN1 ; SPUST PERO ;PERO NAHORU PEN0: LDA SPEN ; NACTI STAV PERA DCR A ; STAV PERA -1 RNZ ; PERO ZVEDNUTO - NAVRAT LHLD TKON1 ; NACTI CASOVACI KONSTANY 1 A 2 DO <HL> JMP PENZ ; ZVEDNI PERO V <A> 00H ;PERO DOLU PEN1: LDA SPEN ; NACTI STAV PERA DCR A ; STAV PERA -1 RZ ; PERO DOLE - NAVRAT ; V <A> FFH LHLD TKON2 ; NACTI CASOVACI KONSTANY 2 A 3 DO <HL> PENZ: ANI 1 ; JEN NEN BIT 0 STA SPEN ; ULOZ STAV PERA MOV A,L STA SPED ; NASTAV AKTUALNI RICHLOST (K3) LXI H,01F4H ; PAUZA PRO PERO ORI 80H ; KROK NA 1 TJ. BIT 7 STA PORT2 ; VYSTAV STAV PERA NA PORT JMP ZPOZ0 ; A PAUZA ; ;RESIME OSU Y ROSAY: PUSH H ; ULOZ "RYCHLOSTI" LHLD SPEN ; NACTI STAV PERA A MOTORU DO <HL> MOV A,H ; STAV MOTORU DO <A> RLC ; O BIT V LEVO [65432107] JNC ROSAX ; POKUT BIT 7 [0] TAK BUDEM RESIT OSU X XRI 80H ; EX-OR S <A> 10000000 JP ROSAX ; POKUT BIT 6 [1] TAK BUDEM RESIT OSU X MOV H,A ; SCHOV DATA ANI 40H ; JEN HORNI 4 BITY ORI 2 ; NASTAV OSU Y NA XY JE TO X CALL KROK ; UDELEJ KROK MOV A,H ; OBNOV DATA ;RESIME OSU X ROSAX: RLC RLC RLC RLC ; PRETOCIT NA DATA PRO OSU X [21076543] JNC WAITM ; POKUT BIT 3 [0] TAK BUDEME RESIT PAUZU XRI 0C0H ; EX-OR S <A> 11000000 JP WAITM ; POKUT BIT 2 [1] TAK BUDEME RESIT PAUZU MOV H,A ; SCHOV DATA ANI 40H ; JEN HORNI 4 BITY CALL KROK ; UDELEJ KROK MOV A,H ; OBNOV DATA WAITM: RLC RLC RLC ; DATA PRO RIZENI MOTORU DO VYCHOZI POLOHY [76543210] STA SMOT ; A ULOZ POP H ; OBNOV "RYCHLOSTI" ; ;SPOZDOVACI SMICKA ; ZPOZ0: LDA SPED ; AKTUALNI RYCHLOST ZPOZ1: DCR A JNZ ZPOZ1 DCX H MOV A,H ORA L JNZ ZPOZ0 RET ; KROK: ORA L ; PRIPOJ STAV PERA STA PORT2 ORI 80H STA PORT2 ; UDELJ KROK RET ; ; TEST TISKKARNY ; VYTISKNE ZNAKZ OD 10H PO FFH ; TESTT: MVI C,0CH CALL ZNAKC1 ; NOVOU STRANKU MVI C,10H ; OD ZNAKU 10H TESTT1: PUSH B ; SCHOV ZNAK CALL ZNAKC1 ; TISKNI ZNAK LDA ZBS ; NACTI BS NEBO NECO JINEHO ORA A MVI C,20H ; MEZERA CNZ ZNAKC1 ; POKUT JE BS TAK TISK MVI C,20H ; MEZERA CALL ZNAKC1 ; VYTISKNIJI POP B ; VRAT ZNAK INR C ; DALSI ZNAK RZ ; POKUT JE VSECH 255 ZNAKU -> NAVRAT MVI A,0FH ANA C ; JEN SPODNI 4 BITY JNZ TESTT1 ; POKUT NENI NULA -> DALSI ZNAK PUSH B MVI C,0DH CALL ZNAKC1 ; JINAK NOVY RADEK POP B JMP TESTT1 ; ;DIAKRITICKE ZNAMENKA PRO KOI-8CS ; DIKZT: DB 38H,6AH,28H,7AH,3AH,6CH,2AH,7CH DB 28H,5AH,18H,6AH,2AH,5CH,1AH,6CH DB 18H,4AH,08H,5AH,1AH,4CH,0AH,5CH ; ;TABULKA PRO DIAKRITICKE ZNAKZ KOI-8CS ; TKOI2: DB 00H,21H,00H,63H,64H,65H,00H,00H DB 00H,29H,0F5H,00H,00H,00H,35H,2FH DB 00H,00H,72H,73H,74H,35H,00H,25H DB 00H,39H,7AH,00H,40H,00H,00H,00H DB 00H,01H,00H,43H,44H,45H,00H,00H DB 00H,09H,0D5H,00H,00H,00H,15H,0FH DB 00H,00H,52H,53H,54H,15H,00H,05H DB 00H,19H,5AH,00H,40H,00H,00H,00H ; ;GENERATOR ZNAKU ;*************** ; TABGZ: DW TAB10,TAB20,TAB20,TAB28,TAB30 DW TAB38,TAB40,TAB48,TAB50,TAB58 DW TAB60,TAB68,TAB70,TAB78,TAB80 ; TAB10: DB 18H,68H,71H,73H,6CH,5CH,53H,51H,0D8H ;10H, VELKE KOLECKO DB 10H,70H,74H,54H,0D0H ;11H, CTVEREC DB 20H,72H,64H,52H,0E0H ;12H, KOSOCTVEREC DB 14H,72H,50H,0D4H ;13H, SIPKA DOLU (TROUHELNIK) DB 12H,70H,74H,0D2H ;14H, SIPKA DOLU (TROUHELNIK) DB 12H,72H,20H,0E4H ;15H, VELKE PLUS DB 10H,74H,30H,0D4H ;16H, VELKY KRIZEK DB 12H,72H,20H,64H,14H,70H,10H,0F4H ;17H, VELKA HVEZDICKA TAB20: DB 80H,3AH,5AH,0AH,0CAH,31H,7AH DB 32H,0FBH,39H,49H,0BH,7BH,2CH,68H,18H,0DCH DB 10H,53H,5CH,63H,61H,68H,71H DB 74H,3AH,0CAH,7CH,39H,70H,69H DB 72H,79H,1BH,52H,4BH,54H,0DBH DB 0CH,68H,70H,79H,7AH,73H,6BH DB 50H,49H,4AH,0DCH,3BH,0F2H TAB28: DB 3BH,69H,59H,0CBH,39H,6BH,5BH DB 0C9H,11H,73H,24H,60H,31H,0D3H DB 20H,64H,32H,0D2H,12H,0C1H,20H DB 0E4H,0AH,0CAH,0FCH TAB30: DB 7CH,34H,54H,4BH,49H,50H,70H DB 79H,7BH,0F4H,29H,7BH,0CBH,30H DB 79H,7BH,74H,6CH,48H,0CCH,30H DB 79H,7BH,74H,6CH,63H,5CH,54H DB 4BH,49H,0D0H,0BH,7BH,58H,0DCH DB 10H,49H,4BH,54H,5CH,63H,60H DB 78H,0FCH,34H,7BH,79H,70H,50H DB 49H,4BH,54H,5CH,63H,61H,0D8H,7CH,0F8H TAB38: DB 09H,50H,58H,61H,63H,6CH,74H DB 7BH,79H,70H,68H,61H,63H,5CH DB 54H,4BH,0C9H,10H,49H,4BH,54H DB 74H,7BH,79H,70H,68H,61H,63H DB 0ECH,1AH,5AH,2AH,0EAH,01H,52H DB 22H,0E2H,33H,61H,0D3H,28H,6CH DB 18H,0DCH,31H,63H,0D1H,30H,79H DB 7BH,74H,6CH,5AH,52H,0AH,0CAH TAB40: DB 68H,71H,73H,6CH,54H,4BH,4AH DB 51H,61H,6AH,63H,0CBH,7AH,4CH DB 21H,0E3H,78H,7BH,74H,6CH,63H DB 60H,63H,5CH,54H,4BH,0C8H,34H DB 7BH,79H,70H,50H,49H,4BH,0D4H DB 78H,7BH,74H,54H,4BH,0C8H,3CH DB 78H,48H,4CH,20H,0E2H,78H,7CH,20H,0E2H DB 34H,7BH,79H,70H,50H,49H,4BH,54H,5CH,0DAH TAB48: DB 78H,3CH,4CH,20H,0E4H,09H,4BH,4AH DB 7AH,79H,0FBH,10H,49H,4BH,54H DB 0FCH,78H,3CH,60H,0CCH,38H,48H DB 0CCH,78H,62H,7CH,0CCH,78H,4CH DB 0FCH,09H,50H,70H,79H,7BH,74H,54H,4BH,0C9H TAB50: DB 78H,7BH,74H,6CH,63H,0E0H,09H DB 50H,70H,79H,7BH,74H,54H,4BH DB 49H,1AH,0CCH,78H,7BH,74H,6CH DB 63H,60H,0CCH,10H,49H,4BH,54H DB 5CH,63H,61H,68H,70H,79H,7BH DB 0F4H,38H,7CH,3AH,0CAH,38H,50H DB 49H,4BH,54H,0FCH,38H,4AH,0FCH DB 38H,49H,6AH,4BH,0FCH TAB58: DB 7CH,38H,0CCH,38H,62H,7CH,22H DB 0CAH,38H,7CH,48H,0CCH,3BH,79H DB 49H,0CBH,38H,0CCH,39H,7BH,4BH DB 0C9H,31H,7AH,0F3H,0H,0C4H TAB60: DB 39H,0F2H,29H,6BH,64H,54H,4BH DB 49H,50H,59H,5BH,54H,0CCH,78H DB 28H,6BH,64H,54H,4BH,0C8H,2CH DB 69H,60H,50H,49H,0CCH,3CH,4CH DB 49H,50H,60H,69H,0ECH,18H,5CH DB 64H,6BH,69H,60H,50H,49H,0CCH DB 0AH,72H,7BH,7CH,21H,0E3H,00H DB 43H,4CH,6CH,69H,60H,58H,51H,0D4H TAB68: DB 78H,28H,6BH,64H,0CCH,09H,4BH DB 4AH,6AH,69H,3AH,0FAH,01H,42H DB 4BH,6BH,6AH,3BH,0FBH,78H,2CH DB 58H,0CCH,09H,4BH,4AH,7AH,0F9H DB 68H,60H,69H,62H,4AH,22H,6BH DB 64H,0CCH,68H,60H,69H,6BH,64H DB 0CCH,09H,50H,60H,69H,6BH,64H,54H,4BH,0C9H TAB70: DB 00H,68H,6BH,64H,5CH,53H,0D0H DB 04H,6CH,69H,60H,58H,51H,0D4H DB 09H,69H,61H,6AH,6BH,0E4H,4BH DB 54H,5BH,59H,60H,69H,0ECH,0CH DB 4BH,52H,72H,21H,0E3H,28H,50H,49H DB 4BH,54H,0ECH,28H,4AH,0ECH,28H DB 49H,62H,4BH,0ECH TAB78: DB 6CH,28H,0CCH,0H,43H,4CH,6CH DB 28H,58H,51H,0D4H,28H,6CH,48H DB 0CCH,0BH,52H,5AH,61H,6AH,72H DB 0FBH,0AH,0FAH,09H,52H,5AH,63H DB 6AH,72H,0F9H,20H,69H,5BH,0E4H,80H TAB80: DB 32H,0FBH TAB81: DB 2AH,71H,7AH,73H,0EAH DB 39H,72H,0FBH,31H,7AH,0F3H,39H,79H,3BH,0FBH ; DB 0,0,'TESLA DIZ' DB 0,0,0,0,0,0,0,0 ; KONROM EQU $-1 ;POSLEDNI BYTE V ROM ROMC EQU $-ROM ;CEKOVA DELAKA KODU ; ORG RAM ;BLOK PROMENYCH SIXX: DS 2 ; VELIKOST PISMA XX 4290H SIXY: DS 2 ; VELIKOST PISMA XY 4292H SIYX: DS 2 ; VELIKOST PISMA YX 4294H SIYY: DS 2 ; VELIKOST PISMA YY 4296H DIAK: DS 1 ; PRIZNAK DIAKRITIKY, BUDE ZNAMENKO 4298H ZBS: DS 1 ; ZNAK BS DIAK2: DS 1 ; PRIZNAK DIAKRYTIKY, BYLO ZNAMENKO 429AH GZNAK: DS 1 ; PRIZNAK PRO GRAFICKY ZNAK 429BH TXTNS: DS 1 ; PRIZNAK NOVYCH SURADNIC PRO TISK TEXTU 429CH RADKO: DS 1 ; ROZSTUP MEZI RADKY 429DH WIDE: DS 1 ; DRUH MEZERY MEZI ZNAKY 429EH TKON1: DS 1 ; KONSTANTA PRO CASOVOU SMICKU 1 A249H TKON2: DS 1 ; KONSTANTA PRO CASOVOU SMICKU 2 42A0H TKON3: DS 1 ; KONSTANTA PRO CASOVOU SMICKU 3 42A1H STPX: DS 2 ; OKAMZITA POLOHA PERA X 42A2H STPY: DS 2 ; OKAMZITA POLOHA PERA Y 42A4H TXTSX: DS 2 ; SOURADNICE X PRO TISK TEXTU 42A6H TXTSY: DS 2 ; SOURADNICE Y PRO TISK TEXTU 42A8H ATABGZ: DS 2 ; ARESA AKTUANIHO GENERATORU ZNAKU 42AAH NOPX: DS 2 ; POLOHA PRISTIHO TISKU ZN. X 42ACH NOPY: DS 2 ; POLOHA PRISTIHO TISKU ZN. Y 42AEH SPEN: DS 1 ; OKAMZITY STAV PERA 42B0H SMOT: DS 1 ; STAV KROKOVYCH MOTORU PREX: DS 2 ; SOUR. PREDCHOZIHO TISKU X 42B2H PREY: DS 2 ; SOUR. PREDCHOZIHO TISKU Y 42B4H SPED: DS 1 ; AKTUALNI RICHLOST POSUVU 42B6H ACCE: DS 1 ; RICHLOST PRI ROZBEHU 42B7H DIRE: DS 1 ; SMER DO OS Y A X 42B8H DIR1: DS 1 ; ? 42B9H DIFF: DS 2 ; ROZDIL SOUR. ZADANE A SKUT. 42BAH ; KONRAM EQU $-1 ; POSLEDNI BZTE V RAM RAMC EQU $-RAM ; CEKOVE OBSAZENI RAM ; END ;
ÚVOD | Novinky | 8 Bitů | Příslušenství | Drobnosti | TTL | Kontakt
SAPI-1 | ONDRA | PMI-80 | PMD-85 | klony PMD-85 | klony SM50/40 | PETR | PLAN-80A | IQ151 | TNS | FK-1 | HVĚZDA | SP 830 | PCS 1-QR6000
ZPS | Technické prostředky | Programové vybavení | Dokumentace