'=========================================================================== ' Subject: QB EDITOR FOR TEXT FILES Date: 03-21-99 (19:08) ' Author: Geukens Stijn Code: QB, QBasic, PDS ' Origin: ERKASAN@village.uunet.be Packet: TEXT.ABC '=========================================================================== 'QB-editor 'made by Geukens Stijn 'originally it is an editor/debugger for assembler that i made for school 'i adapted it into an editor for TXT-files 'for anything mail at ERKASAN@VILLAGE.UUNET.BE DECLARE SUB menuline.find () DECLARE SUB menuline.change () DECLARE SUB een.lijn (x%, Y%, max.y%, tekst$) DECLARE SUB menuline.open (sort$, openexe%, getdirexe%) DECLARE SUB menuline2 () DECLARE SUB menuline.select () DECLARE SUB scherm.wissen () DECLARE SUB menuline () DECLARE SUB scherm () maximum.aantal.rijen% = 2000 CLS DIM l(2000) 'length line DIM tekst$(2000)'lines DIM asmlist$(300)'files DIM rijselected(500)'selected lines DIM tel.i%(60)'found words DIM SHARED nieuw%, gewijzigd%, file$, rij%, tempregel%, regel%, eindregel%, startregel% ON ERROR GOTO error.handler auther$ = "Gemaakt door Geukens Stijn - Egyptestraat 28 - 8730 Oedelem" CLS i% = 0 CALL scherm ' ************ initialisering *************** insert$ = "Insert " insert% = 1 nieuw% = 1 gewijzigd% = 0 file$ = "" rij% = 0 maxrij% = 0 tempregel% = 3 regel% = 2 hrt% = 80 maximum.rijlengte% = 1022 einde% = 0 eindregel% = 22 startregel% = 3 sort$ = "J" begin.cursor% = 0 LOCATE regel% ' ******************************************* blancotijd = TIMER backuptijd = TIMER DO rij% = rij% + 1 IF rij% > maxrij% THEN maxrij% = rij% END IF cursor% = 2 IF regel% < 22 THEN regel% = regel% + 1 END IF DO top: IF TIMER > blancotijd + 4 THEN GOSUB blanco: blancotijd = TIMER IF TIMER > backuptijd + 30 THEN GOSUB backup: backuptijd = TIMER merge% = 0 '***** foutcorrecties IF cursor% <= 1 THEN cursor% = 2 IF rij% < 0 THEN rij% = 1: regel% = 3 IF regel% < 3 AND rij% < 20 THEN rij% = 1: regel% = 3 '***** ' row;file;status: IF gewijzigd% = 1 THEN status$ = "(Gewijzigd) " ELSE status$ = "(Ongewijzigd)" END IF IF LEN(k$) > 1 AND RIGHT$(k$, 1) = "R" THEN IF insert% = 1 THEN insert% = 0 insert$ = "Type Over" ELSE insert% = 1 insert$ = "Insert " END IF END IF LOCATE 23, 8: COLOR 0, 3: PRINT USING "####"; rij%; PRINT " - "; PRINT USING "####"; cursor% - 1 + begin.cursor% IF file$ = "" THEN LOCATE 23, 27: PRINT "NAAMLOOS "; ELSE LOCATE 23, 27: PRINT USING "\ \ "; file$; END IF LOCATE 23: PRINT status$ LOCATE 23, 70: PRINT insert$ COLOR 15, 1 seek$ = LCASE$(tekst$(rij%)) 'current cursor position: IF MID$(tekst$(rij%), cursor% - 1 + begin.cursor%, 1) = "" OR MID$(tekst$(rij%), cursor% - 1 + begin.cursor%, 1) = " " THEN LOCATE regel%, cursor%: COLOR 15 + 16: PRINT "_": COLOR 15, 1 ELSE LOCATE regel%, cursor%: COLOR 15 + 16: PRINT MID$(tekst$(rij%), cursor% - 1 + begin.cursor%, 1): COLOR 15, 1 END IF '****************************************************************************** '**************************** SELECTS ***************************************** '****************************************************************************** k$ = INKEY$ 'key pressed SELECT CASE k$ '****************************************************************************** '**************************** F1 - VERTAAL *********************************** CASE CHR$(0) + CHR$(59) 'compile 'excluded '**************************** F1 - VERTAAL *********************************** '****************************************************************************** '****************************************************************************** '**************************** F2 - VOERUIT *********************************** CASE CHR$(0) + CHR$(60) 'execute 'excluded '**************************** F2 - VOERUIT *********************************** '****************************************************************************** '****************************************************************************** '**************************** F3 - SAVE AS *********************************** CASE CHR$(0) + CHR$(61) 'save as save: temp.sort$ = sort$ sort$ = "" GOSUB filelist sort$ = temp.sort$ temp$ = "" temp1$ = "" temp2$ = "" LOCATE 2, 1: COLOR , 1: PRINT STRING$(80, " "): COLOR 15, 1 LOCATE 2, 1: COLOR 4, 7: PRINT " Give filename: "; temp$ = file$ l.temp% = LEN(temp$) IF LCASE$(RTRIM$(RIGHT$(file$, 3))) = "txt" THEN cut.temp% = 4 ext$ = ".txt" ELSE cut.temp% = 0 ext$ = ".txt" END IF temp$ = LEFT$(temp$, l.temp% - cut.temp%) CALL een.lijn(2, 17, 12, temp$) IF temp$ = "" THEN GOTO noname IF LCASE$(RTRIM$(RIGHT$(temp$, 4))) = ".txt" OR LCASE$(RTRIM$(RIGHT$(temp$, 3))) = ".in" THEN tempfile$ = temp$ ELSE tempfile$ = temp$ + ext$ END IF IF tempfile$ = file$ THEN GOTO saving IF INSTR(tempfile$, ",") > 0 THEN BEEP: GOTO noname IF INSTR(tempfile$, "/") > 0 THEN BEEP: GOTO noname IF INSTR(tempfile$, "*") > 0 THEN BEEP: GOTO noname IF INSTR(tempfile$, "?") > 0 THEN BEEP: GOTO noname IF INSTR(tempfile$, "<") > 0 THEN BEEP: GOTO noname IF INSTR(tempfile$, ">") > 0 THEN BEEP: GOTO noname IF INSTR(tempfile$, "|") > 0 THEN BEEP: GOTO noname IF INSTR(tempfile$, ";") > 0 THEN BEEP: GOTO noname IF INSTR(tempfile$, CHR$(34)) > 0 THEN BEEP: GOTO noname IF INSTR(tempfile$, ".") > 0 THEN l.temp% = LEN(tempfile$) IF LCASE$(RTRIM$(RIGHT$(tempfile$, 3))) = "txt" THEN cut.temp% = 4 ext$ = ".txt" ELSEIF LCASE$(RTRIM$(RIGHT$(tempfile$, 2))) = "in" THEN cut.temp% = 3 ext$ = ".in" ELSE cut.temp% = 0 ext$ = ".txt" END IF tempfile$ = LEFT$(tempfile$, l.temp% - cut.temp%) IF INSTR(tempfile$, ".") > 0 THEN BEEP: GOTO noname tempfile$ = tempfile$ + ext$ END IF IF INSTR(tempfile$, "\") > 0 OR INSTR(tempfile$, ":") > 0 THEN temp$ = tempfile$: GOTO save.to.dir file$ = tempfile$ LOCATE 2, 1: COLOR , 1: PRINT STRING$(80, " "): COLOR 15, 1 lfile% = LEN(file$) temp1$ = LEFT$(file$, lfile% - 4) tempin$ = LEFT$(file$, lfile% - 3) FOR x% = 1 TO asmlist% temp2$ = LEFT$(asmlist$(x%), 7) temp2$ = RTRIM$(temp2$) IF UCASE$(temp1$) = UCASE$(temp2$) OR UCASE$(tempin$) = UCASE$(temp2$) THEN LOCATE 2, 1: COLOR 4, 7: PRINT "File already exists. Overwrite? (j/n)" DO k$ = INKEY$ IF k$ = CHR$(27) THEN GOTO save k$ = UCASE$(k$) LOOP UNTIL k$ = "J" OR k$ = "N" IF k$ = "N" THEN GOTO save EXIT FOR END IF NEXT x% saving: OPEN file$ FOR APPEND AS #1 CLOSE #1 KILL file$ OPEN file$ FOR APPEND AS #1 FOR fileindex = 1 TO maxrij% PRINT #1, tekst$(fileindex) NEXT fileindex CLOSE #1 IF einde% = 1 THEN COLOR 7, 0: CLS : END IF openen% = 1 THEN gewijzigd% = 0: GOTO opentris gewijzigd% = 0 nieuw% = 0 noname: LOCATE 2, 1: COLOR , 1: PRINT STRING$(80, " ") '**************************** F3 - SAVE AS *********************************** '****************************************************************************** '****************************************************************************** '**************************** F4 - OPEN ************************************** CASE CHR$(0) + CHR$(62) 'open IF gewijzigd% = 1 THEN IF file$ = "" THEN COLOR 4, 7: LOCATE 2, 1: PRINT "Save changes? (j/n)": COLOR 15, 1 ELSE COLOR 4, 7: LOCATE 2, 1: PRINT "Save changes in " + file$ + "? (j/n)": COLOR 15, 1 END IF DO k$ = INKEY$ k$ = UCASE$(k$) IF k$ = CHR$(27) THEN EXIT DO LOOP UNTIL k$ = "J" OR k$ = "N" IF k$ = "J" THEN GOSUB blanco openen% = 1 GOTO save END IF END IF opentris: lighted.teller% = 1 begin.asmlist% = 1 openbis: CLS FOR wisi% = 1 TO 25 LOCATE wisi%, 1: COLOR , 1: PRINT STRING$(80, " ") NEXT wisi% COLOR 15, 1 tempfile$ = file$ GOSUB filelist LOCATE 24, (79 - LEN(dir$)): PRINT dir$ k% = 1 l = 3 IF begin.asmlist% > 1 THEN LOCATE 22, 15: PRINT "PgUp voor vorig deel" FOR x% = begin.asmlist% TO asmlist% IF NOT asmlist$(x%) = "" THEN k% = k% + 1 LOCATE k%, l: PRINT asmlist$(x%) END IF IF x% = 20 OR x% = 100 THEN k% = 1: l = 23 IF x% = 40 OR x% = 120 THEN k% = 1: l = 43 IF x% = 60 OR x% = 140 THEN k% = 1: l = 63 IF x% = 80 OR x% = 160 THEN IF asmlist% > 80 THEN LOCATE 22, 15: PRINT "PgDown voor vervolg" x% = asmlist% GOTO openfile END IF NEXT x% openfile: IF merge% = 0 THEN CALL menuline.open(sort$, openexe%, getdirexe%) ELSE COLOR 15, 1: LOCATE 23, 1: COLOR 4, 7: PRINT " Press enter to insert file ": COLOR 15, 1 END IF lighted.rij% = 2 lighted.kol% = 3 DO COLOR 1, 7 IF lighted.rij% < 1 OR lighted.rij% > 21 OR lighted.kol% < 1 OR lighted.kol% > 79 THEN lighted.rij% = 2: lighted.kol% = 3: lighted.teller% = begin.asmlist% LOCATE lighted.rij%, lighted.kol%: PRINT asmlist$(lighted.teller%) selectfile$ = INKEY$ SELECT CASE selectfile$ CASE CHR$(0) + CHR$(73) 'Page Up IF lighted.teller% > 80 THEN begin.asmlist% = begin.asmlist% - 80 lighted.teller% = begin.asmlist% GOTO openbis END IF CASE CHR$(0) + CHR$(81) 'Page down IF begin.asmlist% + 80 <= asmlist% THEN begin.asmlist% = begin.asmlist% + 80 lighted.teller% = begin.asmlist% GOTO openbis END IF CASE CHR$(27) CALL scherm scherm.wissen tempregel% = 3 GOSUB weergeven: GOTO top CASE CHR$(0) + CHR$(61) 'F3 sorteren IF sort$ = "" THEN sort$ = "J" ELSE sort$ = "" END IF begin.asmlist% = 1 lighted.teller% = 1 GOTO openbis CASE CHR$(0) + CHR$(59) 'kopi‰ren 'excluded CASE CHR$(0) + CHR$(60) 'nieuw% scherm.wissen lighted.nieuw% = 0 kies.nieuw: scherm.wissen LOCATE 8, 25: PRINT "Geef naam bestand (max. 8 letters)"; nieuw$ = "" CALL een.lijn(10, 25, 8, nieuw$) IF nieuw$ = "" THEN GOTO openbis ELSE file$ = nieuw$ IF INSTR(file$, ",") > 0 THEN BEEP: GOTO kies.nieuw IF INSTR(file$, "\") > 0 THEN BEEP: GOTO kies.nieuw IF INSTR(file$, "/") > 0 THEN BEEP: GOTO kies.nieuw IF INSTR(file$, ":") > 0 THEN BEEP: GOTO kies.nieuw IF INSTR(file$, "*") > 0 THEN BEEP: GOTO kies.nieuw IF INSTR(file$, "?") > 0 THEN BEEP: GOTO kies.nieuw IF INSTR(file$, "<") > 0 THEN BEEP: GOTO kies.nieuw IF INSTR(file$, ">") > 0 THEN BEEP: GOTO kies.nieuw IF INSTR(file$, "|") > 0 THEN BEEP: GOTO kies.nieuw IF INSTR(file$, ";") > 0 THEN BEEP: GOTO kies.nieuw IF INSTR(file$, ".") > 0 THEN BEEP: GOTO kies.nieuw IF INSTR(file$, CHR$(34)) > 0 THEN BEEP: GOTO kies.nieuw file$ = LTRIM$(file$) file$ = LEFT$(file$, 8) file$ = file$ + ".txt" EXIT DO CASE CHR$(0) + CHR$(67) 'printen print.file$ = asmlist$(lighted.teller%) print.file$ = RTRIM$(LEFT$(print.file$, 8)) + ".txt" GOSUB openPRINT blancotijd = TIMER DO IF TIMER > blancotijd + 2 THEN LOCATE 1, 1: PRINT STRING$(20, " "): EXIT DO LOOP CASE CHR$(0) + CHR$(83) 'delete delete.file$ = asmlist$(lighted.teller%) delete.file$ = RTRIM$(delete.file$) delete.file$ = RTRIM$(LEFT$(delete.file$, 8)) + ".txt" LOCATE 23, 1: COLOR 4, 7: PRINT STRING$(80, " ") LOCATE 23, 2: COLOR 4, 7: PRINT UCASE$(delete.file$) + " verwijderen? (j/n)" COLOR 15, 1 DO delete.k$ = INKEY$ delete.k$ = UCASE$(delete.k$) LOOP UNTIL delete.k$ = "J" OR delete.k$ = "N" OR delete.k$ = CHR$(27) IF delete.k$ = "N" OR delete.k$ = CHR$(27) THEN IF NOT merge% = 1 THEN CALL menuline.open(sort$, openexe%, getdirexe%) ELSEIF delete.k$ = "J" THEN OPEN delete.file$ FOR APPEND AS #1 CLOSE #1 KILL delete.file$ GOTO opentris END IF CASE CHR$(13) file$ = asmlist$(lighted.teller%) file$ = RTRIM$(file$) file$ = RTRIM$(LEFT$(file$, 8)) + ".txt" IF merge% = 1 THEN GOTO mergebis EXIT DO CASE CHR$(0) + CHR$(72)'up IF lighted.rij% > 2 OR lighted.kol% > 22 THEN COLOR 15, 1 LOCATE lighted.rij%, lighted.kol%: PRINT asmlist$(lighted.teller%) lighted.rij% = lighted.rij% - 1 lighted.teller% = lighted.teller% - 1 IF lighted.rij% < 2 AND lighted.kol% > 22 THEN lighted.kol% = lighted.kol% - 20 lighted.rij% = 21 END IF ELSEIF lighted.rij% = 2 AND lighted.kol% = 3 THEN COLOR 15, 1 LOCATE lighted.rij%, lighted.kol%: PRINT asmlist$(lighted.teller%) IF asmlist% - begin.asmlist% > 80 THEN lighted.teller% = 80 lighted.rij% = 21 lighted.kol% = 63 ELSE lighted.teller% = x% - 1 IF asmlist% - begin.asmlist% <= 20 THEN lighted.kol% = 3: lighted.rij% = asmlist% + 1 IF asmlist% - begin.asmlist% > 20 AND asmlist% - begin.asmlist% <= 40 THEN lighted.kol% = 23: lighted.rij% = asmlist% - 20 + 1 IF asmlist% - begin.asmlist% > 40 AND asmlist% - begin.asmlist% <= 60 THEN lighted.kol% = 43: lighted.rij% = asmlist% - 40 + 1 IF asmlist% - begin.asmlist% > 60 AND asmlist% - begin.asmlist% <= 80 THEN lighted.kol% = 63: lighted.rij% = asmlist% - 60 + 1 END IF IF lighted.rij% < 2 AND lighted.kol% > 22 THEN lighted.kol% = lighted.kol% - 20 lighted.rij% = 21 END IF END IF CASE CHR$(0) + CHR$(75)'links IF lighted.teller% - 20 > 0 THEN COLOR 15, 1 LOCATE lighted.rij%, lighted.kol%: PRINT asmlist$(lighted.teller%) lighted.teller% = lighted.teller% - 20 lighted.kol% = lighted.kol% - 20 END IF CASE CHR$(0) + CHR$(77)'rechts IF lighted.teller% + 20 < x% THEN COLOR 15, 1 LOCATE lighted.rij%, lighted.kol%: PRINT asmlist$(lighted.teller%) lighted.teller% = lighted.teller% + 20 lighted.kol% = lighted.kol% + 20 END IF CASE CHR$(0) + CHR$(80)'down IF lighted.teller% + 1 < x% AND lighted.teller% < asmlist% THEN COLOR 15, 1 LOCATE lighted.rij%, lighted.kol%: PRINT asmlist$(lighted.teller%) lighted.rij% = lighted.rij% + 1 lighted.teller% = lighted.teller% + 1 IF lighted.rij% > 21 THEN lighted.kol% = lighted.kol% + 20 lighted.rij% = 2 END IF ELSEIF lighted.teller% + 1 >= x% THEN COLOR 15, 1 LOCATE lighted.rij%, lighted.kol%: PRINT asmlist$(lighted.teller%) lighted.teller% = begin.asmlist% lighted.kol% = 3 lighted.rij% = 2 END IF END SELECT LOOP HET.openen: gewijzigd% = 0 COLOR 15, 1 CALL scherm ERASE tekst$ ERASE l OPEN file$ FOR APPEND AS #1 CLOSE #1 nieuw% = 0 OPEN file$ FOR INPUT AS #1 tempregel% = 3 rij% = 1 DO WHILE NOT EOF(1) LINE INPUT #1, tekst$(rij%) COLOR 1, 1: LOCATE 3, 1: PRINT LEFT$(tekst$(rij%), 78); p% = POS(0) COLOR 15, 1 FOR pj% = 1 TO p% k$ = MID$(tekst$(rij%), pj%, 1) IF k$ = CHR$(9) THEN k1$ = LEFT$(tekst$(rij%), pj% - 1) k2$ = MID$(tekst$(rij%), pj% + 1, p% - pj%) tekst$(rij%) = k1$ + " " + k2$ END IF NEXT pj% l(rij%) = LEN(tekst$(rij%)) teller = 0 rij% = rij% + 1 LOOP CLOSE #1 GOSUB blanco COLOR 7, 1 blancotijd = TIMER vertaald% = 0 maxrij% = rij% - 1 rij% = 1 cursor% = 2 startregel% = 3 eindregel% = 22 GOSUB weergeven '**************************** F4 - OPEN ************************************** '****************************************************************************** '****************************************************************************** '**************************** F5 - REFRESH ************************************** CASE CHR$(0) + CHR$(63) 'refresh F5 GOSUB refresh '**************************** F5 - REFRESH ************************************** '****************************************************************************** '****************************************************************************** '**************************** F6 - SELECT ************************************** CASE CHR$(0) + CHR$(64) cut% = 0 IF begin.cursor% > 0 THEN begin.cursor% = 0: tempregel% = regel%: GOSUB weergeven COLOR 16, 3: LOCATE 23, 70: PRINT "SELECT " LOCATE regel%, 2: COLOR 15, 7: PRINT LEFT$(tekst$(rij%), 78) COLOR 15, 1 beginregel% = regel% begineindregel% = eindregel% beginstartregel% = startregel% begincursor% = cursor% beginrij% = rij% ud% = 0 rijteller% = 1 menuline.select DO menuline.select LOCATE 23, 8: COLOR 0, 3: PRINT USING "####"; rij% rijselected(rijteller%) = rij% selectk$ = INKEY$ SELECT CASE selectk$ CASE CHR$(0) + CHR$(72) 'Up IF rij% > 0 THEN IF rij% <= beginrij% THEN IF NOT rij% <= 1 THEN rij% = rij% - 1 rijteller% = rijteller% + 1 rijselected(rijteller%) = rij% IF rij% < startregel% - 1 AND rij% > 1 THEN startregel% = startregel% - 1 eindregel% = eindregel% - 1 END IF END IF ELSE rijselected(rijteller%) = 0 rijteller% = rijteller% - 1 IF NOT rij% = 1 THEN rij% = rij% - 1 IF rij% < startregel% - 1 AND rij% > 1 THEN startregel% = startregel% - 1 eindregel% = eindregel% - 1 ELSE regel% = regel% - 1 END IF END IF END IF ud% = ud% - 1 CALL scherm.wissen GOSUB weergeven END IF COLOR 15, 1 eindrij% = rij% CASE CHR$(0) + CHR$(80) 'Down IF NOT rij% > maxrij% THEN IF rij% >= beginrij% THEN IF NOT rij% >= maxrij% THEN rij% = rij% + 1 rijteller% = rijteller% + 1 rijselected(rijteller%) = rij% IF rij% >= eindregel% - 1 THEN startregel% = startregel% + 1 eindregel% = eindregel% + 1 END IF END IF ELSE IF NOT rij% >= maxrij% THEN rijselected(rijteller%) = 0 rijteller% = rijteller% - 1 rij% = rij% + 1 IF rij% >= eindregel% THEN startregel% = startregel% + 1 eindregel% = eindregel% + 1 END IF END IF END IF ud% = ud% + 1 END IF CALL scherm.wissen eindrij% = rij% GOSUB weergeven COLOR 15, 1 CASE CHR$(0) + CHR$(67) 'print LOCATE 2, 2: COLOR 15 + 16: PRINT "Printing..." begincopy% = beginrij% eindcopy% = eindrij% IF eindcopy% = 0 THEN eindcopy% = begincopy% IF begincopy% > eindcopy% THEN SWAP begincopy%, eindcopy% FOR i% = begincopy% TO eindcopy% LPRINT tekst$(i%) NEXT i% blancotijd = TIMER DO IF TIMER > blancotijd + 2 THEN GOSUB blanco: blancotijd = TIMER: EXIT DO LOOP CASE CHR$(0) + CHR$(59), CHR$(0) + CHR$(60) 'copy, cut OPEN "aspass.txt" FOR APPEND AS #1 CLOSE #1 KILL "aspass.txt" OPEN "aspass.txt" FOR APPEND AS #1 begincopy% = beginrij% eindcopy% = eindrij% IF eindcopy% = 0 THEN eindcopy% = begincopy% IF begincopy% > eindcopy% THEN SWAP begincopy%, eindcopy% FOR i% = begincopy% TO eindcopy% PRINT #1, tekst$(i%) NEXT i% CLOSE #1 IF selectk$ = CHR$(0) + CHR$(60) THEN 'cut delete.selected: cut% = 1 tempregel% = 3 scherm.wissen FOR i% = beginrij% TO maxrij% tekst$(i%) = tekst$(i% + rijteller%) l(i%) = l(i% + rijteller%) NEXT i% maxrij2% = maxrij% maxrij% = maxrij% - rijteller% FOR i% = maxrij% + 1 TO maxrij2% + 1 tekst$(i%) = "" l(i%) = 0 NEXT i% IF maxrij% = 0 THEN maxrij% = 1 gewijzigd% = 1 vertaald% = 0 voeruit% = 0 END IF CALL scherm GOTO eindeselect CASE CHR$(0) + CHR$(61), CHR$(0) + CHR$(83) 'delete LOCATE 2, 1: COLOR 4, 7: PRINT "You are about to delete "; rijteller%; "lines. Ok? j/n"; DO k$ = INKEY$ k$ = UCASE$(k$) IF k$ = CHR$(27) THEN k$ = "N" LOOP UNTIL k$ = "J" OR k$ = "N" IF k$ = "J" THEN GOTO delete.selected END IF GOSUB blanco END SELECT LOOP UNTIL selectk$ = CHR$(0) + CHR$(134) OR selectk$ = CHR$(27) cut% = 0 eindeselect: IF cut% = 0 THEN rij% = beginrij% regel% = beginregel% tempregel% = regel% eindregel% = begineindregel% startregel% = beginstartregel% IF startregel% < 3 THEN eindregel% = 22 startregel% = 3 END IF ELSE rij% = 1 regel% = 3 startregel% = 3 eindregel% = 22 END IF cursor% = 2 FOR i% = 1 TO rijteller% rijselected(i%) = 0 NEXT i% rijteller% = 0 k$ = "" COLOR 15, 1 scherm.wissen GOSUB weergeven CALL menuline GOTO top '**************************** F6 - SELECT ************************************** '****************************************************************************** '****************************************************************************** '**************************** F7 - DEBUG ************************************** CASE CHR$(0) + CHR$(65) 'debug: assemblers debugger; mine is like qbasic: continoues checking 'excluded '**************************** F7 - DEBUG ************************************** '****************************************************************************** '****************************************************************************** '**************************** F8 - PASTE ************************************** CASE CHR$(0) + CHR$(66) 'F8 - PASTE merge$ = "aspass.txt" merge: beginrij2% = rij% beginregel2% = regel% OPEN merge$ FOR APPEND AS #1 CLOSE #1 pasteteller% = 0 OPEN merge$ FOR INPUT AS #1 DO WHILE NOT EOF(1) LINE INPUT #1, A$ pasteteller% = pasteteller% + 1 LOOP CLOSE #1 IF maxrij% + pasteteller% > max.aantal.rijen% THEN BEEP: LOCATE 2, 1: PRINT "Te groot!": GOTO top FOR i% = maxrij% + pasteteller% TO rij% + pasteteller% STEP -1 tekst$(i%) = tekst$(i% - pasteteller%) l(i%) = l(i% - pasteteller%) NEXT i% OPEN merge$ FOR INPUT AS #1 DO WHILE NOT EOF(1) LINE INPUT #1, tekst$(rij%) COLOR 1, 1: LOCATE 2, 1: PRINT tekst$(rij%); p% = POS(0) COLOR 15, 1 FOR pj% = 1 TO p% paste.k$ = MID$(tekst$(rij%), pj%, 1) IF paste.k$ = CHR$(9) THEN k1$ = LEFT$(tekst$(rij%), pj% - 1) k2$ = MID$(tekst$(rij%), pj% + 1, p% - pj%) tekst$(rij%) = k1$ + " " + k2$ END IF NEXT pj% l(rij%) = LEN(tekst$(rij%)) rij% = rij% + 1 maxrij% = maxrij% + 1 LOOP CLOSE #1 CALL scherm.wissen rij% = beginrij2% regel% = beginregel2% tempregel% = regel% scherm.wissen scherm begin.cursor% = 0 GOSUB weergeven: GOTO top '**************************** F8 - PASTE ************************************** '****************************************************************************** '****************************************************************************** '**************************** F9 - PRINT ************************************** CASE CHR$(0) + CHR$(67) 'print F9 LOCATE 2, 1: COLOR 31, 1: PRINT "Printing...": COLOR 15, 1 GOSUB openPRINT '**************************** F9 - PRINT ************************************** '****************************************************************************** '****************************************************************************** '**************************** F10/ESCAPE - QUIT ************************************** CASE CHR$(0) + CHR$(68), CHR$(27) 'F10 - ESC COLOR 7, 0 COLOR 4, 7: LOCATE 2, 1: PRINT "Leave Qb-editor? (j/n)": COLOR 15, 1 DO k$ = INKEY$ k$ = UCASE$(k$) IF k$ = CHR$(27) THEN GOSUB blanco: GOTO top LOOP UNTIL k$ = "J" OR k$ = "N" IF k$ = "N" THEN GOSUB blanco: GOTO top IF gewijzigd% = 0 THEN CLS : SCREEN 0: END IF file$ = "" THEN COLOR 4, 7: LOCATE 2, 1: PRINT "Save changes? (j/n)": COLOR 15, 1 ELSE COLOR 4, 7: LOCATE 2, 1: PRINT "Save changes in " + file$ + "? (j/n)": COLOR 15, 1 END IF DO k$ = INKEY$ k$ = UCASE$(k$) IF k$ = CHR$(27) THEN EXIT DO LOOP UNTIL k$ = "J" OR k$ = "N" IF k$ = "N" THEN CLS : SCREEN 0: END ELSEIF k$ = "J" THEN GOSUB blanco einde% = 1 GOTO save END IF LOCATE 2, 1: PRINT STRING$(80, " ") '**************************** F10/ESCAPE - QUIT ************************************** '****************************************************************************** '****************************************************************************** '**************************** F11 - UITFILE BEKIJKEN ********************************* CASE CHR$(0) + CHR$(133) 'excluded '**************************** F11 - UITFILE BEKIJKEN ********************************* '****************************************************************************** '****************************************************************************** '**************************** F12 - HELP ********************************************** CASE CHR$(0) + CHR$(134) 'excluded '**************************** F12 - HELP ********************************************** '****************************************************************************** '****************************************************************************** '**************************** Shift.F1 - GOTO LINE ********************************************** CASE CHR$(0) + CHR$(84) LOCATE 2, 1: COLOR 4, 7: PRINT "Goto line: "; COLOR 15, 1 LINE INPUT "", goto.line$ goto.line% = VAL(goto.line$) GOSUB blanco IF goto.line% < 1 THEN GOTO top IF goto.line% > maxrij% THEN GOTO top rij% = goto.line% startregel% = rij% + 2 eindregel% = startregel% + 19 tempregel% = 3 scherm.wissen GOSUB weergeven '**************************** Shift.F1 - GOTO LINE ********************************************** '****************************************************************************** '****************************************************************************** '**************************** Shift.F2 - SWITCH IN/ASM ****************************************** CASE CHR$(0) + CHR$(85) 'switch asm - in 'excluded '**************************** Shift.F2 - SWITCH IN/ASM ****************************************** '****************************************************************************** '****************************************************************************** '**************************** Shift.F3 - QUICK SAVE ****************************************** CASE CHR$(0) + CHR$(86) 'Quick-Save IF NOT file$ = "" THEN GOTO saving 'ctrl-S ELSE GOTO save END IF '**************************** Shift.F3 - QUICK SAVE ****************************************** '****************************************************************************** '****************************************************************************** '**************************** Shift.F4 - MERGE FILE ****************************************** CASE CHR$(0) + CHR$(87) 'Merge merge% = 1 lighted.teller% = 1 begin.asmlist% = 1 merge.file$ = file$ GOTO openbis mergebis: merge$ = file$ file$ = merge.file$ IF merge$ <> "" THEN gewijzigd% = 1 GOTO merge '**************************** Shift.F4 - MERGE FILE ****************************************** '****************************************************************************** '****************************************************************************** '**************************** Shift.F5 - LETTEROMZETTING ************************************* CASE CHR$(0) + CHR$(88) 'shift-F5 Lcase <-> UCase scherm.wissen lighted.omzetten% = 0 kies.omzetting: IF lighted.omzetten% = 0 THEN COLOR 1, 7 LOCATE 8, 26: PRINT UCASE$("capitals") COLOR 15, 1 LOCATE 10, 25: PRINT "small letters" ELSE COLOR 15, 1 LOCATE 8, 26: PRINT UCASE$("capitals") COLOR 1, 7 LOCATE 10, 25: PRINT "small letters" END IF COLOR 15, 1 DO nieuw.k$ = INKEY$ SELECT CASE nieuw.k$ CASE CHR$(0) + CHR$(72), CHR$(0) + CHR$(80)'down'up IF lighted.omzetten% = 1 THEN lighted.omzetten% = 0 ELSE lighted.omzetten% = 1 GOTO kies.omzetting CASE CHR$(27) lighted.omzetten% = 2 EXIT DO END SELECT LOOP UNTIL nieuw.k$ = CHR$(13) SELECT CASE lighted.omzetten% CASE 0 FOR i% = 1 TO maxrij% tekst$(i%) = UCASE$(tekst$(i%)) NEXT i% gewijzigd% = 1 CASE 1 FOR i% = 1 TO maxrij% tekst$(i%) = LCASE$(tekst$(i%)) NEXT i% gewijzigd% = 1 END SELECT scherm.wissen tempregel% = regel% GOSUB weergeven '**************************** Shift.F5 - LETTEROMZETTING ************************************* '****************************************************************************** '****************************************************************************** '**************************** Shift.F6/Shift.F7 - FIND/CHANGE ******************************** CASE CHR$(0) + CHR$(89), CHR$(0) + CHR$(90) 'Find/Change LOCATE 2, 1: COLOR 4, 7: PRINT "Find: "; COLOR 15, 1 LINE INPUT "", find$ IF LTRIM$(find$) = "" THEN GOTO einde.zoek lfind% = LEN(find$) lchanger% = 0 find$ = LCASE$(find$) CALL menuline.find GOSUB blanco IF k$ = CHR$(0) + CHR$(90) THEN LOCATE 2, 1: COLOR 4, 7: PRINT "Change by: "; COLOR 15, 1 LINE INPUT "", changer$ lchanger% = LEN(changer$) changer$ = LCASE$(changer$) CALL menuline.change END IF temp.startregel% = startregel% temp.eindregel% = eindregel% temp.rij% = rij% temp.cursor% = cursor% tempregel2% = regel% startregel% = 3 eindregel% = 22 regel% = 3 i% = rij% - 1 find.teller% = 0 found% = 0 DO IF i% < maxrij% THEN i% = i% + 1 ELSE IF k$ = CHR$(0) + CHR$(90) OR found% = 0 THEN GOTO einde.zoek GOTO last.find END IF FOR j% = 1 TO l(i%) - lfind% + 2 look$ = MID$(tekst$(i%), j%, lfind%) look2$ = LCASE$(look$) IF look2$ = find$ THEN found% = 1 find.teller% = find.teller% + 1 tel.i%(find.teller%) = i% IF i% > 13 THEN startregel% = i% - 10 eindregel% = startregel% + 19 regel% = FIX((eindregel% - startregel%) / 2) + 6 ELSE startregel% = 3 eindregel% = startregel% + 19 regel% = i% + 2 END IF temp.i% = i% scherm.wissen IF j% <= hrt% THEN tempregel% = regel% begin.cursor% = 0 GOSUB weergeven END IF i% = temp.i% LOCATE 23, 8: COLOR 0, 3: PRINT USING "####"; i%; PRINT " - "; PRINT USING "####"; j% f1$ = LEFT$(tekst$(i%), j% - 1) f2$ = RIGHT$(tekst$(i%), l(i%) - LEN(f1$) - lfind%) IF j% > hrt% THEN begin.cursor% = 70 tempregel% = regel% GOSUB cursor.weergeven COLOR 15, 1 LOCATE regel%, 2: PRINT STRING$(78, " ") LOCATE regel%, 2: PRINT RIGHT$(f1$, 10); COLOR 1, 15 PRINT look$; COLOR 15, 1 PRINT LEFT$(f2$, hrt% - 10 - lfind%) ELSE COLOR 15, 1 LOCATE regel%, 2: PRINT f1$; COLOR 1, 15 PRINT look$; COLOR 15, 1 PRINT LEFT$(f2$, hrt% - lfind% - LEN(f1$)) END IF last.find: DO find.k$ = INKEY$ SELECT CASE find.k$ CASE CHR$(0) + CHR$(80)'down last.find.k$ = "" EXIT DO CASE CHR$(0) + CHR$(72)'up IF find.teller% > 1 AND k$ = CHR$(0) + CHR$(89) THEN find.teller% = find.teller% - 2 IF last.find.k$ <> "up" THEN find.teller% = find.teller% + 1 i% = tel.i%(find.teller%) j% = 1 last.find.k$ = "up" EXIT DO END IF CASE CHR$(13) IF k$ = CHR$(0) + CHR$(90) THEN tekst$(i%) = f1$ + changer$ + f2$ l(i%) = LEN(tekst$(i%)) LOCATE regel%, 2: PRINT tekst$(rij%) COLOR 0, 3 gewijzigd% = 1 status$ = "(Gewijzigd) " LOCATE 23, 41: PRINT status$ COLOR 15, 1 EXIT DO END IF CASE CHR$(27) GOTO einde.zoek END SELECT LOOP END IF NEXT j% LOOP einde.zoek: rij% = tel.i%(find.teller%) ERASE tel.i% tempregel% = regel% scherm.wissen GOSUB weergeven IF found% = 0 THEN LOCATE 2, 1 COLOR 31 PRINT find$ + " is niet gevonden in " + file$ COLOR 15, 1 blancotijd = TIMER startregel% = temp.startregel% eindregel% = temp.eindregel% rij% = temp.rij% cursor% = temp.cursor% tempregel% = tempregel2% GOSUB weergeven END IF menuline begin.cursor% = 0 '**************************** Shift.F6/Shift.F7 - FIND/CHANGE ******************************** '****************************************************************************** '****************************************************************************** '**************************** Shift.F8 - INSERT: mov eax, ******************************** CASE CHR$(0) + CHR$(91) 'excluded '**************************** Shift.F8 - INSERT: mov eax, ******************************** '****************************************************************************** '****************************************************************************** '**************************** Shift.F9 - INSERT: mov si, offset ************************** CASE CHR$(0) + CHR$(92)'F9: insert mov si, offset 'excluded '**************************** Shift.F9 - INSERT: mov si, offset ************************** '****************************************************************************** '****************************************************************************** '**************************** Shift.F10 - INSERT: mov di, offset outarea ************************** CASE CHR$(0) + CHR$(93)'F10: insert mov di, offset outarea + 'excluded '**************************** Shift.F10 - INSERT: mov di, offset outarea ************************** '****************************************************************************** '****************************************************************************** '**************************** Shift.F11 - LISTING BEKIJKEN ************************** CASE CHR$(0) + CHR$(135) 'Shift-F11: edit listing 'excluded '**************************** Shift.F11 - LISTING BEKIJKEN ************************** '****************************************************************************** '****************************************************************************** '**************************** Shift.F12 - Bewaren in andere directory *************** CASE CHR$(0) + CHR$(136) 'Shift -F12 'doesn't always seem to work (the key) LOCATE 2, 1: COLOR 4, 7: PRINT "Save to: " LOCATE 3, 1: PRINT STRING$(80, " ") LOCATE 3, 1: PRINT "Geef VOLLEDIG pad, bestandsnaam en extensie!" COLOR 15, 1 CALL een.lijn(2, 10, 45, temp$) IF temp$ = "" THEN GOTO top save.to.dir: OPEN temp$ FOR APPEND AS #1 CLOSE #1 KILL temp$ OPEN temp$ FOR APPEND AS #1 FOR fileindex = 1 TO maxrij% PRINT #1, tekst$(fileindex) NEXT fileindex CLOSE #1 scherm.wissen tempregel% = regel% GOSUB weergeven '**************************** Shift.F12 - Bewaren in andere directory *************** '****************************************************************************** '****************************************************************************** '********************************** ENTER *********************************************** CASE CHR$(13) 'enter IF begin.cursor% > 0 THEN begin.cursor% = 0 seek$ = LCASE$(tekst$(rij%)) IF rij% >= maxrij% THEN LOCATE regel%, cursor%: PRINT " " LOCATE regel%, cursor%: PRINT MID$(tekst$(rij%), cursor% - 1 + begin.cursor%, 1) maxrij% = maxrij% + 1 cursor% = 2 IF regel% >= 22 THEN rij% = rij% + 1 startregel% = startregel% + 1 eindregel% = eindregel% + 1 tempregel% = 22 CALL scherm.wissen begin.cursor% = 0 GOSUB weergeven: GOTO top END IF gewijzigd% = 1 nieuw% = 0 vertaald% = 0 uitgevoerd% = 0 ELSE 'insert line LOCATE regel%, cursor%: PRINT " " COLOR , 1 temp1% = rij% LOCATE regel%, cursor%: PRINT STRING$(80 - cursor%, " ") FOR k% = regel% + 1 TO 22 LOCATE k%, 1: PRINT STRING$(80, " ") NEXT k% COLOR 15, 1 FOR i% = maxrij% + 1 TO rij% + 2 STEP -1 tekst$(i%) = tekst$(i% - 1) l(i%) = l(i% - 1) NEXT i% FOR i% = rij% + 1 TO rij% + 1 tekst$(i%) = RIGHT$(tekst$(i% - 1), l(i% - 1) - cursor% + 2) l(i%) = LEN(tekst$(i%)) NEXT i% maxrij% = maxrij% + 1 rij% = rij% + 1 tekst$(temp1%) = LEFT$(tekst$(temp1%), cursor% - 2) l(temp1%) = LEN(tekst$(temp1%)) temp2% = regel% tempregel% = regel% IF rij% + 1 >= eindregel% AND maxrij% > 22 THEN startregel% = startregel% + 1 eindregel% = eindregel% + 1 tempregel% = 22 CALL scherm.wissen ELSE tempregel% = regel% + 1 END IF cursor% = 2 gewijzigd% = 1 nieuw% = 0 vertaald% = 0 uitgevoerd% = 0 GOSUB weergeven GOTO top END IF EXIT DO '********************************** ENTER *********************************************** '****************************************************************************** '****************************************************************************** '********************************** HOME *********************************************** CASE CHR$(0) + CHR$(71) 'home IF cursor% + begin.cursor% = 2 THEN LOCATE regel%, cursor%: PRINT " " temp.home% = LEN(LTRIM$(tekst$(rij%))) verschil.home% = l(rij%) - temp.home% cursor% = verschil.home% + 2 IF verschil.home% > hrt% THEN begin.cursor% = verschil.home% - hrt% + 10 cursor% = hrt% - 10 + 2 tempregel% = regel% GOSUB cursor.weergeven END IF ELSE LOCATE regel%, cursor%: PRINT " " LOCATE regel%, cursor%: PRINT MID$(tekst$(rij%), cursor% - 1 + begin.cursor%, 1) cursor% = 2 IF begin.cursor% > 0 THEN begin.cursor% = 0: GOSUB weergeven END IF '********************************** HOME *********************************************** '****************************************************************************** '****************************************************************************** '********************************** END *********************************************** CASE CHR$(0) + CHR$(79) 'end IF LCASE$(LTRIM$(seek$)) = "inleiding" OR LCASE$(LTRIM$(seek$)) = "slot" OR LCASE$(LTRIM$(seek$)) = "covar" OR LCASE$(LTRIM$(seek$)) = "schrijf" OR LCASE$(LTRIM$(seek$)) = "tekstbin" THEN tempcursor% = cursor% cursor% = 0 seeked% = 1 cursor% = tempcursor% END IF IF seeked% = 0 THEN LOCATE regel%, cursor%: PRINT " " LOCATE regel%, cursor%: PRINT MID$(tekst$(rij%), cursor% - 1 + begin.cursor%, 1) END IF seeked% = 0 cursor% = l(rij%) + 2 IF cursor% > hrt% THEN begin.cursor% = l(rij%) - hrt% + 10 cursor% = hrt% - 10 + 2 tempregel% = regel% GOSUB cursor.weergeven END IF '********************************** END *********************************************** '****************************************************************************** '****************************************************************************** '********************************** DELETE ******************************************** CASE CHR$(0) + CHR$(83) 'delete IF ((cursor% + begin.cursor%) = l(rij%) + 2) THEN IF rij% < maxrij% THEN temp.l.rij% = l(rij% + 1) LOCATE regel%, cursor%: PRINT " " COLOR , 1 temp1% = rij% FOR k% = regel% TO 22 LOCATE k%, 1: PRINT STRING$(80, " ") NEXT k% COLOR 15, 1 FOR i% = rij% + 1 TO rij% + 1 tekst$(i% - 1) = tekst$(i% - 1) + tekst$(i%) l(i% - 1) = l(i% - 1) + l(i%) NEXT i% FOR i% = rij% + 1 TO maxrij% + 1 tekst$(i%) = tekst$(i% + 1) l(i%) = l(i% + 1) NEXT i% tekst$(maxrij%) = "" tekst$(maxrij% + 1) = "" maxrij% = maxrij% - 1 tempregel% = regel% GOSUB blanco IF begin.cursor% = 0 THEN GOSUB weergeven ELSE IF temp.l.rij% >= 10 THEN begin.cursor% = begin.cursor% + 10 cursor% = cursor% - 10 ELSE begin.cursor% = begin.cursor% + temp.l.rij% cursor% = cursor% - temp.l.rij% END IF GOSUB cursor.weergeven END IF ELSEIF l(rij%) <= 0 AND rij% > 1 THEN tekst$(rij%) = "" LOCATE regel%, cursor%: PRINT " " regel% = regel% - 1 rij% = rij% - 1 cursor% = l(rij%) + 2 maxrij% = maxrij% - 1 END IF gewijzigd% = 1 vertaald% = 0 uitgevoerd% = 0 ELSEIF (cursor% + begincursor% < l(rij%) + 2) THEN tekst$(rij%) = LEFT$(tekst$(rij%), cursor% + begin.cursor% - 2) + RIGHT$(tekst$(rij%), l(rij%) - cursor% - begin.cursor% + 1) COLOR 15, 1 LOCATE regel%, 1: PRINT STRING$(80, " ") LOCATE regel%, 2: PRINT MID$(tekst$(rij%), begin.cursor% + 1, 78) l(rij%) = l(rij%) - 1 gewijzigd% = 1 vertaald% = 0 uitgevoerd% = 0 END IF '********************************** DELETE ******************************************** '****************************************************************************** '****************************************************************************** '********************************** BACKSPACE ***************************************** CASE CHR$(8) 'backspace IF NOT cursor% <= 2 AND l(rij%) > 0 THEN tekst$(rij%) = LEFT$(tekst$(rij%), cursor% + begin.cursor% - 3) + RIGHT$(tekst$(rij%), l(rij%) - cursor% - begin.cursor% + 2) cursor% = cursor% - 1 LOCATE regel%, 1: PRINT STRING$(80, " ") LOCATE regel%, 2: PRINT MID$(tekst$(rij%), begin.cursor% + 1, 78) l(rij%) = l(rij%) - 1 gewijzigd% = 1 vertaald% = 0 uitgevoerd% = 0 ELSEIF rij% > 1 AND begin.cursor% = 0 THEN IF l(rij% - 1) + l(rij%) > maximum.rijlengte% THEN BEEP: GOTO top LOCATE regel%, cursor%: PRINT " " COLOR , 1 temp1% = rij% FOR k% = regel% TO 22 LOCATE k%, 1: PRINT STRING$(80, " ") NEXT k% COLOR 15, 1 cursor% = l(rij% - 1) + 2 FOR i% = rij% TO rij% tekst$(i% - 1) = tekst$(i% - 1) + tekst$(i%) l(i% - 1) = l(i% - 1) + l(i%) NEXT i% FOR i% = rij% TO maxrij% + 1 tekst$(i%) = tekst$(i% + 1) l(i%) = l(i% + 1) NEXT i% tekst$(maxrij%) = "" maxrij% = maxrij% - 1 regel% = regel% - 1 temp2% = regel% FOR i% = rij% - 1 TO maxrij% IF temp2% = 23 THEN EXIT FOR LOCATE temp2%, 2: PRINT tekst$(i%) temp2% = temp2% + 1 NEXT i% gewijzigd% = 1 vertaald% = 0 uitgevoerd% = 0 rij% = rij% - 1 IF regel% = 2 THEN regel% = 3 startregel% = startregel% - 1 eindregel% = eindregel% - 1 tempregel% = 3 CALL scherm.wissen IF cursor.weergeven > 0 THEN GOSUB cursor.weergeven ELSE GOSUB weergeven END IF GOTO top END IF ELSEIF rij% > 1 OR begin.cursor% > 0 THEN tekst$(rij%) = LEFT$(tekst$(rij%), cursor% + begin.cursor% - 3) + RIGHT$(tekst$(rij%), l(rij%) - cursor% - begin.cursor% + 2) cursor% = cursor% - 1 l(rij%) = l(rij%) - 1 scherm.wissen begin.cursor% = begin.cursor% - 1 cursor% = cursor% + 1 GOSUB cursor.weergeven gewijzigd% = 1 vertaald% = 0 uitgevoerd% = 0 END IF '********************************** BACKSPACE ***************************************** '****************************************************************************** '****************************************************************************** '********************************** TAB ***************************************** CASE CHR$(9) 'tab tempcursor% = ((1 + INT((cursor% - 2) / 8)) * 8) + 2 IF l(rij%) + tempcursor% - cursor% > maximum.rijlengte% THEN BEEP: GOTO top IF cursor% + begin.cursor% >= l(rij%) + 2 THEN LOCATE regel%, cursor%: PRINT " " LOCATE regel%, cursor%: PRINT MID$(tekst$(rij%), cursor% - 1 + begin.cursor%, 1) FOR i% = cursor% TO tempcursor% - 1 tekst$(rij%) = tekst$(rij%) + " " NEXT i% ELSE IF insert% = 1 THEN ltekst$ = LEFT$(tekst$(rij%), cursor% + begin.cursor% - 2) rtekst$ = RIGHT$(tekst$(rij%), l(rij%) - cursor% - begin.cursor% + 2) FOR i% = cursor% TO tempcursor% - 1 rtekst$ = " " + rtekst$ NEXT i% tekst$(rij%) = ltekst$ + rtekst$ END IF END IF l(rij%) = LEN(tekst$(rij%)) IF tempcursor% + 2 <= hrt% THEN cursor% = tempcursor% LOCATE regel%, 2: PRINT MID$(tekst$(rij%), begin.cursor% + 1, 78) ELSE tempregel% = regel% begin.cursor% = begin.cursor% + 8 GOSUB cursor.weergeven END IF gewijzigd% = 1 vertaald% = 0 uitgevoerd% = 0 '********************************** TAB ***************************************** '****************************************************************************** '****************************************************************************** '********************************** Shift.TAB ***************************************** CASE CHR$(0) + CHR$(15) tempcursor% = ((INT((begin.cursor% + cursor% - 3) / 8)) * 8) + 2 verschil% = cursor% + begin.cursor% - tempcursor% IF verschil% < 0 THEN verschil% = 0 LOCATE regel%, cursor%: PRINT " " LOCATE regel%, cursor%: PRINT MID$(tekst$(rij%), cursor% - 1 + begin.cursor%, 1) cursor% = cursor% - verschil% IF cursor% < 2 THEN IF begin.cursor% = 0 THEN cursor% = 2 ELSE tempregel% = regel% scherm.wissen IF begin.cursor% > verschil% THEN begin.cursor% = begin.cursor% - verschil% GOSUB cursor.weergeven ELSE begin.cursor% = 0 cursor% = 2 GOSUB weergeven END IF END IF END IF '********************************** Shift.TAB ***************************************** '****************************************************************************** '****************************************************************************** '********************************** LINKS *************************************** CASE CHR$(0) + CHR$(75) 'Links IF NOT cursor% <= 2 THEN LOCATE regel%, cursor%: PRINT " " LOCATE regel%, cursor%: PRINT MID$(tekst$(rij%), cursor% - 1 + begin.cursor%, 1) cursor% = cursor% - 1 ELSE IF begin.cursor% = 0 THEN IF NOT regel% <= 3 THEN LOCATE regel%, cursor%: PRINT " " LOCATE regel%, cursor%: PRINT MID$(tekst$(rij%), cursor% - 1 + begin.cursor%, 1) rij% = rij% - 1 regel% = regel% - 1 cursor% = l(rij%) + 2 ELSEIF regel% <= 3 AND rij% > 1 THEN rij% = rij% - 1 cursor% = l(rij%) + 2 startregel% = startregel% - 1 eindregel% = eindregel% - 1 tempregel% = 3 CALL scherm.wissen GOSUB weergeven: GOTO top GOTO top END IF ELSE tempregel% = regel% begin.cursor% = begin.cursor% - 1 GOSUB cursor.weergeven LOCATE regel%, cursor%: PRINT MID$(tekst$(rij%), cursor% - 1 + begin.cursor%, 1) END IF END IF '********************************** LINKS *************************************** '****************************************************************************** '****************************************************************************** '********************************** RECHTS ************************************** CASE CHR$(0) + CHR$(77) 'Rechts IF cursor% + begin.cursor% <= l(rij%) + 1 THEN LOCATE regel%, cursor%: PRINT " " LOCATE regel%, cursor%: PRINT MID$(tekst$(rij%), cursor% - 1 + begin.cursor%, 1) IF cursor% < hrt% THEN cursor% = cursor% + 1 ELSE begin.cursor% = begin.cursor% + 1 tempregel% = regel% GOSUB cursor.weergeven END IF END IF '********************************** RECHTS ************************************** '****************************************************************************** '****************************************************************************** '********************************** UP-ARROW ************************************** CASE CHR$(0) + CHR$(72) 'Up seek$ = LCASE$(tekst$(rij%)) IF LCASE$(LTRIM$(seek$)) = "inleiding" OR LCASE$(LTRIM$(seek$)) = "slot" OR LCASE$(LTRIM$(seek$)) = "covar" OR LCASE$(LTRIM$(seek$)) = "schrijf" OR LCASE$(LTRIM$(seek$)) = "tekstbin" THEN tempcursor% = cursor% cursor% = 0 cursor% = tempcursor% seeked% = 1 END IF IF regel% > 3 THEN IF begin.cursor% > 0 THEN begin.cursor% = 0: tempregel% = regel%: GOSUB weergeven IF seeked% = 0 THEN LOCATE regel%, cursor%: PRINT " " LOCATE regel%, cursor%: PRINT MID$(tekst$(rij%), cursor% - 1 + begin.cursor%, 1) END IF rij% = rij% - 1 regel% = regel% - 1 IF cursor% > l(rij%) + 2 THEN cursor% = l(rij%) + 2 END IF ELSEIF rij% > 1 THEN IF begin.cursor% > 0 THEN begin.cursor% = 0: tempregel% = regel%: GOSUB weergeven IF seeked% = 0 THEN LOCATE regel%, cursor%: PRINT " " LOCATE regel%, cursor%: PRINT MID$(tekst$(rij%), cursor% - 1 + begin.cursor%, 1) END IF rij% = rij% - 1 IF cursor% > l(rij%) + 2 THEN cursor% = l(rij%) + 2 END IF startregel% = startregel% - 1 eindregel% = eindregel% - 1 tempregel% = 3 CALL scherm.wissen GOSUB weergeven GOTO top END IF seeked% = 0 '********************************** UP-ARROW ************************************** '****************************************************************************** '****************************************************************************** '********************************** DOWN-ARROW ************************************** CASE CHR$(0) + CHR$(80) 'Down seek$ = LCASE$(tekst$(rij%)) IF LCASE$(LTRIM$(seek$)) = "inleiding" OR LCASE$(LTRIM$(seek$)) = "slot" OR LCASE$(LTRIM$(seek$)) = "covar" OR LCASE$(LTRIM$(seek$)) = "schrijf" OR LCASE$(LTRIM$(seek$)) = "tekstbin" THEN tempcursor% = cursor% cursor% = 0 cursor% = tempcursor% seeked% = 1 END IF IF NOT rij% >= maxrij% THEN IF begin.cursor% > 0 THEN begin.cursor% = 0: tempregel% = regel%: GOSUB weergeven IF seeked% = 0 THEN LOCATE regel%, cursor%: PRINT " " LOCATE regel%, cursor%: PRINT MID$(tekst$(rij%), cursor% - 1 + begin.cursor%, 1) END IF rij% = rij% + 1 IF cursor% > l(rij%) + 2 THEN cursor% = l(rij%) + 2 END IF IF rij% + 1 >= eindregel% THEN startregel% = startregel% + 1 eindregel% = eindregel% + 1 tempregel% = 22 CALL scherm.wissen GOSUB weergeven: GOTO top END IF regel% = regel% + 1 END IF '********************************** DOWN-ARROW ************************************** '****************************************************************************** '****************************************************************************** '********************************** PAGE-UP ************************************** CASE CHR$(0) + CHR$(73) 'Page Up l.last.rij% = l(rij%) IF NOT startregel% - 20 < 1 THEN rij% = rij% - 20 startregel% = startregel% - 20 eindregel% = eindregel% - 20 tempregel% = regel% ELSE rij% = 1 startregel% = 3 eindregel% = 22 tempregel% = 3 END IF cursor% = cursor% + begin.cursor% - 1 IF cursor% >= l(rij%) + 2 THEN cursor% = l(rij%) + 2 END IF CALL scherm.wissen IF cursor% > hrt% THEN l.last.rij% = l.last.rij% - l(rij%) IF l.last.rij% < 0 THEN l.last.rij% = 0 cursor% = hrt% - 10 + 2 GOSUB cursor.weergeven ELSE begin.cursor% = 0 GOSUB weergeven END IF GOTO top '********************************** PAGE-UP ************************************** '****************************************************************************** '****************************************************************************** '********************************** PAGE-DOWN ************************************** CASE CHR$(0) + CHR$(81) 'Page Down l.last.rij% = l(rij%) IF NOT rij% + 20 > maxrij% THEN rij% = rij% + 20 startregel% = startregel% + 20 eindregel% = eindregel% + 20 tempregel% = regel% ELSE verschil% = maxrij% - rij% rij% = maxrij% IF regel% + verschil% > 20 THEN startregel% = startregel% + verschil% eindregel% = eindregel% + verschil% tempregel% = regel% ELSE tempregel% = regel% + verschil% END IF END IF temp.cursor% = cursor% cursor% = cursor% + begin.cursor% - 1 IF cursor% >= l(rij%) + 2 THEN cursor% = l(rij%) + 2 END IF CALL scherm.wissen IF cursor% > hrt% THEN l.last.rij% = l.last.rij% - l(rij%) IF l.last.rij% < 0 THEN l.last.rij% = 0 cursor% = hrt% - 10 + 2 - l.last.rij% GOSUB cursor.weergeven ELSE begin.cursor% = 0 GOSUB weergeven END IF GOTO top '********************************** PAGE-DOWN ************************************** '****************************************************************************** '****************************************************************************** '********************************** CTRL-HOME ************************************** CASE CHR$(0) + CHR$(119) rij% = 1 startregel% = 3 eindregel% = 22 tempregel% = 3 cursor% = 2 scherm.wissen GOSUB weergeven '********************************** CTRL-HOME ************************************** '****************************************************************************** '****************************************************************************** '********************************** CTRL-END ************************************** CASE CHR$(0) + CHR$(117) rij% = maxrij% eindregel% = maxrij% + 2 startregel% = eindregel% - 19 tempregel% = 22 IF startregel% < 3 THEN tempregel% = rij% + 2 startregel% = 3 eindregel% = 22 END IF cursor% = 2 scherm.wissen GOSUB weergeven '********************************** CTRL-END ************************************** '****************************************************************************** '****************************************************************************** '********************************** CTRL-C ************************************** CASE CHR$(3) 'excluded '********************************** CTRL-C ************************************** '****************************************************************************** '****************************************************************************** '********************************** CTRL-Y ************************************** CASE CHR$(25) IF maxrij% > 1 AND rij% <> maxrij% THEN maxrij% = maxrij% - 1 FOR i% = rij% TO maxrij% + 1 tekst$(i%) = tekst$(i% + 1) l(i%) = l(i% + 1) NEXT i% scherm.wissen cursor% = 2 tempregel% = regel% GOSUB weergeven gewijzigd% = 1 vertaald% = 0 uitgevoerd% = 0 ELSEIF l(rij%) > 0 THEN tekst$(rij%) = "" l(rij%) = 0 cursor% = 2 scherm.wissen tempregel% = regel% GOSUB weergeven gewijzigd% = 1 vertaald% = 0 uitgevoerd% = 0 END IF '********************************** CTRL-Y ************************************** '****************************************************************************** '****************************************************************************** '********************************** ELSE ************************************** CASE ELSE IF k$ <> "" AND LEN(k$) = 1 THEN IF cursor% + begin.cursor% >= l(rij%) + 2 THEN tekst$(rij%) = tekst$(rij%) + k$ l(rij%) = LEN(tekst$(rij%)) COLOR 15, 1 LOCATE regel%, cursor%: PRINT k$ cursor% = cursor% + 1 ELSE IF insert% = 1 THEN tekst$(rij%) = LEFT$(tekst$(rij%), cursor% - 2) + k$ + RIGHT$(tekst$(rij%), l(rij%) - cursor% + 2) ELSE MID$(tekst$(rij%), cursor% - 1) = k$ END IF cursor% = cursor% + 1 COLOR 15, 1 LOCATE regel%, 1: PRINT STRING$(80, " ") IF begincursor% > 0 THEN LOCATE regel%, 2: PRINT MID$(tekst$(rij%), begin.cursor%, 78) ELSE LOCATE regel%, 2: PRINT LEFT$(tekst$(rij%), 78) END IF l(rij%) = LEN(tekst$(rij%)) END IF IF cursor% + 2 > hrt% THEN tempregel% = regel% begin.cursor% = begin.cursor% + 1 cursor% = cursor% - 1 GOSUB cursor.weergeven END IF gewijzigd% = 1 vertaald% = 0 uitgevoerd% = 0 END IF '********************************** ELSE ************************************** '****************************************************************************** END SELECT '****************************************************************************** '********************************** CONTROLE-SECTIE *************************** 'LOCATE 2, 1: PRINT MID$(tekst$(rij%), cursor% - 1 + begin.cursor%, 1) 'LOCATE 2, 1: PRINT tempcursor% 'LOCATE 2, 1: PRINT maxrij% '********************************** CONTROLE-SECTIE *************************** '****************************************************************************** LOOP LOOP '****************************************************************************** '**************************** BLANCO ***************************************************************************************************************** blanco: LOCATE 2, 1: COLOR , 1: PRINT STRING$(80, " ") RETURN '**************************** BLANCO *********************************** '****************************************************************************** '****************************************************************************** '**************************** FILELIST ***************************************************************************************************************** filelist: OPEN "dir.tem" FOR APPEND AS #1 CLOSE #1 KILL "dir.tem" SHELL "dir > dir.tem" OPEN "dir.tem" FOR INPUT AS #1 asmlist% = 0 DO WHILE NOT EOF(1) LINE INPUT #1, filelist$ temp$ = LEFT$(filelist$, 12) temp2$ = RIGHT$(temp$, 3) temp3$ = RIGHT$(temp$, 3) IF UCASE$(temp2$) = "TXT" THEN asmlist% = asmlist% + 1 asmlist$(asmlist%) = temp$ END IF LOOP IF sort$ = "J" THEN LOCATE 2, 25: COLOR 15, 1: PRINT "sorting: of "; asmlist% max% = 0 sort: FOR i% = 1 TO asmlist% - 1 IF i% > max% THEN max% = i% LOCATE 2, 34: PRINT USING "####"; max% END IF IF asmlist$(i%) > asmlist$(i% + 1) THEN SWAP asmlist$(i%), asmlist$(i% + 1) GOTO sort END IF NEXT i% GOSUB blanco END IF filelist$ = "" temp$ = "" temp2$ = "" CLOSE #1 KILL "dir.tem" RETURN '**************************** FILELIST ***************************************************************************************************************** '****************************************************************************** '****************************************************************************** '**************************** WEERGEVEN ***************************************************************************************************************** weergeven: regel% = 3 FOR x% = startregel% - 2 TO eindregel% - 2 COLOR 15, 1 FOR i% = 1 TO rijteller% IF x% = rijselected(i%) THEN COLOR , 7: EXIT FOR NEXT i% IF x% <= 0 THEN BEEP: GOSUB refresh seek$ = LCASE$(RTRIM$(tekst$(x%))) LOCATE regel%, 2: PRINT LEFT$(tekst$(x%), 78) IF tekst$(x%) = "" THEN LOCATE regel%, 2 PRINT " " END IF regel% = regel% + 1 NEXT x% regel% = tempregel% RETURN '**************************** WEERGEVEN ***************************************************************************************************************** '****************************************************************************** '****************************************************************************** '**************************** cursor.WEERGEVEN *********************************** cursor.weergeven: IF begin.cursor% <= 0 THEN begin.cursor% = 0: GOSUB refresh: BEEP: GOTO top scherm.wissen regel% = 3 COLOR 15, 1 FOR x% = startregel% - 2 TO eindregel% - 2 IF x% <= 0 THEN BEEP: GOSUB refresh LOCATE regel%, 2: PRINT MID$(tekst$(x%), begin.cursor% + 1, 78) regel% = regel% + 1 NEXT x% regel% = tempregel% RETURN '**************************** Cursor.WEERGEVEN *********************************** '****************************************************************************** '****************************************************************************** '**************************** MAKE BACKUP ************************************* backup: IF gewijzigd% = 0 THEN RETURN LOCATE 2, 1: COLOR 20, 7: PRINT "Automatisch reservebestand": COLOR 15, 1 OPEN "asbackup.asm" FOR APPEND AS #1 CLOSE #1 KILL "asbackup.asm" OPEN "asbackup.asm" FOR APPEND AS #1 FOR backupi% = 1 TO maxrij% PRINT #1, tekst$(backupi%) NEXT backupi% CLOSE #1 blancotijd = 2 RETURN '**************************** MAKE BACKUP ************************************ '****************************************************************************** '****************************************************************************** '**************************** AFDRUKKEN ************************************** openPRINT: LPRINT print.file$ + ":" printl% = LEN(print.file$) streep$ = "-" FOR streep% = 1 TO printl% streep$ = streep$ + "-" NEXT streep% LPRINT streep$ LPRINT OPEN print.file$ FOR INPUT AS #2 DO WHILE NOT EOF(2) LINE INPUT #2, printtemp$ LPRINT printtemp$ LOOP CLOSE #2 k% = LPOS(0) FOR i% = k% TO 62 LPRINT NEXT i% RETURN '**************************** AFDRUKKEN ************************************** '****************************************************************************** '****************************************************************************** '**************************** FOUTAFHANDELING *********************************** error.handler: errorcode = ERR IF ERR = 75 THEN BEEP: tempregel% = regel%: scherm.wissen: GOSUB weergeven: GOTO top IF ERR = 13 THEN RESUME NEXT BEEP IF rij% <= 0 THEN rij% = 1: regel% = 3: startregel% = 3: eindregel% = 22 IF regel% <= 3 THEN regel% = 3: rij% = 1: startregel% = 3: eindregel% = 22 IF gewijzigd% = 1 THEN LOCATE 2, 1: COLOR 4, 1: PRINT "Er is een fout opgetreden. Wilt U uw bestand bewaren en Qb-editor opnieuw opstarten? j/n. "; ELSE LOCATE 2, 1: COLOR 4, 1: PRINT "Er is een fout opgetreden. Wilt U Qb-editor opnieuw opstarten? j/n."; END IF DO k$ = INKEY$ k$ = UCASE$(k$) IF k$ = CHR$(13) THEN LOCATE 22, 1: PRINT "Error Code: "; errorcode; "in regel% "; ERL IF k$ = CHR$(27) THEN k$ = "N" LOOP UNTIL k$ = "J" OR k$ = "N" IF k$ = "N" THEN GOSUB blanco LOCATE 3, 1: PRINT STRING$(80, " ") GOSUB refresh ELSEIF k$ = "J" THEN GOSUB blanco LOCATE 3, 1: PRINT STRING$(80, " ") einde% = 1 IF gewijzigd% = 1 THEN GOTO save RUN END IF RESUME NEXT '**************************** FOUTAFHANDELING *********************************** '****************************************************************************** '****************************************************************************** '**************************** VERNIEUWEN ************************************** refresh: scherm.wissen scherm cursor% = 2 rij% = 1 tempregel% = 3 startregel% = 3 eindregel% = 22 GOSUB weergeven: GOTO top RETURN '**************************** VERNIEUWEN ************************************** '****************************************************************************** '****************************************************************************** '****************************************************************************** '****************************************************************************** '****************************************************************************** '****************************************************************************** SUB een.lijn (x%, Y%, max.y%, regel$) DIM letter$(max.y%) begin.y% = Y% LOCATE x%, Y%: COLOR 15, 1 t = 0 FOR i% = 1 TO max.y% IF MID$(regel$, i%, 1) <> "" THEN LOCATE x%, Y% + i% - 1: COLOR 15: PRINT MID$(regel$, i%, 1): COLOR 15 t = t + 1 ELSE LOCATE x%, Y% + i% - 1: COLOR 15: PRINT "_": COLOR 15 END IF NEXT i% max.y% = max.y% + Y% Y% = Y% + t k$ = "" DO k$ = INKEY$ IF NOT Y% >= max.y% THEN IF MID$(regel$, Y% - begin.y% + 1, 1) <> "" THEN LOCATE x%, Y%: COLOR 15 + 16: PRINT MID$(regel$, Y% - begin.y% + 1, 1): COLOR 15 ELSE LOCATE x%, Y%: COLOR 15 + 16: PRINT "_": COLOR 15 END IF END IF SELECT CASE k$ CASE CHR$(13) IF regel$ <> "" THEN l% = LEN(regel$) cons% = 0 FOR con% = 1 TO l% e$ = MID$(regel$, con%, 1) IF e$ = " " THEN cons% = cons% + 1 END IF NEXT con% IF NOT cons% = l% THEN EXIT DO ELSE regel$ = "" EXIT DO END IF END IF CASE CHR$(27) regel$ = "" EXIT SUB CASE CHR$(8) IF NOT Y% = begin.y% THEN IF MID$(regel$, Y% - begin.y% + 1, 1) <> "" THEN LOCATE x%, Y%: COLOR 15: PRINT MID$(regel$, Y% - begin.y% + 1, 1) ELSE LOCATE x%, Y%: COLOR 15: PRINT "_" END IF LOCATE x%, Y% - 1: COLOR 15 + 16: PRINT "_": COLOR 15 Y% = Y% - 1 l% = LEN(regel$) regel$ = LEFT$(regel$, l% - 1) END IF CASE CHR$(0) + CHR$(75) 'Links IF NOT Y% = begin.y% THEN IF MID$(regel$, Y% - begin.y% + 1, 1) <> "" THEN LOCATE x%, Y%: COLOR 15: PRINT MID$(regel$, Y% - begin.y% + 1, 1) ELSE LOCATE x%, Y%: COLOR 15: PRINT "_" END IF Y% = Y% - 1 END IF CASE CHR$(0) + CHR$(77) 'Rechts IF NOT Y% >= max.y% THEN IF MID$(regel$, Y% - begin.y% + 1, 1) <> "" THEN LOCATE x%, Y%: COLOR 15: PRINT MID$(regel$, Y% - begin.y% + 1, 1) ELSE LOCATE x%, Y%: COLOR 15: PRINT "_" END IF Y% = Y% + 1 END IF CASE ELSE IF k$ <> "" AND LEN(k$) = 1 THEN IF NOT Y% = max.y% THEN regel$ = regel$ + k$ LOCATE x%, Y%: PRINT k$ Y% = Y% + 1 END IF END IF END SELECT LOOP END SUB SUB menuline LOCATE 1, 1: COLOR 4, 7: PRINT STRING$(80, " ") LOCATE 1, 1: COLOR 4, 7: PRINT " F3-Save As F4-Open F5-Refesh F6-Select Shift.F6-Find F9-print F10-Quit " COLOR 15, 1 END SUB SUB menuline.change LOCATE 1, 1: COLOR 4, 7: PRINT STRING$(80, " ") LOCATE 1, 1: COLOR 4, 7: PRINT " Enter - Change DownArrow - Next Esc - Cancel" COLOR 15, 1 END SUB SUB menuline.find LOCATE 1, 1: COLOR 4, 7: PRINT STRING$(80, " ") LOCATE 1, 1: COLOR 4, 7: PRINT " DownArrow - Next UpArrow - Previous Esc - Cancel" COLOR 15, 1 END SUB SUB menuline.open (sort$, openexe%, getdirexe%) IF sort$ = "" THEN sort2$ = "Name" ELSE sort2$ = "Date" COLOR 15, 1 LOCATE 23, 1: COLOR 4, 7: PRINT " F1 - Copy * F2 - Nieuw * F3 - Sort by " + sort2$ + " * Del - Delete * F9 - Print " IF openexe% = 0 OR getdirexe% = 0 THEN LOCATE 23, 1: COLOR 8, 7: PRINT "(F1 - Copy)" COLOR 15, 1 END SUB SUB menuline.select LOCATE 1, 1: COLOR 0, 7: PRINT " F1 - Copy F2 - Cut F3 - Delete F9 - Print ESC - Cancel "; END SUB SUB scherm CLS SCREEN 0 FOR i% = 2 TO 25 LOCATE i%, 1: COLOR , 0: PRINT STRING$(80, " ") NEXT i% FOR i% = 2 TO 22 LOCATE i%, 1: COLOR , 1: PRINT STRING$(80, " ") NEXT i% LOCATE 1, 1: COLOR 4, 7: PRINT " F3-Save As F4-Open F5-Refesh F6-Select Shift.F6-Find F9-print F10-Quit " LOCATE 23, 1: COLOR , 3: PRINT STRING$(80, " ") LOCATE 23, 2: COLOR 0, 3: PRINT "line: file: " COLOR 15, 1 END SUB SUB scherm.wissen FOR i% = 2 TO 22 LOCATE i%, 1: COLOR , 1: PRINT STRING$(80, " ") NEXT i% END SUB