; TEXT-EDITOR 4/8 ; Anders Franz`n <5258> ; Stockholm april 1985 ; Uppdaterad juli 1985 SKRIVTA1 LD DE,BUFF2 PUSH DE LD A,(24:96) Kolla checksumma CP 175 PUSH AF CALLZ 24:96 \vers{tt till POP AF ASCII CALLNZ 24:98 EX DE,HL POP DE AND A Ber{kna l{ngd SBC HL,DE p} str{ngen LD C,L LD B,H EX DE,HL RET ;Skriv ut talet HL SKRIVTAL CALL SKRIVTA1 JP 0:11 ;Skriv ut talet HL med rak h|gerkant SKRTAL CALL SKRIVTA1 PUSH HL PUSH BC LD HL,SPACE LD A,5 SUB C LD C,A CALLNZ 0:11 POP BC POP HL JP 0:11 MULTIPL LD A,(55:107) Kolla CP 66 checksumma! JPZ 55:107 9913 eller 10042 JP 55:116 annars 11273 DIVISION LD A,(55:127) Checksummekoll CP 122 h{r ocks}! JPZ 55:127 9913 eller 10042 JP 55:136 annars 11273 EDITOR LD A,(T\MFLG) AND A Sk{rm t|mmas? LD A,23 Ej rad 23! CALLNZ 2:120 Ja, formfeed! XOR A LD (T\MFLG),A LD (SIDFLG),A LD A,(1:216) Sk{rmstorlek CP 40 LD HL,ED6-1 JRZ ED1 LD HL,ED7-1 ED1 LD A,(L[NGD) Radl{ngden ED2 INC HL Sl} i tabell SUB 40 JRNZ ED2 LD A,(HL) PUSH AF Spara rader/sida LD E,A DE = antal rader LD D,0 per sida LD (SIDSTORL),DE LD A,(SCRFLG) AND A Scroll-mode ? JRZ ED3 Nej, hoppa LD HL,(\VERST) PUSH HL L{gg |versta JR ED4 raden p} stack ED3 LD HL,(RAD) DEC HL PUSH DE CALL DIVISION Ber{kna HL=HL/DE POP DE PUSH HL Spara sidnr - 1 CALL MULTIPL Ber{kna HL=HL*DE INC HL \versta raden LD (\VERST),HL p} sidan EX (SP),HL INC HL Sidnr LD (SIDNR),HL PUSH HL LD HL,ED8 LD BC,GET-ED8 CALL 0:11 Skriv "sid " POP HL Sidnr CALL SKRIVTAL Skriv ut sidnr ED4 POP DE \versta raden POP BC Antal rader LD IX,3:116+2*3 Tabell i ROM ED5 PUSH BC PUSH DE CALL TILLBUFF H{mta n{sta rad CALL SKRIV1 Skriv ut rad POP DE POP BC INC DE N{sta rad DJNZ ED5 Skriv hela sidan LD L,B SAKNAS kan vara LD H,B felaktigt nu ! LD (BRAD),HL CALL TANGENT Behandla tangent CP 255 CTRL-C , CTRL-@? JPZ MENY Ja, till meny JP EDITOR Upprepa ED6 DEFB 20,10,6,5 ED7 DEFB 20,20,10,10 ED8 DEFB 27,61,32+0,32+37 DEFM " " DEFB 27,61,32+0,32+33 DEFM "sid " GET CALL 0:2 H{mta tangent PUSH AF Spara tecken XOR A St{ng av ljud- OUT (6),A generatorn CALL BLANK Blanka rad 23 + LD A,(KLKFLG) en liten paus AND A Klickmode ? JRZ GET1 Nej, hoppa LD A,57 Ett kn{pp i OUT (6),A h|gtalaren GET1 POP AF RET TANGENT LD DE,(RAD) PUSH DE CALL TILLBUFF H{mta raden POP HL LD DE,(\VERST) AND A SBC HL,DE LD E,L LD D,H LD A,(1:216) Sk{rmbredd 40/80 LD C,A LD A,(L[NGD) Radl{ngden TAN1 SUB C JRZ TAN2 JRC TAN2 ADD HL,DE JR TAN1 TAN2 LD A,L ADD 3 LD (SRAD),A Sk{rmrad f|r rad LD E,A TAN3 LD A,(KOL) LD B,A Loopvariabel LD C,A Virtuell kolumn LD D,A V{rde maxflagga INC B LD HL,BUFF1 Peka p} rad TAN4 LD A,(HL) Tag tecken i rad INC HL CP 32 CTRL-tecken ? JRNC TAN5 Nej, hoppa CP 6 Slut grafik? JRZ TAN5 Ja, hoppa CP 23 Start grafik ? JRZ TAN5 Ja, hoppa INC D \ka maxflagga LD A,B [r mark|ren p} DEC A CTRL-tecknet? JRZ TAN5 Ja, hoppa INC C Mark|r }t h|ger LD A,(L[NGD) CP C Utanf|r raden? JRNZ TAN5 Nej, hoppa LD HL,KOL DEC (HL) Minska kolumn JR TAN3 TAN5 DJNZ TAN4 R{kna vidare LD A,D LD (MAXFLG),A LD A,(1:216) Sk{rmbredd 40/80 LD B,A LD A,C Virtuell kolumn TAN6 INC E N{sta sk{rmrad SUB B rakt under JRNC TAN6 Utanf|r sk{rm ADD B ]terst{ll DEC E LD D,A Mark|rkolumn PUSH DE Spara mark|r LD HL,0:0 LD (253:243),HL ;CUR(0,0) LD HL,TAN17 LD BC,6 LD A,(INSFLG) AND A JRNZ TAN7 LD HL,SPACE TAN7 CALL 0:11 Ev ;" " LD HL,TAN18 LD C,6 En blank efter LD A,(ORDFLG) text ! DEC A JRZ TAN8 LD HL,TAN19 DEC A JRZ TAN8 LD HL,SPACE TAN8 CALL 0:11 Ev ;" " LD HL,TAN20 LD C,7 Tv} blanka efter LD A,(S\KFLG) text!! AND A JRNZ TAN9 LD HL,TAN21 LD A,(BYTFLG) AND A JRNZ TAN9 LD HL,SPACE TAN9 CALL 0:11 Ev ;" " LD HL,(EOT) eller ;" " LD DE,(TXT) AND A SBC HL,DE Anv{nda bytes PUSH HL LD HL,(MAX) AND A SBC HL,DE Totalt bytes LD DE,100 CALL DIVISION EX DE,HL POP HL CALL DIVISION CALL SKRIVTAL Skriv procenttal LD HL,TAN22 LD C,TANTAB-TAN22 CALL 0:11 ;"% "CUR(0,24) LD HL,(RAD) CALL SKRIVTAL Skriv radnummer LD HL,SPACE LD C,1 CALL 0:11 ;" " LD HL,(KOL) INC HL CALL SKRIVTAL Skriv kolumnnr LD HL,SPACE LD A,33 SUB (IY-34) Antal tkn kvar LD C,A CALLNZ 0:11 Blanka bakom LD HL,0:1 LD (253:243),HL ;CUR(1,0) LD A,(1:216) Sk{rmbredd 40/80 LD E,A Spara bredd LD HL,TAN15-1 CP 40 40-teckensmod? JRZ TAN10 Ja, hoppa LD HL,TAN16-1 TAN10 LD A,(KOL) LD D,A Spara kolumn TAN11 INC HL Sl} i tabell SUB 40 JRNC TAN11 LD C,(HL) Ber{kna LD B,0 startposition LD HL,TABRAD1 i tabraden ADD HL,BC LD C,E Sk{rmbredd 40/80 LD A,C CP 40 40-tecken? JRZ TAN13 Ja, hoppa LD A,(L[NGD) CP 40 Radl{ngden=40? JRZ TAN12 Ja, hoppa LD C,80 CP 120 Radl{ngd<>120? JRNZ TAN13 Ja, hoppa LD A,D Kolumn mark|r CP C Kolumn < 80 ? JRC TAN13 Ja, hoppa TAN12 PUSH HL Spara tabraden LD HL,(3:118) Adress rad 1 LD C,40 ADD HL,BC Kolumn 40 LD E,L LD D,H INC DE DEC BC LD (HL),32 Blanka slutet LDIR av raden POP HL Adress tabrad LD C,40 L{ngd att skriva TAN13 CALL 0:11 Skriv tabraden POP DE Placera mark|r LD (253:243),DE p} r{tt plats CALL GET H{mta tangent TAN14 LD E,A LD A,(BYTFLG) AND A LD A,E JPNZ BYTTKN CP 32 JPNC TECKEN LD E,A LD D,0 LD HL,TANTAB ADD HL,DE ADD HL,DE LD E,(HL) INC HL LD D,(HL) EX DE,HL JP (HL) TAN15 DEFB 0,40,80,120 TAN16 DEFB 0,0,80,80 TAN17 DEFM " " TAN18 DEFM " " TAN19 DEFM " " TAN20 DEFM " " TAN21 DEFM " " TAN22 DEFM "% " DEFB 27,61,32+0,32+24 TANTAB DEFW EXIT 0 CTRL-@ DEFW V[NSTPIL 1 A DEFW BYTTEXT 2 B DEFW EXIT 3 C DEFW DELCHAR 4 D DEFW DELLINE 5 E DEFW INSMODE 6 F DEFW ORDMODE 7 G DEFW V[NSTPIL 8 H DEFW TILLTAB 9 I DEFW BRYTIHOP 10 J DEFW SK[RMBRE 11 K DEFW RADL[NGD 12 L DEFW RETURN 13 M DEFW BRYTAV 14 N DEFW KOPIA 15 O DEFW SCRMODE 16 P DEFW HOME 17 Q DEFW INSLINE 18 R DEFW H\GERPIL 19 S DEFW TAB 20 T DEFW KLICK 21 U DEFW S\KTEXT 22 V DEFW UPP 23 W DEFW HJ[LP 24 X DEFW HM[RKE 25 Y DEFW NER 26 Z DEFW SISTSIDA 27 [ DEFW F\RSIDA 28 \ DEFW BAKSIDA 29 ] DEFW FRAMSIDA 30 ^ DEFW CTRL 31 SHIFT+O EXIT CALL FR]NBUFF LD HL,0 LD (BRAD),HL LD A,255 RET ;Hj{lprader HR1 DEFM "Q=HOME W=UPP A=V[NSTER " DEFM "S=H\GER Z=NER " HR2 DEFM "\=F\RSTA ]=BAK]T " DEFM "^=FRAM]T [=SISTA" HR3 DEFM "D=DEL F=INS " DEFM "E=DELRAD R=INSRAD " HR4 DEFM "K=40/80 L=RADL[NGD " DEFM "P=SCROLL U=KLICK" HR5 DEFM "V=S\K B=BYT N=KLIPP " DEFM "J=KLISTRA T=TAB " HR6 DEFM "Y=MARGINAL G=ORD/RAK " DEFM "O=KOPIA @=MENY" ;Rutin som skriver ut hj{lprader. ;Om 80-tknsk{rm anv{nds visas l{ngre ;hj{lprader. HJK LD DE,(253:243) PUSH DE Spara mark|r CALL CUR POP DE LD (253:243),DE CALL GET H{mta tangent CP 24 CTRL-X ? JPNZ TAN14 Nej, hoppa LD A,(1:216) CP 80 LD A,(HLPFLG) JRNZ HJK1 Hopp om 40-sk{rm OR 1 G|r udda INC A Addera tv} om 80 HJK1 INC A Addera ett om 40 CP 7 JRC HJK2 LD A,1 HJK2 LD (HLPFLG),A JP HJ[LP "retur" HJ[LP LD A,(HLPFLG) LD E,A LD A,(1:216) Sk{rmbredd DEC E JRNZ HJ1 LD HL,HR1 LD C,HR3-HR1 CP 80 80-tkns sk{rm ? JRZ HJK Ja, hoppa LD C,HR2-HR1-1 Ej sista blank JR HJK HJ1 DEC E LD HL,HR2 LD C,HR3-HR2 JRZ HJK DEC E JRNZ HJ3 LD HL,HR3 LD C,HR5-HR3 CP 80 80-tkns sk{rm ? JRZ HJK Ja, hoppa LD C,HR4-HR3 HJ2 JR HJK HJ3 DEC E LD HL,HR4 LD C,HR5-HR4 JRZ HJK DEC E LD HL,HR6 LD C,HJK-HR6 JRNZ HJK LD HL,HR5 LD C,HJK-HR5 CP 80 80-tkns sk{rm ? JRZ HJK Ja, hoppa LD C,HR6-HR5 JR HJ2