;==================================================== ; ; P R O G R A M T I S K U N A B T 1 0 0 ; ; P R O P R O G R A M F T B T 1 0 0 ; ;==================================================== ; ;Podprogram vytiskne znak vcetne ceskych a slovenskych ;pismen na tiskarne BT 100. Z ridicich znaku rozeznava ;CR a FF. Pouziva se kod KOI-8cs2, rastr 12x6 bodu. ; ;vstup: znak v a ;meni: af,de bc,hl,hl',de' ; ; .Z80 ; aseg ; ; ;adresy periferii: ; tskout equ 0ffh ;vystupni port pro tiskarnu tskin equ 0f1h ;vstupni port tiskarny pa55 equ 0d0h ;vystupni port klavesnice pb55 equ 0d1h ;vstupni port klavesnice ; ;vystupy: alloff equ 0ffh ;motory vypnuty motfw equ 0fdh ;vozik vpred motbck equ 0f7h ;vozik vzad btmark equ 2 ;bit tisku bodu papstp equ 0feh ;posun papiru ; ;vstupy: wholpp equ 0 ;bit posunu papiru homein equ 1 ;bit polohy home wholt1 equ 2 ;bit tranzistoru T1 wholt2 equ 3 ;bit tranzistoru T2 ; bdos equ 05 ;call bdos VRAM equ 8000h ;pocatek VRAM ; ; org 100h ; ; loader: ld e,1dh ;home ld c,2 ;tisk znaku call bdos ld bc,2cfh ;scrl. reg.=0 xor a di out (c),a dec b out (c),a ei ld e,1fh ;clr ld c,2 ;tisk znaku call bdos ld hl,pocatek ;presun do prac. ld de,VRAM+1 ;oblasti ld bc,tbuff-tisk di ld a,04 ;cteni z roviny 3 out (0cdh),a out (0cch),a ;zapis do rov. 3 in a,(0e0h) ;zapnuta vram ld a,5ch ;test na VRAM 32k ld (de),a ex (sp),hl ;uklidneni ex (sp),hl ld a,(de) cp 5ch ;souhlas? jr nz,noVRAM ;neni instalivana ld a,04 ;je 80 nebo 40 zn/r? out (0ceh),a ;80 zn/r out (0cch),a out (0cdh),a ld a,(VRAM+2) cp 5ch ;bylo i predtim? ld a,0 ;zajisteni modu jr z,ne80zn ;pri navratu ld a,4 ;80 zn/r ne80zn: ld (stmod),a ;odlozeni dec de ;=8000h ldir ;presun do prac.oblasti xor a out (0ceh),a ;40 zn/r ld a,4 out (0cch),a ;znovu rovina 3 ld hl,VRAM+1000h ld b,4 loopf: ld (hl),0 ;od 9000h nuly inc hl djnz loopf ld a,(stmod) ;puvodni mod out (0ceh),a ld de,nap1 ;vse ok jr napis noVRAM: ld de,nap2 ;chybi VRAM 32k napis: in a,(0e1h) ;vypnuta vram ei ld c,09 ;tisk napisu call bdos rst 00h ;navrat do CP/M stmod: db 0 ; ; nap1: defb "Program PRINTFET" defb " is ready!",0dh,0ah,0ah defb "Use only display mode 80 characters per " defb "line on print!",0ah,0dh defb "Commands: BREAK, Continue.",0ah,0dh,"$" nap2: defb 0dh,0ah,"Not implemented VRAM 32k!" defb 0dh,0ah,"$" defb "(c) Marty 1988" ; ; pocatek: ; .phase VRAM ; ; tisk: di inc e ;pro identifikaci inc e ;pro identifikaci inc e ;pro identifikaci ld hl,flags ;inicializovat buff? bit 0,(hl) set 0,(hl) ;uz to nebude treba jr nz,noin ;bez init push af ld hl,tbuff ;nastaveni ukaz. ld (tfcc),hl ;poc. bufferu ld a,(plline) ;pocet zn. na radek ld (tfcczn),a ;do ukaz. v radku ld a,(vstnbz) ;poc. stranky ld (nbrdzn),a call bufclr ;vymaz bufferu pop af noin: cp 0ch ;nova stranka? jr z,novstr cp 0dh ;novy radek? jr z,sendln sub 20h ;poc. alfabet. znaku ret c ;pri rid. zn. cp 60h ;posledni ASCII? jr c,ascii ;pokud ano skok cp 0a1h ;to mezi se vyhazuje ret c sub 40h ;pocatek cs. znaku ascii: ld e,a ;vypocet rel. adresy ld d,0 ;znak do e ld h,d ;totez do hl ld l,e add hl,de ;x2 add hl,de ;x3 add hl,hl ;x6 add hl,hl ;x12 ld de,zngen ;pocatek znak. gen. add hl,de ;abs. adresa exx ld hl,(tfcc) ;misto tisku ld de,(lbuff) ;delka radku ld d,0 push hl exx ld a,(vsnmln) ;pocet byte na znak ld b,a ;pocitadlo bildch: ld a,(hl) ;prevzeti byte inc hl ;posun ukazovatka exx ld (hl),a ;ulozeni byte add hl,de ;dalsi adresa exx djnz bildch ;cely znak pop hl ;ukazov. v radku inc hl ;posun o pozici ld (tfcc),hl ;a ulozeni ld hl,tfcczn ;ukaz. poctu znaku dec (hl) ;v radku jr z,sendln ;vysle se radek ret ; sendln: push iy call tiskrd ;tisk radku push af call bufclr ;vymaz bufferu ld hl,tbuff ;nastaveni ukaz. ld (tfcc),hl ;poc. bufferu ld a,(plline) ;pocet zn. na radek ld (tfcczn),a ;do ukaz. v radku ld b,2 ;rozestup radku mez: call movpap djnz mez ld hl,nbrdzn ;dec. poctu znak. r. pop af pop iy jr nz,brk ;pri break dec (hl) ret nz ;neni-li konec stranky jr nvstr ;nova stranka ; novstr: call sendln ;nova stranka nvstr: ld a,(vstnbz) ;poc. r. na stranku ld (nbrdzn),a ;nastaveni promenne out (0e3h),a ;nahore eprom ld hl,0faa9h ;tabulka ld b,4 ;pocet kroku call 0f940h ;beep zapnout ntou: call toukey ;ceka na stisk klav. jr z,ntou push af call 0faa1h ;beep vypnout out (0e1h),a ;nahore ram pop af cp 01 ;neni break? jr z,brk ;je-li ytouch: ld b,100d ytou: push bc call toukey ;ceka na uvolneni k. pop bc jr nz,ytouch djnz ytou xor a ret brk: xor a ;break ld (flags),a ;inicializovat! inc a ret ; ; ; testuje stav klavesnice konzoly ;--------------------------------------- ; ;vstup: 0 ;vystup:a=0 pri nestlacene, =ffh pri stlacene kl. ; netestuje shift a ctrl. Dle a nastavi ; priznak z. ;meni: af,bc ; ; toukey: ld bc,0f800h+pa55 out (c),b ;je break? nop in a,(pb55) or 07fh ;pouze break cp 0ffh ld b,9 jr z,cord ;pri nestl. ld a,1 ;priznak break and a ret coloop: add a,b ;vystupni adresa or 0f0h ;neovlivni cur. out (c),a nop in a,(pb55) ;odezva cord: cp 0ffh ;nestlaceno? jr nz,consr ;pri stlaceno djnz coloop ;dalsi rada consr: sbc a,a ret ; ; ; SMAZE BUFFER TISKARNY ;------------------------------------ ; ;vstup: Nastavena promenna lbuff a numzn. ;vystup:Smazani bufferu klavesnice. ;meni: hl,de,bc ; ; bufclr: ld hl,tbuff ;pocatek bufferu push af ld a,(vsnmln) ;pocet byte znaku ld b,a pop af bfclr: push bc ld d,h ld e,l ;do de inc de ld (hl),0 ld bc,(lbuff) ;delka radku ld b,0 dec bc ldir ;vymaz radku pop bc ex de,hl djnz bfclr ;dalsi radek ret ; ; ;TISK (VSNMLN) RADKU Z BUFFERU TISKARNY ;----------------------------------------- ; ;vstup: Naplneny buffer tiskarny, nastavena promenna ; plline, lbuff, vsnmln, masbit, pocbit, vstab ; Vsnmln by melo byt sude cislo (kratsi doba ; tisku). Nastaveni promennych je nutne pouze ; pri zmene interne deklarovanych hodnot. ;vystup:Tisk (vsnmln) radku o delce (plline) na tis- ; karne BT 100. ;meni: af,de,hl,bc,iy ; ; tiskrd: ld (prosp),sp ;ulozeni ukazatele call break ;test na break ld hl,tbuff ;pocatek buff. tisk. ld (tfcc),hl ;nastaveni ukazovatka ld a,(vsnmln) ;pocet radku ld (numlin),a ;nast. promenne call home ;vozik do zakl. polohy nxtzr: call home1 ;je uz doopravdy home? ld a,(vstab) ;pocet bitu od kr. r. ld (tab),a xor a ld (endp?),a ;vstupni nastaveni call movpap ;papir o 1 krok vpred nxtr: ld hl,(tfcc) ;ukazov. v buff. ld de,(plline) ;delka tisknuteho radku ld d,0 add hl,de ;konec n-teho radku+1 push hl dec hl ;konec n-teho radku call findlb ;nalezeni posl. byte pop hl ;v e je jeho pozice jr z,zerrad ;pri nulovem radku ld c,e ;do c posl. b. n- rad. ld a,(lbuff) ;delka radku ld e,a ;do e add hl,de ;konec n+1 radku+1 dec hl ;konec n+1 radku ld a,(plline) ;delka radku k tisku ld e,a call findlb ;do e pozice posl. byte ;n+1 radku call minmax ;b=pocet nenul. byte n- ;teho radku, c=pozice ;1. nenul. byte v r. n-1 push hl ;pocatek n-teho radku ld e,c ;pocet pozic k 1. nen. b. add hl,de ;adresa tohoto byte ld e,b ;pocet nen. b. v n-radku call tstdel ;delka v poradku? call tskvpr ;tisk smerem vpred call movpap ;posun papiru ld hl,numlin ;pocet radku k tisku dec (hl) ;dekrement pocitadla pop hl ret z ;pokud je vse vytisteno ld a,(lbuff) ;delka radku v bufferu ld e,a ;vypocet adresy pocatku add hl,de ;n+1 radku ld (tfcc),hl ;a ulozeni push hl ld a,(plline) ;delka tisknuteho radku ld e,a ;hleda se 1. nenulovy call findfb ;byte v n+1 radku pop hl ;delka do konce je v e jr z,zerrad ;pri nulovem radku ld c,e ld a,(lbuff) ;delka radku v bufferu ld e,a ;vypocet pocatku n+3 add hl,de ;radku ld a,(plline) ;delka tisknuteho radku ld e,a ;delka od 1. nenul. byte call findfb ;do konce n+3 radku do e call minmax ;po navratu: b=pocet nen. ;byte n+2 radku, c=pocet ;nul. byte na konci n+2 r. push hl ;pocatek n+2 radku ld a,(plline) ;delka tisknuteho radku ld e,a add hl,de ;posledni byte+1 n+2 r. dec hl ;posledni byte ld e,c ;posledni nenulovy byte sbc hl,de ;v n+2 radku ld e,b ;pocet nenul. b. v n+2 r. call tstdel ;je delka spravna? call tskvzd ;tisk radku zpet call movpap ;posun papiru ld hl,numlin ;pocet tisknutych radku dec (hl) ;dekrement pocitadla r. pop hl ret z ;pri vycerpano ld a,(lbuff) ;delka radku v bufferu ld e,a add hl,de ;pocatek n+3 radku ld (tfcc),hl ;do ukazovatka jr nxtr ;dalsi radek zerrad: ld hl,(tfcc) ;ukazovatko ld a,(lbuff) ;delka radku v bufferu ld e,a add hl,de ;dalsi pocatek radku ld (tfcc),hl ld hl,numlin ;dekrement pocitadla dec (hl) jp nz,nxtzr ;tisk dalsiho radku ret ;vse je vytisteno ; ; ; NALEZNE POSLEDNI NENULOVY BYTE V RADKU ;----------------------------------------------------- ; ;vstup: hl=adresa posledniho byte v radku ; e=pocet byte na radek, nastavena maska masbit ;vystup:e=pozice posl. nenul. byte v radku, z=l ; pri nalezeni znaku, z=h pri nulovem radku ;meni: af,de,hl,iy ; ; findlb: ld iy,masbit ;maska na platne bity xor a nxtbck: or (hl) and (iy+0) ret nz ;byte nalezen, navrat dec e ret z ;pri nulovem radku dec hl ;posun ukazovatka jr nxtbck ;dalsi byte ; ; ; NALEZNE PRVNI NENULOVY BYTE V RADKU ;---------------------------------------------- ; ; ;vstup: hl=adresa posledniho byte v radku ; e=pocet byte na radek, nastavena maska masbit ;vystup:e=pozice prvniho nenul. byte v radku, z=l ; pri nalezeni znaku, z=h pri nulovem radku ;meni: af,de,hl,iy ; ; findfb: ld iy,masbit ;maska na platne bity xor a nxtfwd: or (hl) and (iy+0) ret nz ;byte nalezen, navrat dec e ret z ;pri nulovem radku inc hl ;posun ukazovatka jr nxtfwd ;dalsi byte ; ; ; URCI POCET NENULOVYCH BYTE V RADKU ;---------------------------------------------- ; ;vstup: c=pozice krajniho nenuloveho byte v n-tem ; radku, e=dtto pro radek n+1, (endp?) musi ; obsahovat pocet nulovych bitu z opacne ; strany predchoziho dvojradku, nastavene ; (tfcc) a (plline). ;vystup:b=pocet nenulovych pozic v n-tem radku, ; c=minuly (endp?),hl=adresa pocatku n-teho ; radku. ;meni: af,bc,hl,e ; ; minmax: ld a,c ;urci "obsazenejsi" cp e ;radek z c a e jr c,tendel ;ten delsi do b ld e,a tendel: ld b,e ld a,(plline) ;delka tisknuteho radku sub b ;pocet pozic do konce r. push af ld a,(endp?) ;pocet minulych mezer. b. ld c,a ;do c pop af ld (endp?),a ;nove mezery v bitech ld a,b ;pozice delsiho radku sub c ;pocet nenulovych byte ld b,a ;do a ld hl,(tfcc) ;(hl)=pocatek n-teho r. ret ; ; ;ZKONTROLUJE ZJISTENY POCET NENULOVYCH BYTE V RADKU ;-------------------------------------------------- ; ;vstup: e=pocet nenulovych byte v radku, (endp?)=po- ; cet nulovych bitu n a n+1 popr. n+1 a n+2 ; radku, (plline)=delka tisteneho radku. ;vystup:Zkontrolovany, resp. opraveny registr e. ;meni: af,e,b ; ; tstdel: ld a,(endp?) ;pocet bitovych mezer ld b,a ld a,(plline) ;delka tisknuteho radku sub b ;je (e) kratsi nez (a)? cp e ret nc ;je-li vse ok ld a,(plline) ;delka tisknuteho radku ld e,a ;plna delka ret ; ; ; TISKNE RADEK PRI POHYBU VOZIKU VPRED ;------------------------------------- ; ;vstup: e=pocet tisknutych byte, hl=adresa prvniho tiste- ; ho byte, nastavena promenna (tab). ;vystup:Tisk radku pri pohybu hlavy vpred. ;meni: af,e,hl,bc ; ; tskvpr: ld a,motfw ;motor vpred zapnout out (tskout),a call break ;neni break? whin: in a,(tskin) ;ceka na okamzik, kdy bit homein,a ;vozik opusti pozici jr nz,whin ;home call movfby ;najeti na pocatek rad. tsknb: ld c,(hl) ;prevzeti byte ld a,(masbit) ;maska plat. bitu noctch: srl a ;najde prvni platny bit jr c,ctchbi srl c jr noctch ctchbi: ld a,(pocbit) ;pocet pouzivanych bitu ld b,a ;pocitadlo bytotf: call hint1 ;ceka na otvor pres T1 srl c ;dalsi bit call c,markbt ;tisk bodu call nhint1 ;posun voziku call break djnz bytotf ;dalsi bit inc hl ;posun ukazovatka dec e ;dekr. pocitadla r. jr nz,tsknb ;tisk dalsiho byte spolfb: ld hl,tab ;mezery od kraju pap. stilno: in a,(tskin) ;ceka na pocatek bit wholt1,a ;otvoru pres T1 jr nz,stilno ;dosud ne inc (hl) ;byl otvor stiln1: in a,(tskin) ;opravdu neni? bit wholt1,a jr nz,stilno bit wholt2,a jr nz,stiln1 ;ceka se dal ld a,alloff ;vypnout motory out (tskout),a ret ; ; ; TISKNE RADEK PRI POHYBU VOZIKU VZAD ;---------------------------------------------- ; ;vstup: e=pocet tisknutych byte, hl=adresa prvniho tiste- ; ho byte smerem odzadu, nastavena promenna (tab). ;vystup:Tisk radku pri pohybu hlavy vzad. ;meni: af,e,hl,bc ; ; tskvzd: ld a,motbck ;motor voziku vzad out (tskout),a call movfby ;nastaveni voziku tskbb: ld c,(hl) ;prevzeti byte ld a,(masbit) ;maska platnych bitu nocat: sla a ;posun na prvni jr c,catchb ;posun u konce sla c ;posun c jr nocat ;dalsi bit catchb: ld a,(pocbit) ;pocet platnych bitu ld b,a ;do b bytbf: call hint1 ;pocatek otv. pres t1 call nhint1 ;konec otv. pres t1 sla c ;posun bitu call c,markbt ;tisk bitu call break djnz bytbf ;tisk celeho byte dec hl ;posun ukazovatka dec e ;jeste se ma tisknout? jr nz,tskbb ;dalsi byte jr spolfb ; ; ; NASTAVI VOZIK NA MISTO POCATKU TISKU ;---------------------------------------------- ; ;vstup: Nastavena promenna tab. ;vystup:Posun voziku na misto pocatku tisku. ;meni: af ; ; movfby: call hint2 ;pocatek otvoru pres T2 push hl ld hl,tab ;pocet pozic od kr. r nxttab: call hint1 ;ceka na pulz call nhint1 dec (hl) ;tabulace provedena jp p,nxttab ;dalsi tabulace pop hl ret ; ; ; CEKA NA POCATEK OTVORU SNIMANY T1 ;----------------------------------------- ; ;vstup: 0 ;vystup:Navrat pri zacatku otvoru. ;meni: af ; ; hint1: in a,(tskin) ;je otvor? bit wholt1,a ;maska jr nz,hint1 ;jeste ne in a,(tskin) ;opravdu je otvor? bit wholt1,a jr nz,hint1 ;pokud neni ret ; ; ; CEKA NA KONEC OTVORU SNIMANY T1 ;---------------------------------------- ; ;vstup: 0 ;vystup:Navrat pri konci otvoru. ;meni: af ; ; nhint1: in a,(tskin) ;konec otvoru? bit wholt1,a jr z,nhint1 ;pokud ne in a,(tskin) ;opravdu je konec? bit wholt1,a jr z,nhint1 ;neni-li ret ; ; ; CEKA NA POCATEK OTVORU SNIMANY T2 ;------------------------------------------- ; ;vstup: 0 ;vystup:Navrat pri pocatku otvoru ;meni :af ; ; hint2: in a,(tskin) ;pocatek otvoru? bit wholt2,a jr nz,hint2 ;jeste neni ex (sp),hl ;timeout ex (sp),hl in a,(tskin) ;opravdu poc. otv.? bit wholt2,a jr nz,hint2 ;pokud neni ret ; ; ; POSUN PAPIRU O JEDEN KROK ;-------------------------------------- ; ;vstup: 0 ;vystup:Posune papir o jeden krok ;meni: af ; ; movpap: ld a,papstp ;start motoru out (tskout),a yeswh: in a,(tskin) ;sejme se pulz bit wholpp,a ;a motor se jr z,yeswh ;zastavi in a,(tskin) bit wholpp,a jr z,yeswh ex (sp),hl ;timeout ex (sp),hl nowhl: in a,(tskin) bit wholpp,a jr nz,nowhl ld a,alloff ;motor se vypne out (tskout),a ret ; ; ; TISKNE BOD ;--------------------------------- ; ;vstup: 0 ;vystup:Vytiskne jeden bod ;meni: af ; ; markbt: in a,(tskout) ;vstupni nastaveni res btmark,a out (tskout),a ;vyrobi se pulz ex (sp),hl ex (sp),hl ;timeout set btmark,a out (tskout),a ret ; ; ; PRESUNE VOZIK DO POLOHY HOME ;------------------------------------------- ; ;vstup: 0 ;vystup:Vozik v poloze home. ;meni: af ; ; home: ld a,alloff ;motory stop out (tskout),a call movpap ;posun papiru home1: in a,(tskin) ; bit homein,a ret nz ;je v home ld a,motbck ;vozik vzad out (tskout),a homewt: in a,(tskin) ;ceka se bit homein,a ;je v home? jr z,homewt ;ceka se dal ex (sp),hl ;time out ex (sp),hl in a,(tskin) bit homein,a ;opravdu je home? jr z,homewt ;ceka se dal ld a,alloff ;motor vypnout out (tskout),a ret ; ; ; TESTUJE KLAVESU BREAK ;------------------------------- ; ;vstup: 0 ;vystup:Navrat z podprogramu pri break s a=1, ; a z=l. Vypne motory. ;meni: 0 ; ; break: push af ld a,0f8h ;vlastni test out (pa55),a nop in a,(pb55) and 81h jr z,jebr ;pri break pop af ret jebr: ld a,alloff ;motory vypnout out (tskout),a ld sp,(prosp) ;obnoveni zas. ld a,1 ;chyb. hlas. and a ret ; ; zngen: db 000h,000h,000h,000h,000h,000h ;mezera db 000h,000h,000h,000h,000h,000h db 000h,000h,004h,004h,004h,004h ;! db 004h,000h,004h,000h,000h,000h db 000h,00Ah,00Ah,00Ah,005h,000h ;" db 000h,000h,000h,000h,000h,000h db 000h,000h,00Ah,00Ah,01Fh,00Ah ;# db 01Fh,00Ah,00Ah,000h,000h,000h db 000h,000h,004h,01Eh,005h,00Eh ;$ db 014h,00Fh,004h,000h,000h,000h db 000h,000h,003h,013h,008h,004h ;% db 002h,019h,018h,000h,000h,000h db 000h,000h,002h,005h,005h,002h ;& db 015h,009h,016h,000h,000h,000h db 000h,004h,004h,004h,002h,000h ;' db 000h,000h,000h,000h,000h,000h db 000h,000h,004h,002h,001h,001h ;( db 001h,002h,004h,000h,000h,000h db 000h,000h,004h,008h,010h,010h ;) db 010h,008h,004h,000h,000h,000h db 000h,000h,000h,004h,015h,00Eh ;* db 015h,004h,000h,000h,000h,000h db 000h,000h,000h,004h,004h,01Fh ;+ db 004h,004h,000h,000h,000h,000h db 000h,000h,000h,000h,000h,000h ;, db 000h,000h,004h,004h,002h,000h db 000h,000h,000h,000h,000h,01Fh ;- db 000h,000h,000h,000h,000h,000h db 000h,000h,000h,000h,000h,000h ;. db 000h,000h,004h,000h,000h,000h db 000h,000h,000h,010h,008h,004h ;/ db 002h,001h,000h,000h,000h,000h ; db 000h,000h,00Eh,011h,019h,015h ;0 db 013h,011h,00Eh,000h,000h,000h db 000h,000h,004h,006h,004h,004h ;1 db 004h,004h,00Eh,000h,000h,000h db 000h,000h,00Eh,011h,010h,00Eh ;2 db 001h,001h,01Fh,000h,000h,000h db 000h,000h,01Fh,010h,008h,00Ch ;3 db 010h,011h,00Eh,000h,000h,000h db 000h,000h,008h,00Ch,00Ah,01Fh ;4 db 008h,008h,008h,000h,000h,000h db 000h,000h,01Fh,001h,00Fh,010h ;5 db 010h,011h,00Eh,000h,000h,000h db 000h,000h,01Ch,002h,001h,00Fh ;6 db 011h,011h,00Eh,000h,000h,000h db 000h,000h,01Fh,010h,010h,008h ;7 db 004h,002h,001h,000h,000h,000h db 000h,000h,00Eh,011h,011h,00Eh ;8 db 011h,011h,00Eh,000h,000h,000h db 000h,000h,00Eh,011h,011h,01Eh ;9 db 010h,008h,007h,000h,000h,000h db 000h,000h,000h,000h,004h,000h ;: db 004h,000h,000h,000h,000h,000h db 000h,000h,000h,000h,000h,000h ;; db 004h,000h,004h,004h,002h,000h db 000h,000h,008h,004h,002h,001h ;< db 002h,004h,008h,000h,000h,000h db 000h,000h,000h,000h,01Fh,000h ;= db 01Fh,000h,000h,000h,000h,000h db 000h,000h,002h,004h,008h,010h ;> db 008h,004h,002h,000h,000h,000h db 000h,000h,00Eh,011h,010h,008h ;? db 004h,000h,004h,000h,000h,000h ; db 000h,000h,00Eh,011h,015h,01Dh ;@ db 00Dh,001h,01Eh,000h,000h,000h db 000h,000h,004h,00Ah,011h,01Fh ;A db 011h,011h,011h,000h,000h,000h db 000h,000h,00Fh,011h,011h,00Fh ;B db 011h,011h,00Fh,000h,000h,000h db 000h,000h,00Eh,011h,001h,001h ;C db 001h,011h,00Eh,000h,000h,000h db 000h,000h,00Fh,011h,011h,011h ;D db 011h,011h,00Fh,000h,000h,000h db 000h,000h,01Fh,001h,001h,00Fh ;E db 001h,001h,01Fh,000h,000h,000h db 000h,000h,01Fh,001h,001h,00Fh ;F db 001h,001h,001h,000h,000h,000h db 000h,000h,01Eh,011h,001h,001h ;G db 019h,011h,01Eh,000h,000h,000h db 000h,000h,011h,011h,011h,01Fh ;H db 011h,011h,011h,000h,000h,000h db 000h,000h,00Eh,004h,004h,004h ;I db 004h,004h,00Eh,000h,000h,000h db 000h,000h,010h,010h,010h,010h ;J db 010h,011h,00Eh,000h,000h,000h db 000h,000h,011h,009h,005h,003h ;K db 005h,009h,011h,000h,000h,000h db 000h,000h,001h,001h,001h,001h ;L db 001h,001h,01Fh,000h,000h,000h db 000h,000h,011h,01Bh,015h,015h ;M db 015h,011h,011h,000h,000h,000h db 000h,000h,011h,011h,013h,015h ;N db 019h,011h,011h,000h,000h,000h db 000h,000h,00Eh,011h,011h,011h ;O db 011h,011h,00Eh,000h,000h,000h ; db 000h,000h,00Fh,011h,011h,00Fh ;P db 001h,001h,001h,000h,000h,000h db 000h,000h,00Eh,011h,011h,011h ;Q db 015h,009h,016h,000h,000h,000h db 000h,000h,00Fh,011h,011h,00Fh ;R db 005h,009h,011h,000h,000h,000h db 000h,000h,00Eh,011h,001h,00Eh ;S db 010h,011h,00Eh,000h,000h,000h db 000h,000h,01Fh,015h,004h,004h ;T db 004h,004h,004h,000h,000h,000h db 000h,000h,011h,011h,011h,011h ;U db 011h,011h,00Eh,000h,000h,000h db 000h,000h,011h,011h,011h,00Ah ;V db 00Ah,004h,004h,000h,000h,000h db 000h,000h,011h,011h,011h,015h ;W db 015h,015h,00Ah,000h,000h,000h db 000h,000h,011h,011h,00Ah,004h ;X db 00Ah,011h,011h,000h,000h,000h db 000h,000h,011h,011h,00Ah,004h ;Y db 004h,004h,004h,000h,000h,000h db 000h,000h,01Fh,010h,008h,004h ;Z db 002h,001h,01Fh,000h,000h,000h db 000h,000h,01Fh,003h,003h,003h ;[ db 003h,003h,01Fh,000h,000h,000h db 000h,000h,000h,001h,002h,004h ;\ db 008h,010h,000h,000h,000h,000h db 000h,000h,01Fh,018h,018h,018h ;] db 018h,018h,01Fh,000h,000h,000h db 000h,000h,000h,004h,00Eh,015h ;sipka nahoru db 004h,004h,004h,000h,000h,000h db 000h,000h,000h,000h,000h,000h ;- db 000h,000h,01Fh,000h,000h,000h ; db 000h,000h,002h,004h,008h,000h ;` db 000h,000h,000h,000h,000h,000h db 000h,000h,000h,000h,00Eh,010h ;a db 01Eh,011h,01Eh,000h,000h,000h db 000h,000h,001h,001h,00Fh,011h ;b db 011h,011h,00Fh,000h,000h,000h db 000h,000h,000h,000h,00Eh,001h ;c db 001h,001h,00Eh,000h,000h,000h db 000h,000h,010h,010h,01Eh,011h ;d db 011h,011h,01Eh,000h,000h,000h db 000h,000h,000h,000h,00Eh,011h ;e db 01Fh,001h,00Eh,000h,000h,000h db 000h,000h,008h,004h,004h,00Eh ;f db 004h,004h,004h,000h,000h,000h db 000h,000h,000h,000h,01Eh,011h ;g db 011h,011h,01Eh,010h,00Ch,000h db 000h,000h,001h,001h,00Fh,011h ;h db 011h,011h,011h,000h,000h,000h db 000h,000h,004h,000h,006h,004h ;i db 004h,004h,00Eh,000h,000h,000h db 000h,000h,008h,000h,00Ch,008h ;j db 008h,008h,008h,008h,006h,000h db 000h,000h,002h,002h,012h,00Ah ;k db 006h,00Ah,012h,000h,000h,000h db 000h,000h,006h,004h,004h,004h ;l db 004h,004h,00Eh,000h,000h,000h db 000h,000h,000h,000h,00Bh,015h ;m db 015h,015h,015h,000h,000h,000h db 000h,000h,000h,000h,00Dh,013h ;n db 011h,011h,011h,000h,000h,000h db 000h,000h,000h,000h,00Eh,011h ;o db 011h,011h,00Eh,000h,000h,000h ; db 000h,000h,000h,000h,00Fh,011h ;p db 011h,011h,00Fh,001h,001h,000h db 000h,000h,000h,000h,01Eh,011h ;q db 011h,011h,01Eh,010h,010h,000h db 000h,000h,000h,000h,01Ah,006h ;r db 002h,002h,002h,000h,000h,000h db 000h,000h,000h,000h,01Eh,001h ;s db 00Eh,010h,00Fh,000h,000h,000h db 000h,000h,000h,004h,00Eh,004h ;t db 004h,004h,008h,000h,000h,000h db 000h,000h,000h,000h,011h,011h ;u db 011h,011h,01Eh,000h,000h,000h db 000h,000h,000h,000h,011h,011h ;v db 011h,00Ah,004h,000h,000h,000h db 000h,000h,000h,000h,011h,011h ;w db 015h,015h,00Ah,000h,000h,000h db 000h,000h,000h,000h,011h,00Ah ;x db 004h,00Ah,011h,000h,000h,000h db 000h,000h,000h,000h,011h,011h ;y db 011h,011h,01Eh,010h,00Ch,000h db 000h,000h,000h,000h,01Fh,008h ;z db 004h,002h,01Fh,000h,000h,000h db 000h,000h,008h,004h,004h,002h ;{ db 004h,004h,008h,000h,000h,000h db 000h,000h,004h,004h,004h,004h ;| db 004h,004h,004h,000h,000h,000h db 000h,000h,002h,004h,004h,008h ;} db 004h,004h,002h,000h,000h,000h db 000h,000h,002h,015h,008h,000h ;~ db 000h,000h,000h,000h,000h,000h db 02Ah,015h,02Ah,015h,02Ah,015h ; db 02Ah,015h,02Ah,015h,02Ah,015h ; db 03Fh,03Fh,03Fh,03Fh,03Fh,03Fh ; db 03Fh,03Fh,03Fh,03Fh,03Fh,03Fh db 000h,008h,004h,000h,00Eh,010h ;dlouhe a db 01Eh,011h,01Eh,000h,000h,000h db 03Fh,03Fh,03Fh,03Fh,03Fh,03Fh ; db 03Fh,03Fh,03Fh,03Fh,03Fh,03Fh db 000h,014h,008h,000h,01Eh,001h ;c s hackem db 001h,001h,01Eh,000h,000h,000h db 00Ah,004h,010h,010h,01Eh,011h ;d s hackem db 011h,011h,01Eh,000h,000h,000h db 000h,00Ah,004h,000h,00Eh,011h ;e s hackem db 01Fh,001h,00Eh,000h,000h,000h db 000h,008h,004h,000h,00Ah,016h ;dlouhe r db 002h,002h,002h,000h,000h,000h db 03Fh,03Fh,03Fh,03Fh,03Fh,03Fh ; db 03Fh,03Fh,03Fh,03Fh,03Fh,03Fh db 000h,014h,00Ah,000h,011h,011h ;prehlasovane u db 011h,011h,01Eh,000h,000h,000h db 000h,008h,004h,000h,006h,004h ;i s carkou db 004h,004h,00Eh,000h,000h,000h db 004h,00Ah,004h,000h,011h,011h ;u s krouzkem db 011h,011h,01Eh,000h,000h,000h db 010h,010h,006h,004h,004h,004h ;dlouhe l db 004h,004h,00Eh,000h,000h,000h db 014h,008h,006h,004h,004h,004h ;l s hackem db 004h,004h,00Eh,000h,000h,000h db 000h,014h,00Ah,000h,00Eh,011h ;prehlasovane o db 011h,011h,00Eh,000h,000h,000h db 000h,00Ah,004h,000h,00Dh,013h ;n s hackem db 011h,011h,011h,000h,000h,000h db 000h,008h,004h,000h,00Eh,011h ;dlouhe o db 011h,011h,00Eh,000h,000h,000h ; db 000h,004h,00Ah,000h,00Eh,011h ;o se striskou db 011h,011h,00Eh,000h,000h,000h db 000h,014h,00Ah,000h,00Eh,010h ;prehlasovane a db 01Eh,011h,01Eh,000h,000h,000h db 000h,00Ah,004h,000h,00Ah,016h ;r s hackem db 002h,002h,002h,000h,000h,000h db 000h,00Ah,004h,000h,01Eh,001h ;s s hackem db 00Eh,010h,00Fh,000h,000h,000h db 014h,008h,000h,004h,00Eh,004h ;t s hackem db 004h,004h,008h,000h,000h,000h db 000h,008h,004h,000h,011h,011h ;dlouhe u db 011h,011h,01Eh,000h,000h,000h db 03Fh,03Fh,03Fh,03Fh,03Fh,03Fh ; db 03Fh,03Fh,03Fh,03Fh,03Fh,03Fh db 000h,008h,004h,000h,00Eh,011h ;dlouhe e db 01Fh,001h,00Eh,000h,000h,000h db 000h,002h,004h,000h,00Eh,010h ;a s ` db 01Eh,011h,01Eh,000h,000h,000h db 000h,008h,004h,000h,011h,011h ;dlouhe y db 011h,011h,01Eh,010h,00Ch,000h db 000h,00Ah,004h,000h,01Fh,008h ;z s hackem db 004h,002h,01Fh,000h,000h,000h db 03Fh,03Fh,03Fh,03Fh,03Fh,03Fh ; db 03Fh,03Fh,03Fh,03Fh,03Fh,03Fh db 00Ah,004h,000h,000h,000h,000h ;hacek db 000h,000h,000h,000h,000h,000h db 03Fh,03Fh,03Fh,03Fh,03Fh,03Fh ; db 03Fh,03Fh,03Fh,03Fh,03Fh,03Fh db 000h,000h,000h,000h,000h,01Fh ;skoba doleva db 010h,010h,000h,000h,000h,000h db 03Fh,03Fh,03Fh,03Fh,03Fh,03Fh ; db 03Fh,03Fh,03Fh,03Fh,03Fh,03Fh ; db 010h,008h,000h,000h,000h,000h ;carka db 000h,000h,000h,000h,000h,000h db 010h,008h,004h,00Ah,011h,011h ;dlouhe A db 01Fh,011h,011h,000h,000h,000h db 03Fh,03Fh,03Fh,03Fh,03Fh,03Fh ; db 03Fh,03Fh,03Fh,03Fh,03Fh,03Fh db 00Ah,004h,00Eh,011h,001h,001h ;C s hackem db 001h,011h,00Eh,000h,000h,000h db 00Ah,004h,00Fh,011h,011h,011h ;D s hackem db 011h,011h,00Fh,000h,000h,000h db 00Ah,004h,01Fh,001h,001h,00Fh ;E s hackem db 001h,001h,01Fh,000h,000h,000h db 008h,004h,00Fh,011h,011h,00Fh ;dlouhe R db 005h,009h,011h,000h,000h,000h db 03Fh,03Fh,03Fh,03Fh,03Fh,03Fh ; db 03Fh,03Fh,03Fh,03Fh,03Fh,03Fh db 014h,00Ah,011h,011h,011h,011h ;prehlasovane U db 011h,011h,00Eh,000h,000h,000h db 008h,004h,00Eh,004h,004h,004h ;dlouhe I db 004h,004h,00Eh,000h,000h,000h db 006h,006h,011h,011h,011h,011h ;krouzkovane U db 011h,011h,00Eh,000h,000h,000h db 008h,004h,001h,001h,001h,001h ;dlouhe L db 001h,001h,01Fh,000h,000h,000h db 00Ah,004h,001h,001h,001h,001h ;L s hackem db 001h,001h,01Fh,000h,000h,000h db 014h,00Ah,00Eh,011h,011h,011h ;prehlasovane O db 011h,011h,00Eh,000h,000h,000h db 00Ah,004h,011h,011h,013h,015h ;N s hackem db 019h,011h,011h,000h,000h,000h db 008h,004h,00Eh,011h,011h,011h ;dlouhe O db 011h,011h,00Eh,000h,000h,000h ; db 00Eh,011h,00Eh,011h,011h,011h ;O se striskou db 011h,011h,00Eh,000h,000h,000h db 014h,00Ah,004h,00Ah,011h,011h ;prehlasovane A db 01Fh,011h,011h,000h,000h,000h db 00Ah,004h,00Fh,011h,011h,00Fh ;R s hackm db 005h,009h,011h,000h,000h,000h db 00Ah,004h,00Eh,011h,001h,00Eh ;S s hackem db 010h,011h,00Eh,000h,000h,000h db 00Ah,004h,01Fh,015h,004h,004h ;T s hackem db 004h,004h,004h,000h,000h,000h db 008h,004h,011h,011h,011h,011h ;dlouhe U db 011h,011h,00Eh,000h,000h,000h db 03Fh,03Fh,03Fh,03Fh,03Fh,03Fh ; db 03Fh,03Fh,03Fh,03Fh,03Fh,03Fh db 008h,004h,01Fh,001h,001h,00Fh ;dlouhe E db 001h,001h,01Fh,000h,000h,000h db 001h,002h,004h,00Ah,011h,011h ;A s ` db 01Fh,011h,011h,000h,000h,000h db 008h,004h,011h,011h,00Ah,004h ;dlouhe Y db 004h,004h,004h,000h,000h,000h db 00Ah,004h,01Fh,010h,008h,004h ;Z s hackem db 002h,001h,01Fh,000h,000h,000h db 03Fh,03Fh,03Fh,03Fh,03Fh,03Fh db 03Fh,03Fh,03Fh,03Fh,03Fh,03Fh db 03Fh,03Fh,03Fh,03Fh,03Fh,03Fh db 03Fh,03Fh,03Fh,03Fh,03Fh,03Fh db 03Fh,03Fh,03Fh,03Fh,03Fh,03Fh db 03Fh,03Fh,03Fh,03Fh,03Fh,03Fh db 03Fh,03Fh,03Fh,03Fh,03Fh,03Fh db 03Fh,03Fh,03Fh,03Fh,03Fh,03Fh db 03Fh,03Fh,03Fh,03Fh,03Fh,03Fh db 03Fh,03Fh,03Fh,03Fh,03Fh,03Fh ; ; ; ;konstanty: ; pocbit: defb 7 ;pocet platnych bitu v byte masbit: defb 07fh ;maska platnych bitu vstab: defb 3 ;pocet pozic od leveho okraje ; ;papiru (1 poz.=sire 1 bitu) plline: defb 68d ;pocet tistenych znaku na radek lbuff: defb 80d ;delka radku v bufferu vsnmln: defb 12d ;pocet radku v bufferu vstnbz: defb 45d ;pocet zn. rad. na stranu ; ;promenne: ; tfcc: defw tbuff ;ukazovatko zacatku radku v RAM tfcczn: defb 68d ;znakove ukazovatko pozice ;v radku nbrdzn: defb 45d ;pocitadlo znakov. r. na str. numlin: defs 1 ;pocitadlo radku ve znaku tab: defs 1 ;pomocna promenna endp?: defs 1 ;pomocna promenna flags: defb 0 ;riznaky: ;bit0=l-proved vymaz bufferu prosp: defs 2 ;pro ukaz. zas. tbuff: ;pocatek bufferu tiskarny ; ; .dephase ; end tisk