; TEXT-EDITOR 3/8 ; Anders Franz`n <5258> ; Stockholm april 1985 ; Uppdaterad juli 1985 ; Skriv ut storlek p} text i TED STORLEK LD HL,(EOT) LD DE,(TXT) XOR A Ber{kna l{ngd SBC HL,DE p} text i editor PUSH HL LD (IY-35),17 LD (IY-34),A ;CUR(17,0) CALL SKRTAL Skriv v{rde CALL 7:66 Skriv CR+LF LD HL,(MAX) LD DE,(TXT) AND A Ber{kna ledigt SBC HL,DE utrymme i POP DE editorn SBC HL,DE CALL SKRTAL Skriv v{rde RET ;Skriv ut valm|jligheterna p} menyn VAL LD HL,V1 LD BC,V2-V1 Skriv meny CALL 0:11 LD IX,M2 Antal val LD (IX+0),"3" Tre val p} meny LD HL,248:0 LD C,13 LD A,(96:0) CP 195 Finns flexskiva? JRNZ VAL1 INC (IX+0) Fyra val p} meny CALL 0:11 Ja, LIB p} meny VAL1 CALL 7:66 Skriv CR+LF LD HL,(STACK) LD A,(HL) Finns extra CP "5" rutin? LD C,13 JRNZ VAL2 LD (IX+0),A Fem val p} meny CALL 0:11 Ja, till menyn VAL2 LD HL,V2 LD C,V3-V2 JP 0:11 Slut till menyn V1 DEFB 27,61,32+7,32+0 DEFM "1 L[S IN FIL",13,10 DEFM "2 SPARA FIL ",13,10 DEFM "3 EDITOR",13,10 V2 DEFB 27,61,32+13,32+0 DEFM "0 SLUT " DEFB 27,61,32+17,32+6 DEFM "bytes anv{nda" DEFB 27,61,32+18,32+6 DEFM "bytes lediga" V3 EQU $ MENY CALL 3:62 CTRL-C ? LD (IY-35),23 JPNZ 0:210 Ja, till BASIC! LD (TEDSTACK),SP Spara stack CALL 2:118 T|m sk{rmen CALL VAL Valm|jligheter CALL STORLEK Skriv utrymme LD HL,M1 LD BC,M3-M1 CALL 0:11 * \nskat val? MENY1 CALL 0:2 V{nta p} tangent PUSH AF CALL VAL Blink bort CALL BLANK Blanka rad 23 POP AF CP "1" JPZ L[SFIL CP "2" JPZ SKRIVFIL CP "3" JPZ EDITOR LD HL,248:13 LD DE,96:0 CP "4" JRZ MENY2 LD HL,(STACK) LD DE,13 ADD HL,DE LD E,L LD D,H CP "5" JRZ MENY2 CP "0" Sluta? JRNZ MENY Nej, b|rja om LD A,"7" CALL BLINK LD (IY-35),19 Mark|r rad 19 LD A,(SPRFLG) [r texten AND A sparad ? JPZ 0:210 Ja, till BASIC ! LD HL,(TXT) LD A,(HL) Finns n}gon AND A text i editor ? JPZ 0:210 Nej, till BASIC LD HL,M3 LD C,M4-M3 CALL CUR JR MENY1 MENY2 LD C,A LD A,(DE) CP 195 JPNZ MENY PUSH HL Spara adress LD A,C till rutin CALL BLINK LD HL,MENY Returadress EX (SP),HL till stacken JP (HL) Hoppa till rutin M1 DEFB 27,61,32+3,32+0 DEFM "TEXT-EDITOR",13,10 DEFM "=============" CUR1 DEFB 7,27,61,32+23,32+0 DEFM "* \NSKAT VAL (0-" M2 DEFM "3) ?" M3 DEFM "TEXTEN EJ SPARAD." M4 EQU $ L[SFIL CALL BLINK LD HL,(TXT) LD A,(HL) [r editorn tom? AND A JRZ L[S1 Ja, hoppa PUSH HL LD HL,L[S8 Fr}ga om editor LD C,L[S9-L[S8 ska t|mmas CALL CUR CALL 0:2 V{nta p} tangent POP HL HL pekar p} text AND 223 G|r versal CP "N" JRZ L[S2 XOR "J" JPNZ MENY Otill}tet svar LD (HL),A Tag bort gammal LD (EOT),HL text i editorn CALL STORLEK Utrymme i TED L[S1 XOR A LD L,A OBS att A=noll! LD H,A LD (KOL),HL INC HL LD (RAD),HL LD (\VERST),HL LD (SPRFLG),A L[S2 CALL BLANK Blanka rad 23 LD HL,L[S9 LD C,L[S10-L[S9 CALL CUR Fr}ga efter fil LD HL,FILNAMN LD C,20 PUSH HL CALL 0:5 H{mta filnamn POP HL RST 32 CP 13 Tom rad ? JPZ MENY Ja, till menyn PUSH HL CALL EXT Default .TXT LD HL,L[S10 LD BC,L[S11-L[S10 CALL 0:11 ;CUR(20,0) POP HL (f|r OPEN CAS:) XOR A Kod = "open" ! LD (S\KFLG),A Nollst{ll LD (BYTFLG),A flaggor LD IX,-15 Reservera plats ADD IX,SP f|r filbeskrivn LD SP,IX p} stacken LD (IX+2),255 Filnummer LD DE,0:62 Rutinadress CALL FILCONTR \ppna filen L[S3 CALL R[KNA DE=rader i TED INC DE Nr p} n{sta rad CALL TILLBUFF H{mta raden LD HL,BUFF1 LD BC,253 Klarar mycket PUSH HL l}nga rader ! LD DE,8:147 CALL FILCONTR L{s in en rad POP HL JRC L[S7 Hoppa om EOF LD BC,160 LD A,13 CPIR Leta radslut JRNZ L[S4 Hoppa om saknas DEC HL Peka p} CR LD (HL),32 Blanka bort! L[S4 LD A,159 SUB C LD C,A L{ngd p} rad LD A,(L[NGD) L[S5 CP 160 JRZ L[S6 CP C Rad <= l{ngd ? JRNC L[S6 Ja, hoppa ADD 40 \ka l{ngd LD (L[NGD),A LD HL,(RAD) LD (\VERST),HL JR L[S5 L[S6 LD DE,(BRAD) CALL SPARRAD Spara raden PUSH AF CALL STORLEK Anv{nt utrymme! POP AF JRNC L[S3 upprepa om ok L[S7 PUSH AF Spara felkod LD DE,8:127 CALL FILCONTR St{ng filen POP AF Felkod till A LD HL,15 ADD HL,SP LD SP,HL ]terst{ll stack LD HL,0 LD (BRAD),HL T|m buffer AND 127 EOF ? JPZ MENY Ja, till meny LD (IY+34),A Spara ERRCODE JP FELRUTIN L[S8 DEFM "SKALL EDITORN " DEFM "T\MMAS (J/N) ?" L[S9 DEFM "INFIL ?" L[S10 DEFB 27,61,32+20,32+0 L[S11 EQU $ SKRIVFIL CALL BLINK LD HL,(TXT) LD A,(HL) AND A Editorn tom ? JRNZ SKR1 Nej, hoppa LD HL,SKR9 LD C,SKR10-SKR9 CALL CUR JP MENY1 SKR1 LD HL,SKR10 LD C,SKR11-SKR10 CALL CUR F}ga efter fil LD HL,FILNAMN RST 32 CP 13 JRZ SKR3 Ingen gammal fil PUSH HL LD HL,SKR11 LD C,SKR12-SKR11 CALL 0:11 Skriv "(" POP HL SKR2 LD C,1 CALL 0:11 Skriv gammal fil LD A,(HL) CP 13 JRNZ SKR2 LD HL,SKR12 LD C,SKR13-SKR12 CALL 0:11 Skriv ")" SKR3 LD HL,SKR13 LD C,SKR14-SKR13 CALL 0:11 Skriv "?" LD HL,FILNAMN H|gerpil kan RST 32 anv{ndas vid EX DE,HL redigering av LD HL,BUFF2 nytt filnamn !! LD C,20 PUSH HL CALL 2:173 H{mta nytt POP HL filnamm PUSH HL RST 32 CP 13 POP HL JRZ SKR4 Inget angivet LD BC,20 LD DE,FILNAMN LDIR Spara filnamn CALL EXT Default .TXT SKR4 LD HL,FILNAMN RST 32 CP 13 JPZ MENY Inget angivet XOR A LD (S\KFLG),A LD (BYTFLG),A LD IX,-15 Reservera plats ADD IX,SP f|r filbeskrivn LD SP,IX p} stacken INC A Kod = prepare LD DE,0:62 Adress rutin CALL FILCONTR |ppna filen LD DE,1 F|rsta raden SKR5 PUSH DE CALL TILLBUFF H{mta rad POP DE LD HL,(SAKNAS) LD A,H Alla rader OR L skrivna ? JRNZ SKR8 Ja, hoppa PUSH DE LD HL,BUFF1+160 LD B,160 LD A,32 SKR6 DEC HL Skippa space CP (HL) sist p} raden JRNZ SKR7 DJNZ SKR6 DEC HL SKR7 INC HL LD (HL),13 L{gg ner CR+LF, INC HL LF kr{vs om LD (HL),10 utskrift p} INC HL printer LD DE,BUFF1 AND A SBC HL,DE LD C,L BC {r l{ngd p} LD B,H rad att skriva EX DE,HL HL pekar p} rad LD DE,8:150 CALL FILCONTR Skriv rad POP DE INC DE N{sta radnr JR SKR5 SKR8 LD DE,8:144 CALL FILCONTR St{ng filen LD HL,15 ADD HL,SP LD SP,HL ]terst{ll stack XOR A LD (SPRFLG),A LD L,A LD H,A LD (BRAD),HL JP MENY SKR9 DEFM "INGET ATT SPARA." SKR10 DEFM "UTFIL " SKR11 DEFM "(" SKR12 DEFM ") " SKR13 DEFM "?" SKR14 EQU $ ;Fixa default extension .TXT EXT LD HL,FILNAMN-1 EXT1 LD C,A F|reg. tecken RST 24 Tag tecken CP "." Finns extension? RETZ Ja, retur CP 13 Slut p} filnamn? JRNZ EXT1 Nej, leta vidare LD A,C Sista tecknet CP ":" ett kolon ? RETZ Ja, retur (CAS:) EX DE,HL DE pekar p} CR LD HL,EXT2 LD BC,5 Kopiera in .TXT PUSH HL LDIR i filnamnet. POP HL LD C,4 Obs att B=0 ! JP 0:11 Skriv ".TXT" EXT2 DEFM ".TXT",13 FILCONTR PUSH HL Spara HL LD HL,FELRUTIN EX (SP),HL ]terst{ll HL LD (254:54),SP RUN-timestack PUSH HL Spara HL LD HL,FILC2 LD (IY+30),L S{tt ONERROR- LD (IY+31),H GOTO-adress LD (IY+14),0 S{tt RUN-mode LD (IY+15),0 S{tt NOTRACE LD HL,FILC1 EX (SP),HL ]terst{ll HL PUSH DE Hoppadressen RET Hoppa till rutin FILC1 POP HL ]terst{ll stack RET Klart, inga fel FILC2 DEFB 4,0,1,145 BASIC-RETURN FELRUTIN LD SP,(TEDSTACK) CALL BLANK LD HL,FELR1 LD C,FELR2-FELR1 CALL CUR LD A,(IY+34) ERRCODE AND 127 Sl{ck bit sju LD L,A LD H,B OBS, B=noll! CALL SKRIVTAL LD HL,FELR2 LD C,FELR3-FELR2 CALL 0:11 JP MENY1 FELR1 DEFM "ERROR " FELR2 DEFM " (se fellista)." FELR3 EQU $ BLINK LD HL,3:116 SUB 49-7 ADD A LD E,A LD D,0 ADD HL,DE LD E,(HL) INC HL LD D,(HL) EX DE,HL INC HL INC HL INC HL LD B,10 BLINK1 SET 7,(HL) INC HL DJNZ BLINK1 RET BLANK LD DE,(3:162) Adress rad 23 CALL 2:103 Blanka raden RET