;---------------------------------------------------------------------- ; ; GRAFICKY TISK PRES VYSTUP LIST V CPM ; ;---------------------------------------------------------------------- ; ; .Z80 ASEG ; ; ; DELKA EQU 4CD4H ;DELKA GRAF. MODULU ACCP EQU 0D600H ;POCATEK CCP BDOS EQU 5 ;ADRESA BDOSU identi equ 0ec48h ;identifikace biosu ; ; ; ABDOS EQU 0DE06H ;POCATEK BDOS MODBIO EQU 0EDC4H ;MODIFIK. ADR. V BIOSU VELI EQU 0EC10H ;VSTUP. VEKTOR BIOSU-LIST+1 LIST EQU 0F404H ;ADRESA VYSTUPU LIST MAXBUF EQU 255 ;MAX DELKA BUFFERU DELZAS EQU 64 ;HLOUBKA PRO ZASOBNIK BZN EQU START-MAXBUF-DELZAS ;POCATEK BUFFERU ZNAKU BDIAK EQU BZN-MAXBUF-1 ;BUFFER DIAKRITIKY TPIS EQU BDIAK-MAXBUF-1 ;BUFFER ZMEN PISMA MEZ EQU 20H ;ZNAK MEZERY CR EQU 0DH LF EQU 0AH TAB EQU 9 FF EQU 0CH ESC EQU 1BH SPACE EQU 20H ; ; ; KODY PO ESC, KTERE URCUJI CHARAKTER PISMA ;----------------------------------------------------------- ; ; ELITE EQU 'E' PICA EQU 'P' COND EQU 'C' ITAL EQU 'I' SUBS EQU 'B' SUPERS EQU 'H' NORM EQU 'D' PODTRZ EQU 'U' KONPOD EQU 'R' ;PODTRZENE COND. ; ; ; ROZMERY PISMA ;---------------------------------------------------- ; NORS EQU 'S' ;NORMALNI SIRKA DVOJS EQU 'W' ;DVOJTA SIRKA DVOJVY EQU 'T' ;DVOJTA VYSKA VELKE EQU 'L' TUCNE EQU 'F' UZKE EQU 'N' ;NORMALNI PISMO (ZPET Z TUCNEHO) ; ; ; RADKOVANI ;------------------------------------------------------ ; RDK1 EQU '1' ;RADKOVANI 1 RDK2 EQU '2' ;RADKOVANI 1,5 RDK3 EQU '3' ;RADKOVANI 2 ; ; ; ORG 100H ; ; ; ZAVEDENI PROGRAMU ;------------------------------------------------- ; ZAV: ld hl,identi ;identifikace verze biosu ld de,nap0 ld bc,7 ;delka zony call cpdehl ;porovnani ld de,nap0i ;spatna verze biosu jr nz,napis LD A,0C3H ;VSTUPNI VEKTOR PRO BDOS LD (TPIS-3),A ;OCHRANA PROGRAMU LD HL,ABDOS LD (TPIS-2),HL LD HL,TPIS-3 LD (06),HL LD (MODBIO),HL ;PRI STARTU SYSTEMU ZUSTANE ;PROGRAM BEZ PORUSENI LD HL,FILLBF ;NASTAVENI VEKTORU V BIOSU LD (VELI),HL LD DE,ACCP-DELKA ;PRESUN PROG. DO PRAC. OBLASTI LD HL,STRT LD BC,KONZNG-FILLBF LDIR CALL CLRBUF ;MAZANI BUFFERU LD A,(RTB5) ;TYP PISMA PICA LD (GRAFIK),A ld de,nap1 napis: ld c,9 ;vystup retezce znaku call bdos RST 00 ;KONEC CINNOSTI ZAVADECE ; nap0: defb "1990 v4" nap0i: defb CR,LF,"Chybna verze modulu BIOS!",CR,LF,"$" nap1: defb 0CH defb '**********************************************',CR,LF defb '* *',CR,LF defb "* Modul grafickeho tisku je uspesne zaveden. *",CR,LF defb '* *',CR,LF defb '**********************************************',CR,LF,CR,LF defb 04,'PREPINANI REZIMU TISKU (PO PREFIXU ESC):',06,CR,LF defb 04,'----------------------------------------',06,CR,LF,CR,LF defb ' pica..........P kurziva..........I',CR,LF defb ' elite.........E draft............D',CR,LF defb ' condensed.....C subscript........B',CR,LF defb ' superscript......H',CR,LF,CR,LF defb ' tucne.........F dvojita vyska....T',CR,LF defb ' normal........N dvojita sire.....W',CR,LF defb ' velke............L',CR,LF defb ' standard.........S',CR,LF,CR,LF defb ' podtrzeni.....U radkovani 1......1',CR,LF defb ' konec podtr...R radkovani 1,5....2',CR,LF defb ' radkovani 2......3',CR,LF,CR,LF defb 'Subscript a superscript pouze v kodu ASCII.','$' ; ; ; Porovnani zon ;----------------------------------------------------- ; ;Porovna dve zony v oper. pameti. ;Vstup: hl = adresa pocatku 1. zony ; de = adresa pocatku 2. zony ; bc = delka zony ;Vystup:Priznak nuly je nastaven pri souhlasu zon, pri ; nesouhlasu je priznak nuly nulovan. ;Meni: hl,de,bc,af ; ; cpdehl: ld a,(de) inc de cpi ret nz ;pri nesouhlasu jp pe,cpdehl ;dalsi znak ret ; ; ; STRT: .PHASE ACCP-DELKA START: ; ; ; PRIJEM ZNAKU PRO TISKARNU ;------------------------------------------------- ; ;VSTUP: ZNAK, KTERY SE MA TISKNOUT V REGISTRU C ;ZNAK JE ULOZEN DO BUFFERU, ODKUD SE PO PRIJMU CR NEBO LF ODVYSILA ; ; FILLBF: LD (PROSP),SP ;ULOZENI ZASOBNIKU LD SP,START ;NOVY ZASOBNIK LD HL,NAVRAT ;NAVRATOVA ADRESA PUSH HL LD HL,FLAGS2 ;NENI SUBSC. NEBO SUPERS.? BIT 7,(HL) JR Z,SUBNO ;SKOK,POKUD NENI RES 7,C ;NEZNAJI DIAKRITIKU SUBNO: LD A,C ;ZNAK DO A LD HL,FLAGS1 ;NEBYLO MINULE ESC? BIT 3,(HL) JP NZ,SETPIS ;SKOK POKUD BYLO CP MEZ ;NENI RIDICI ZNAK? JR C,RZN ;SKOK POKUD JE SUB 0DBH ;NEJSOU VELKA PISMENA S DIAKR.? JR C,VPNE ;POKUD NE LD H,0 LD L,A ;BAZOVA ADRESA PREVODNI TABULKY ADD HL,HL LD DE,TABUP ;PREVODNI TABULKA VELKYCH PISMEN S DIAKR. ADD HL,DE LD B,(HL) ;DIAKRITIKA INC HL LD C,(HL) ;PISMENO LD HL,BDIAK ;BUFFER DIAKRITIKY LD DE,(UKR) ;SEM SE MA UKLADAT ADD HL,DE ;ABS ADRESA LD (HL),B ;DIAKRITIKA LD HL,FLAGS1 ;NASTAVENI PRIZNAKU DIAKRITIKY SET 0,(HL) VPNE: LD DE,(UKR) ;UKAZOVATKO LD HL,BZN ;BUFFER ZNAKU ADD HL,DE ;ABS. ADRESA LD (HL),C ;ULOZENI ZNAKU INC DE ;POSUN UKAZOVATKA LD (UKR),DE ;A ULOZENI EX DE,HL ;ADRESA DO DE LD HL,MAXBUF+BZN ;MAX ADRESA AND A SBC HL,DE PUSH AF CALL C,OBSCR ;VYSLANI BUFFERU + CR POP AF CALL C,OBSLF ;VYSLANI LF RET ; ; NAVRAT: LD SP,(PROSP) ;OBNOVENI UKAZATELE RET ; ; ; OBSLUHA RIDICICH ZNAKU ;--------------------------------------------------- ; ; RZN: CP CR JR Z,OBSCR CP LF JR Z, OBSLF CP FF JR Z,OBSFF CP TAB JR Z,OBSTAB CP ESC JR Z,OBSESC RET ; OBSESC: SET 3,(HL) RET OBSTAB: LD C,SPACE ;TISK MEZERY CALL FILLBF LD A,(DELTAB) ;MASKA TABULATORU LD B,A LD A,(UKR) ;POZICE V RADKU AND B JR NZ,OBSTAB RET OBSFF: CALL SENDBF ;TISKNI BUFFER,JE-LI NENULOVY CALL OBSCR CALL OBSLF LD C,FF ;VYSLANI NOVE STRANKY CALL SENDZN RET OBSCR: CALL SENDBF ;TISKNI BUFFER, JE-LI NENULOVY LD C,CR CALL SENDZN RET OBSLF: CALL SENDBF LD C,LF CALL SENDZN LD HL,FLAGS1 BIT 4,(HL) ;BYL MINULE VYSLAN RADEK? RES 4,(HL) ;NEBUDE VYSLAN RET NZ ;POKUD BYL LD A,(RADK1) ;NAHRADA DIAKRITIKY CALL TRANN ;POSUN VALCE RMEZ: LD HL,RTB3 CALL SENDCO ;PRIPRAVA PRISTIHO RADKOVANI LD A,(RADK4) LD C,A CALL SENDZN RET ; ; ; ZMENA CHARAKTERU PISMA ;------------------------------------------------- ; SETPIS: RES 3,(HL) ;SHOZENI PRIZNAKU ESC LD HL,TAZ ;POC.TABULKY LD BC,KTAZ-TAZ ;DELKA CPIR ;PROHLEDAVA SE DEC HL RET NZ ;KOD SE NENASEL, NAVRAT LD DE,TAZ AND A SBC HL,DE ;RELAT. POZICE LD BC,PISNAV ;NAVRATOVA ADRESA PUSH BC LD BC,ROZTAB ;TABULKA ROZESKOKU SLA L ;HLx2 RL H ADD HL,BC ;ADRESA V TABULCE LD C,(HL) ;PREVZETI ADRESY INC HL LD B,(HL) PUSH BC ;PRO ROZESKOK LD HL,FLAGS1 ;JE ZMENA PISMA SET 1,(HL) LD HL,TPIS ;BUFFER ZMEN PISMA LD BC,(UKR) ;ABS. ADRESA ADD HL,BC LD A,(FLAGS2) ;STARE NASTAVENI LD (HL),A RET ;ROZESKOK PISNAV: LD A,(HL) LD (FLAGS2),A ;POSLEDNI STAV RET ; ; TAZ: DEFB ELITE,PICA,COND,ITAL DEFB SUBS,SUPERS DEFB NORM,PODTRZ,KONPOD DEFB NORS,DVOJS,DVOJVY,VELKE DEFB TUCNE DEFB UZKE DEFB RDK1,RDK2,RDK3 KTAZ: ; ; ROZTAB: DEFW SELIT,SPICA,SCOND,SITAL DEFW SSBSC,SSUPS DEFW SNORM,SPODTR,SCONPO DEFW SNORSI,SDVOSI,SDVOVY DEFW SVELKE,STUCNE,SUZKE DEFW SRDK1,SRDK2,SRDK3 ; ; SELIT: SET 2,(HL) RES 1,(HL) RET ; SPICA: SET 1,(HL) RES 2,(HL) RET ; SCOND: SET 1,(HL) SET 2,(HL) RET ; SITAL: SET 0,(HL) RES 7,(HL) RET ; SNORM: RES 0,(HL) RES 7,(HL) RET ; SSBSC: SET 0,(HL) SET 7,(HL) RET ; SSUPS: RES 0,(HL) SET 7,(HL) RET ; SPODTR: SET 3,(HL) RET ; SCONPO: RES 3,(HL) RET ; SNORSI: RES 4,(HL) RES 5,(HL) RET ; SDVOSI: SET 4,(HL) RES 5,(HL) RET ; SDVOVY: RES 4,(HL) DV1: SET 5,(HL) PUSH HL LD HL,FLAGS1 SET 2,(HL) ;DVOJTA VYSKA PISMA POP HL RET ; SVELKE: SET 4,(HL) JR DV1 ; STUCNE: SET 6,(HL) RET ; SUZKE: RES 6,(HL) RET ; SRDK1: POP HL ;LIKVIDACE NAVR. ADRESY LD HL,(TRDK1) ;RADKOVANI 1 LD (RADK4),HL RET ; SRDK2: POP HL ;LIKVIDACE NAVR. ADRESY LD HL,(TRDK2) ;RADKOVANI 1,5 LD (RADK4),HL RET ; SRDK3: POP HL ;LIKVIDACE NAVR. ADRESY LD HL,(TRDK3) ;RADKOVANI 2 LD (RADK4),HL RET ; ; ; TABULKA VELKYCH PISMEN S DIAKRITIKOU ;-------------------------------------------------- ; ;PRVNI BAJT JE ZNAK DIAKRITIKY, DRUHY PISMENO ; ; TABUP: DEFB 0,0 DEFB 0EEH,20H ;HACEK DEFB 0,0 DEFB 0,0 DEFB 0,0 DEFB 0EBH,20H ;CARKA DEFB 0EBH,41H ;A' DEFB 0,0 DEFB 0EEH,43H ;C S HACKEM DEFB 0EEH,44H ;D SHACKEM DEFB 0EEH,45H ;E SHACKEM DEFB 0EBH,52H ;R' DEFB 0,0 DEFB 0EDH,55H ;U" DEFB 0EBH,49H ;I' DEFB 0EAH,55H ;U S KROUZKEM DEFB 00,0ECH ;L' DEFB 0EEH,4CH ;L S HACKEM DEFB 0EDH,4FH ;O" DEFB 0EEH,4EH ;N S HACKEM DEFB 0EBH,4FH ;O' DEFB 0F0H,4FH ;O SE STRISKOU DEFB 0EDH,41H ;A" DEFB 0EEH,52H ;R S HACKEM DEFB 0EEH,53H ;S S HACKEM DEFB 0EEH,54H ;T S HACKEM DEFB 0EBH,55H ;U' DEFB 0,0 DEFB 0EBH,45H ;E' DEFB 0F8H,41H ;A` DEFB 0EBH,59H ;Y' DEFB 0EEH,5AH ;Z S HACKEM DEFB 0,0 DEFB 0,0 DEFB 0,0 DEFB 0,0 ; ; ; TISK ZNAKU Z BUFFERU ;-------------------------------------------------- ; ; SENDBF: LD BC,(UKR) ;UKAZOVATKO V RADKU LD A,B OR C RET Z ;NAVRAT, POKUD JE LD HL,RTB1 ;HLAVA NA ZAC. RADKU, CR=CR CALL SENDCO LD A,(RADK1) ;POSUV ZA DIAKRITIKU + RADK2 LD HL,FLAGS1 BIT 2,(HL) ;JSOU V RADKU VELKA PISMENA? JR Z,LANO LD A,(RADK5) BIT 0,(HL) JR Z,SNDBD ;VYSLI POUZE TELO SET 6,(HL) ;BUDE SE VYSILAT DIAKR. VELKYCH PISMEN LD A,(RADK4) CALL TRANN ;POSUN VALCE LD HL,POMP5 ;ZAKAZEME PODTRZENI RES 0,(HL) LD HL,BDIAK ;A TISKNEME LD DE,(UKR) CALL TISKNL LD A,(RADK6) ;MEZERA MEZI DIAKRITIKOU A PISMEM SNDBD: LD HL,FLAGS1 RES 6,(HL) ;DIAKR. VELKYCH PISM. SE NEVYSILA SET 5,(HL) ;VYSILAME VRCHNI PULKU ZNAKU CALL TRANN ;POSUN VALCE LD HL,BDIAK ;A TISKNEME LD DE,(UKR) CALL TISKNL LD HL,FLAGS1 RES 5,(HL) ;SPODNI PULKA ZNAKU JR KONCNE LANO: BIT 0,(HL) ;BYLA DIAKRITIKA? JR Z,SENDBO ;SKOK, POKUD NE LD HL,BDIAK ;OFFSET DIAKRITIKY ADD HL,BC ;POSLEDNI ZNAK V DIAKRITICE NODIA: LD A,(HL) ;PREVZETI ZNAKU DEC HL ;JEDEME ZPET DEC BC AND A ;JE ZNAK? JR Z,NODIA ;HLEDAME POSLEDNI ZNAK INC BC ;A MAME HO INC BC LD E,C LD D,B LD HL,POMP5 ;ZAKAZEME PODTRZENI RES 0,(HL) LD HL,BDIAK ;SPOCITAME POCET ZNAKU CALL TISKNL ;A TISKNEME KONCNE: LD A,(RADK2) ;MEZERA MEZI HACKY A PISMENY SENDBO: CALL TRANN ;A POSUNEME VALEC LD HL,POMP5 ;POVOLIME PODTRZENI SET 0,(HL) LD DE,(UKR) ;TISK VLASTNIHO RADKU LD HL,BZN ;POCATEK CALL TISKNL ;A TISKNEME CALL RMEZ ;MEZERA MEZI RADKY TEXTU LD HL,FLAGS1 ;VYSTUPNI NASTAVENI RES 0,(HL) ;BEZ DIAKRITIKY RES 1,(HL) ;NENI ZMEMA PISMA SET 4,(HL) ;VYSLAL SE RADEK LD HL,0 LD (UKR),HL ;UKAZOVATKO NA ZACATEK CLRBUF: LD BC,START-DELZAS-1-TPIS ;NULOVANI BUFFERU LD HL,TPIS ;A PRIZNAKU LD (HL),0 LD E,L LD D,H INC DE LDIR LD A,(FLAGS2) ;PREPIS FLAGU PRO PRISTI RADEK LD (CFLAGS),A BIT 5,A ;JSOU JESTE VELKA PISMENA? RET NZ LD HL,FLAGS1 ;SHODIME PRIZNAK VELKYCH PISMEN RES 2,(HL) RET ; ; ; VYSLANI RADKU V NLQ ;-------------------------------------------------- ; ;DLE OBSAHU PROMENNE PPRUCH (POCET PRUCHODU) POSTUPNE ;TISKNE RADKY A TVORI TAK NLQ TISK ;VSTUP: HL=ADRESA ODKUD SE MAJI PREBIRAT ZNAKY ; DE=POCET ZNAKU K VYSLANI ; ; TISKNL: LD BC,0 ;OFFSET NULOVY LD (POMPR),BC LD A,(PPRUCH) ;POCET PRUCHODU LD (POMP1),HL LD (POMP2),DE PUSH AF NTISK: LD A,(CFLAGS) ;PRIZNAKY LD (FLAGS2),A ;ZKOPIRUJEME DO HL. PROMENNE CALL NSTZ ;NASTAVENI VSTUP. PARAM. LD HL,(POMP1) ;ODTUD SE BUDOU VYBIRAT ZNAKY LD DE,(POMP2) ;POCET ZNAKU CALL OUTLI ;VYSLANI RADKU LD BC,(POMPR) ;OFFSET VE ZNAK. GEN. LD HL,(PBYTS) ;POCET BYTU NA JEDEN PRUCHOD LD H,0 ADD HL,BC ;OFFSET VE ZNAKOVEM GENERATORU LD (POMPR),HL ;ULOZENI NOVEHO OFFSETU POP AF DEC A ;POCET PRUCHODU VYCERPAN? RET Z ;ANO, VRACIME SE PUSH AF LD A,(RADK3) ;POSUN VALCE PRO DALSI PRUCHOD PUSH BC CALL TRANN POP BC JR NTISK ; ; ; VYSLE RADEK SE ZMENOU PARAMETRU ;------------------------------------------------------ ; ;VSTUP: HL=ADRESA, ODKUD SE MAJI PREBIRAT ZNAKY ; DE=CELKOVY POCET ZNAKU K VYSLANI ; (PZNG)=POCATEK ZNAK. GEN. ; (POMP)=OFFSET VE ZNAK. GEN. ; ; OUTLI: PUSH HL LD HL,FLAGS1 BIT 1,(HL) ;BYLA ZMENA PISMA? JR NZ,PARCV ;SKOK NA POSTUPNE VYSLANI RADKU POP HL ;VYSLANI CELEHO RADKU CALL VYSLIR RET PARCV: LD (POMP3),DE ;ODLOZENI CELK. POCTU ZNAKU LD DE,0 LD (POMP4),DE ;REL. POZICE V RADKU 0 DAPAR: LD DE,(POMP4) ;REL POZICE DO DE CALL NXTCH ;NAJDI ZMENU PISMA PUSH AF EX DE,HL LD DE,(POMP4) ;SOUCASNA REL. ADRESA LD A,E ;NENI ZACATEK RADKU? OR D JR Z,STRAD DEC DE STRAD: INC HL LD (POMP4),HL ;PRISTI REL. ADRESA DEC HL AND A SBC HL,DE ;POCET ZNAKU K VYSLANI EX DE,HL POP HL ;ODTUD SE BUDE TISKNOUT EX (SP),HL CALL VYSLIR ;TISKNI RADEK POP AF RET C ;VSE VYSLANO,NAVRAT PUSH HL ;PRISTI ADRESA, ODKUD SE BUDE TISKNOUT LD DE,(POMP4) DEC DE LD HL,TPIS ADD HL,DE ;TRANSFORMACE UKAZ. DO TBUF CALL NASTZ ;NASTAV ZMENU TISKU JR DAPAR ;DALSI KOLO ; ; ; VYSLANI RADKU V GRAFICKEM MODU ;--------------------------------------------------- ; ;VSTUP: HL=ADRESA ODKUD SE MAJI PREBIRAT ZNAKY ; DE=POCET ZNAKU K VYSLANI ; (POMPR)=OFFSET VE ZNAKOVEM GENERATORU ; (PZNG)=POCATEK ZNAK. GENERATORU ;VYSTUP:HL=DALSI POZICE, ODKUD SE MA VYBIRAT ZNAK ; ; VYSLIR: LD A,D ;NENI NULOVA DELKA? OR E RET Z PUSH HL ADD HL,DE ;DALSI MISTO TISKU LD (POMP6),HL LD HL,FLAGS2 BIT 5,(HL) ;MA BYT DVOJTA VYSKA PISMA? JR Z,JDNT ;POKUD NE LD HL,FLAGS1 BIT 5,(HL) ;VRCHNI PULKA ZNAKU? JR Z,JDNT ;POKUD NE LD BC,MAXBUF+1 ;ZNAKY SE BUDOU VYBIRAT Z BZN POP HL ADD HL,BC PUSH HL JDNT: PUSH DE LD HL,RTB2 ;NASTAVENI GRAF. MODU TISKARNY CALL SENDCO LD A,(GRAFIK) ;TYP GRAFIKY (PISMA) LD C,A CALL SENDZN ;VYSLANI DO TISKARNY POP DE PUSH DE LD A,(PBYTS) ;POCET BYTU NA ZNAK CALL AxDE ;VYNASOBENI LD A,(FLAGS2) ;NENI SIROKE? AND 10H JR Z,SIRNRM ;SKOK,POKUD NENI ADD HL,HL ;DVOJTY POCET BYTE SIRNRM: LD C,L ;VYSLANI POCTU BYTU PRO GRAFIKU CALL SENDZN LD C,H CALL SENDZN POP DE ;POCET ZNAKU K VYSLANI POP HL ;ODTUD SE BUDE VYSILAT DALZN: PUSH HL PUSH DE LD E,(HL) ;PREVZETI ZNAKU LD D,0 CELBY: LD A,(PRUxBY) ;POCET BYTU NA ZNAK x POCET PRUCHODU CALL AxDE ;DO HL REL. POCATEK 1. BYTU ZNAKU LD DE,(POMPR) ;OFFSET ADD HL,DE ;ABS. ADRESA LD DE,(PZNG) ;POCATEK ZN. GEN. ADD HL,DE ;ABS. ADRESA LD A,(PBYTS) ;POCET BYTU NA ZNAK LD B,A LD E,0 ALLSB: LD A,(FLAGS1) ;JE V RADKU DVOJTA VYSE PISMA? BIT 2,A JR Z,NORPOK ;SKOK, POKUD NENI BIT 6,A ;TISKNE SE DIAKRITIKA VELKYCH PISMEN? LD A,(FLAGS2) JR Z,NATELO ;POKUD NE BIT 5,A ;UZ JSOU VELKA PISMENA? LD C,0 CALL NZ,TRANSF ;POKUD, ANO PROVED ZVETSENI JR NORP1 NATELO: BIT 5,A ;JSOU UZ VELKA PISMENA? JR Z,NORPOK ;POKUD NE, NORMALNE POKRACUJ CALL TRANSF ;PROVED ZVETSENI PUSH HL LD HL,FLAGS1 ;SPODNI NEBO HORNI PULKA? BIT 5,(HL) POP HL JR Z,NORP1 ;PRI SPODNI PULCE LD C,A JR NORP1 NORPOK: LD C,(HL) ;PREVZETI BYTU NORP1: LD A,(FLAGS2) BIT 3,A JR Z,NOUND PUSH AF LD A,(POMP5) ;JE POVOLENO PODTRZENI? AND 01 OR C LD C,A POP AF NOUND: BIT 6,A LD A,E LD E,C JR Z,NOFET OR C LD C,A NOFET: CALL SENDZN ;JEHO VYSLANI LD A,(FLAGS2) ;JE SIROKE PISMO? BIT 4,A JR Z,SRNRM ;SKOK, POKUD NENI CALL SENDZN ;VYSLI JESTE JEDNOU SRNRM: INC HL ;POSUN UKAZOVATKA DJNZ ALLSB ;VSECHNY BYTY ZNAKU POP DE POP HL INC HL ;DALSI ZNAK DEC DE ;JEDEN JSME VYSLALI LD A,E ;VSE VYSLANO? OR D JR NZ,DALZN ;POKUD ANO LD HL,(POMP6) RET ; ; ;TRANSFORMACE BAJTU ZE ZNAK. GEN. NA DVOJNASOBNOU VELIKOST ;--------------------------------------------------------- ; ;VSTUP: HL=ADRESA V ZNAKOVEM GENERATORU ;VYSTUP:C=SPODNI POLOVINA, A=HORNI POLOVINA DVOJBAJTU ; ; TRANSF: LD A,(HL) PUSH HL PUSH BC RLCA LD C,A LD HL,0 LD B,8 ROZM1: SLA L RL H AND 01 OR L LD L,A SLA L ;HL x 2 RL H AND 01 OR L LD L,A RLC C LD A,C DJNZ ROZM1 POP BC LD C,L LD A,H POP HL RET ; ; ; NALEZENI ZMENY PISMA V BAFRU TPIS ;------------------------------------------------------------ ; ;PROGRAM PROHLESAVA ZONU PRIZNAKU OD RELAT. ADRESY V DE A HLEDA ;ZMENU PROTI PROMENNE CFLAGS. NAVRAT S NC-ZMENA NALEZENA, DE ;OBSAHUJE PRVNI PLATNOU ADRESU S PRISTIM TYPEM PISMA. NAVRAT ;S C-ZMENA DO REL. ADRESY V (POMP3) NEBYLA NALEZENA. HL PRI NAVRATU ;OBSAHUJE ADRESU ZMENY V BUFFERU TPIS. ; ; NXTCH: LD HL,TPIS ;BUFFER ZMEN PISMA ADD HL,DE ;ODTUD SE BUDE PROHLEDAVAT LD BC,(FLAGS2) ;STAVAJICI STAV DO C NXTBT: LD A,(HL) AND A JR Z,BEZZM XOR C ;POROVNANI RET NZ ;NAVRAT, ZMENA NALEZENA BEZZM: PUSH HL LD HL,(POMP3) ;KONEC BUFFERU? SCF SBC HL,DE POP HL RET C ;BUFFER VYCERPAN, NAVRAT INC DE INC HL JR NXTBT ; ; ; PROVEDE NASTAVENI TISKU DLE BYTE ZMENY V TPIS ;------------------------------------------------------- ; ;VSTUP: HL=ADRESA BYTE ZMENY V BUFFERU TPIS ; ; NASTZ: LD A,(HL) LD (FLAGS2),A ;ULOZENI NOVEHO STAVU NSTZ: LD B,A LD HL,POCZNG ;POCATEK ZNAK. GENER. BIT 7,A JR NZ,SCRIPT ;SKOK PRI SCRIPTU BIT 0,A ;NORMAL NEBO KURZIVA? JR Z,PNRML ;SKOK PRI NORMAL LD DE,(POCCUR) ;REL. POCATEK KURZIVY SETCNT: ADD HL,DE PNRML: LD (PZNG),HL ;POC. ZNAK. GEN LD B,A ;ODLOZENI LD A,(RTB5+1) ;ELITE BIT 1,B JR Z,ELJE ;SKOK PRI ELITE LD A,(RTB5) ;PICA BIT 2,B ;NENI CONDENSED? JR Z,ELJE ;SKOK POKUD NENI LD A,(RTB5+2) ;CONDENZED ELJE: LD (GRAFIK),A RET SCRIPT: LD DE,(POCSUB) ;OFFSET SUBSCRIPTU BIT 0,A JR NZ,SETCNT ;PRI SUBSCRIPTU LD DE,(POCSUP) ;OFFSET SUPERSCRIPTU JR SETCNT ; ; ; VYSLANI SERIE BYTU Z PAMETI NA TISKARNU ;------------------------------------------------------- ; ;VYSLE SKUPINU BYTU OD (HL), KONEC OZNACEN 0FFH ; ; SENDCO: LD A,(HL) INC HL CP 0FFH RET Z PUSH BC LD C,A CALL SENDZN POP BC JR SENDCO ; RTB1: DEFB 1BH,35H,00H,CR,0FFH ;CR=CR+JEHO VYSLANI RTB2: DEFB 1BH,2AH,0FFH ;TISKARNA DO GRAF. MODU (DALE SE MUSI ;VYSLAT DRUH GRAFIKY A POCET BYTU) RTB3: DEFB 1DH,1,1BH,33H,0FFH ;POSUN VALCE O n/144" - n SE ;VYSILA JAKO DALSI BYTE RTB4: DEFB CR,LF,0FFH ;NOVY RADEK RTB5: DEFB 1,7,3 ;TYP PISMA-PICA, ELITE, COND. ;U ELITE SE TISKNE TUCNE VE FORM. PICA ; ; ; POSUN VALCE O n/144" ;--------------------------------------------------------- ; ;VSTUP:A=n ; ; TRANN: PUSH AF LD HL,RTB3 CALL SENDCO POP AF LD C,A CALL SENDZN LD HL,RTB4 CALL SENDCO RET ; ; ; VYSLANI BYTE NA TISKARNU ;--------------------------------------------------------- ; ;VYSLE BYTE Z C NA TISKARNU ; ; SENDZN: PUSH HL PUSH BC PUSH DE CALL LIST POP DE POP BC POP HL RET ; ; ; NASOBENI ;--------------------------------------------------------- ; ;VSTUP: A,DE - CINITELE ;VYSTUP: AHL ; ; AxDE: LD HL,0 LD B,H LD C,A LD A,H DALRAD: BIT 0,C JR Z,VYRAD ADD HL,DE ADC A,B VYRAD: SLA E RL D RL B SRL C JR NZ,DALRAD RET ; ; UKR: DEFW 0 ;UKAZOVATKO V BUFFERU FLAGS1: DEFB 0 ;BIT0 = H - JE DIAKRITIKA ;BIT1 = H - JE ZMENA PISMA ;BIT2 = H - DVOJTA VYSKA PISMA V RADKU ;BIT3 = H - MINULE BYLO ESC (1BH) ;BIT4 = H - MINULE SE TISKNUL RADEK ;BIT5 = H - HORNI CAST VYSOKEHO PISMA, L DOLNI ;BIT6 = H - TISKNE SE DIAKR. VYS. PISMA ;BIT7 - NEPOUZITO FLAGS2: DEFB 2 ;BIT0 = H - KURZIVA,SUBSC,L=DRAFT,SUPERSC. ;BIT1,2 =H,L-PICA, =L,H-ELITE, =H,H=CONDENS. ;BIT1,2 =L,L NESMI BYT POUZITO - VE FLAGS2 ;MUSI BYT VZDY ALESPON JEDEN BIT NA H ;BIT3 = H - PODTRZENI ;BIT4,5 = H,L - DVOJTA SIRE PISMA ;BIT4,5 = L,H - DVOJTA VYSE PISMA ;BIT4,5 = H,H - VELKE PISMO ;BIT4,5 = L,L - NORMALNI PISMO ;BIT6 = H - TUCNE PISMO ;BIT7 - L=DRAFT,KURZIVA, H=SUBSC., SUPERS. CFLAGS: DEFB 2 ;KOPIE FLAGS2 PROSP: DEFW 0 ;PRO ADRESU ZASOBNIKU DELTAB: DEFB 7 ;MASKA TABULATORU GRAFIK: DEFS 1 ;DRUH GRAFIKY PZNG: DEFW POCZNG ;POCATEK ZNAKOVEHO GENERATORU POMPR: DEFW 0 ;POMOCNA PROMENNA POMP1: DEFW 0 ;DTTO POMP2: DEFW 0 ;DTTO POMP3: DEFW 0 ;DTTO POMP4: DEFW 0 ;DTTO POMP5: DEFB 0 ;DTTO- BIT 0 HxL=POVOLENIxZAKAZ PODTRZENI POMP6: DEFS 2 ;DTTO RADK1: DEFB 17 ;POSUN VALCE JAKO NAHRADA ZA DIAKRITIKU ;+RADK2 (V 144") RADK2: DEFB 16 ;MEZERA MEZI DIAKRITIKOU A ZNAKY (V 144") RADK3: DEFB 1 ;POSUN PRO NLQ (V 144") RADK4: DEFB 19 ;ROZESTUP MEZI RADKY (V 144") RADK5: DEFB 36 ;ROZTEC RADKU (V 144") RADK6: DEFB 17 ;DTTO RADK2 PRO VYSOKA PISMENA TRDK1: DEFB 7,24 ;TABULKY ROZESTUPU RADKU TRDK2: DEFB 19,36 TRDK3: DEFB 31,48 ; ; ;NASLEDUJE ZNAKOVY FONT, KTERY MUSI MIT NA POCATKU NASLEDUJICI ;SPECIFIKACE: ;--------------------------------------------------------------------- PPRUCH: DEFB 2 ;POCET PRUCHODU PRI TISKU PBYTS: DEFB 12 ;POCET BYTU ZNAKU PRI JEDNOM PRUCHODU PRUxBY: DEFB 24 ;POCET BYTU NA ZNAK V ZNAK. GEN. POCCUR: DEFW 1800H ;OFFSET ZNAK. GEN. KURZIVY POCSUB: DEFW 3000H ;OFFSET SUBSCRIPTU POCSUP: DEFW 3C00H ;OFFSET SUPERSCRIPTU POCZNG: ;SEM PRIJDE FONT ; KONZNG EQU POCZNG+4800H .DEPHASE ZZZZ: ; IF2 IF KONZNG+1-ACCP .PRINTX / P O Z O R ! KONEC ZNAK. GENERATORU MUZE PREKRYT CCP- ZKONTROLUJ!/ ENDIF ENDIF END