Top 10k strings from tor-edso2.rtf in <root> / doc / technical / RoelofKoning / tornadSRC.zip /
Back to the directory listing
102 \par
37 RRA \par
34 RET \par
21 AND A \par
18 EX DE,HL \par
16 INC HL \par
12 RST 16 \par
12 POP HL \par
12 DEFB 255 \par
11 SBC HL,DE \par
11 DEC A \par
11 CALL printmsge \par
10 LD A,(DE) \par
10 INC DE \par
10 DEC HL \par
8 LD C,L \par
8 LD C,A \par
8 LD A,(HL) \par
8 CP 13 \par
7 XOR A \par
7 LD A,(BC) \par
7 INC L \par
7 CALL 11747 \par
7 ADD A,(HL) \par
6 RLA \par
6 LDIR \par
6 INC D \par
6 INC C \par
5 \cf0 \par
5 PUSH HL \par
5 POP AF \par
5 LD L,B \par
5 LD B,0 \par
5 LD A,C \par
5 LD (ypos),A \par
5 LD (HL),A \par
5 EXX \par
5 ADD HL,BC \par
4 PUSH DE \par
4 PUSH BC \par
4 POP DE \par
4 LD B,A \par
4 LD A,E \par
4 LD (filend),DE \par
4 CALL 11563 \par
3 SUB 8 \par
3 SRL L \par
3 RRCA \par
3 RL L \par
3 RL C \par
3 PUSH AF \par
3 LD L,E \par
3 LD HL,(scrtop) \par
3 LD H,A \par
3 LD E,L \par
3 LD DE,(filend) \par
3 LD D,H \par
3 LD B,H \par
3 LD A,32 \par
3 LD (scrtop),HL \par
3 LD (DE),A \par
3 JR g4 -1 \par
3 JR Z,w6 \par
3 INC BC \par
3 CP H \par
3 CCF \par
3 CALL volger \par
3 CALL volgende \par
3 ADD HL,HL \par
2 XOR (HL) \par
2 SLA A \par
2 RET NZ ;exit if not found \par
2 RET C ;ret if no room \par
2 RET C ;ret if at margin \par
2 RET C \par
2 POP BC \par
2 OUT (254),A \par
2 LD L,C \par
2 LD HL,linpoint \par
2 LD HL,linbuf \par
2 LD HL,(filend) \par
2 LD HL,(curslin) \par
2 LD H,D \par
2 LD E,A ;adjust linbufpntr \par
2 LD E,A \par
2 LD A,13 \par
2 LD (xpos),HL \par
2 LD (xpos),A \par
2 LD (filend),HL \par
2 LD (altflg),A \par
2 LD (HL),255 \par
2 JP warm \par
2 JP entex \par
2 INC E \par
2 EX AF,AF' \par
2 DEFB 240,240,240,240 \par
2 CP C \par
2 CP 127 \par
2 CP "M" \par
2 CP ";" \par
2 CALL vul \par
2 CALL storelin \par
2 CALL prhx ;print hex \par
2 CALL getblmark ;find blockmarkers \par
2 CALL calc +3 ;screenaddr. \par
2 CALL 949 \par
2 CALL 5633 \par
2 AND 223 ;CAPs \par
2 AND 127 ;drop bit 7 \par
2 ADD HL,DE \par
2 ADD A,chartable /256 -1 \par
2 ADD A,8 \par
2 ADD A,7 \par
1 {\rtf1\ansi\ansicpg1252\deff0\deflang1043{\fonttbl{\f0\fmodern\fprq1\fcharset0 Courier;}}
1 {\colortbl ;\red0\green0\blue255;}
1 ypos EQU xpos +1 ;vert. printpos (pixels) \par
1 wm1 LD (curslin),HL ;print file on scr. \par
1 wk1 BIT 5,(IY+1) \par
1 wk0 CALL cursor \par
1 warm CALL cls \par
1 waitkey EI \par
1 wait RES 5,(IY+1) ;no valid key \par
1 wa BIT 5,(IY+1) \par
1 w6 LD B,H ;GOTO BC \par
1 w5 CP "T" \par
1 w4 LD A,(DE) \lang2057 \lang1043 \par
1 w2 EX DE,HL ;make DE point to end of \par
1 w1 CP "O" \par
1 w0 CP "A" \par
1 vul LD (DE),A ;move char into buffer \par
1 vorige LD HL,(curslin) ;find addr. of previous line \par
1 vor2 INC HL ;point to first char of line \par
1 vor1 SBC HL,DE \par
1 volger LD A,(HL) \par
1 volgende LD HL,(curslin) ;find addr. of next line \par
1 vfilmax EQU 65260 ;default end of text \par
1 valtok POP HL ;drop old linbufpntr \par
1 valend INC DE ;test in linbuf, for end of \par
1 undef DEFM "Undef" \par
1 udolin CALL prlin ;print next line \par
1 udo1 INC C \par
1 try INC HL \par
1 trtok PUSH HL ;save insertpntr \par
1 totlen EQU xpos +26 ;len of sym tab \par
1 token SUB 127 \par
1 toggle EQU xpos +28 ;symb sort key \par
1 testsymb LD B,14 ;name length \par
1 testn CP 58 \par
1 testa CALL aonly ;on exit: C = invalid \par
1 test PUSH HL ;HL and DE both point to an entry \par
1 t2 LD A,(HL) \par
1 t1 BIT 7,(HL) \par
1 symv CALL 3435 ;cls \par
1 symt LD A,3 ;use printer \par
1 sympo EQU xpos +24 ;bottom of symboltable \par
1 symbtop EQU 65520 ;top of symboltable \par
1 swl LD A,(HL) \par
1 swap PUSH DE ;swap both entries\par
1 storevar EQU xpos +30 ;temp store of SP during ass \par
1 storelin LD A,(altflg) ;test for 'line has changed' \par
1 stmt2flg EQU xpos +29 ;flag ':' in line \par
1 sort LD A,(toggle) \par
1 smt LD (storevar+1),A \par
1 slo PUSH DE ;sort loop \par
1 serm DEFM "SYMBOLTABLE: " \par
1 scrup2 LD A,C \par
1 scrup1 LD H,A \par
1 scrup LD A,184 ;point to topline \par
1 scrtop EQU xpos +6 ;addr. of first line on screen\par
1 scrdw2 LD A,C \par
1 scrdw1 LD H,A ;topleft coords = 0,0 \par
1 scrdw XOR A \par
1 right LD A,(xpos) ;adjust curspos. \par
1 recsp LD H,D ;reclaim one space \par
1 rec1 LD A,32 ;'delete' last char on line \par
1 quote CP 34 \par
1 quo INC DE ;inside quotes now \par
1 qo CP 13 ;inside quotes now \par
1 pu CALL vorige +3 \par
1 prmenu LD A,7 ;cls screen \par
1 prlin XOR A ;reset 'line changed' flag \par
1 printmsge LD A,(HL) ;print msge until 255 is found\par
1 printerr LD HL,posm ;point to position controllers\par
1 prhx PUSH AF ;print number in hex \par
1 press DEFB 13,20,1 \par
1 pl2 LD A,(HL) \par
1 pl1 DEC L \par
1 pd CALL volger \par
1 pc1 INC HL ;point to next char in file \par
1 pass EQU xpos +22 ;pass counter \par
1 pageup CALL storelin \par
1 pagedown CALL storelin \par
1 opcotable DEFB 128 ;startmark \par
1 oksm DEFM "O.K., " \par
1 nxtchar LD A,(DE) \par
1 nxt BIT 7,(HL) ;test end of token \par
1 nxch INC DE ;test next char \par
1 nxc CP 127 ;(c) \par
1 nstr2 EQU xpos +49 ;length = 10 !!!!!!! \par
1 notused EQU xpos +37 ;- \par
1 notok POP HL ;retrieve insertpntr \par
1 noroomflg EQU xpos +33 ;errors during ass \par
1 noquote CALL vul ;move from file into buffer \par
1 nextblock EQU xpos +38 ;- \par
1 next POP DE ;old l.pntr \par
1 movelin LD HL,ypos ;calc screenposition \par
1 movblok LD (storevar +1),A ;save command temp \par
1 more INC DE ;next char in linbuf \par
1 mkroom PUSH BC ;store length \par
1 minlin ADD HL,DE ;undo earlier subtraction \par
1 mgt6 EQU xpos +72 \par
1 mgt5 EQU xpos +71 \par
1 mgt4 EQU xpos +48 ;holds 4 \par
1 mgt3 EQU xpos +47 ;holds "d" \par
1 mgt2 EQU xpos +46 \par
1 mgt1 EQU xpos +45 ;MGT specific \par
1 mb5 CALL vorige +3 ;find start of line \par
1 mb4 PUSH BC \par
1 mb3 LDIR ;move block \par
1 mb2 LD A,(DE) ;adjust DE \par
1 mb1 DEC HL ;adjust HL \par
1 mb0 ADC A,0 ;save cursorpos. flag \par
1 lup EXX \par
1 lsend LD A,(storevar+1) ;retrieve command \par
1 ls6 BIT 5,(IY+1) \par
1 ls5 LD A,13 ;newline \par
1 ls4 POP DE ;retrieve table pointer \par
1 ls3 LD A,(DE) ;collect adress in BC \par
1 ls2 LD A,(DE) \par
1 ls1 LD HL,(sympo) ;test for ready \par
1 loop3 LD H,B \par
1 loop2 PUSH HL \par
1 loop1 SRL D ;div by 2 = mainloop \par
1 linpoint EQU xpos +2 ;pointer in linebuffer \par
1 linlast EQU linbuf +63 ;end of linebuffer \par
1 linbuf EQU 32512 ;start of linebuffer \par
1 lengte EQU assemble -begin \par
1 left LD A,(xpos) ;adjust cursorpos. \par
1 koud XOR A ;reset pointers \par
1 isn INC DE ;outside quotes now \par
1 isln1 LD (HL),13 \par
1 isln LD A,65 ;calc length of 'tail' of \par
1 isl LD A,L ;test for start of linbuf \par
1 is2 DEC HL \par
1 is1 LD DE,LINLAST ;remove any trailing spaces \par
1 inval POP DE ;else retrieve linbufpntr \par
1 inssp LD HL,altflg ;signal: line changed \par
1 insline CALL volgende ;find next lineaddr. in HL \par
1 insl2 CALL scrdw ;make room on screen \par
1 insl1 XOR A ;prepare to clean botlin \par
1 insfile PUSH HL ;store 'last +1 in linbuf' \par
1 insert LD (HL),A ;insert char \par
1 includs JP 00000 ;to be filled by 'include'!\par
1 inclflag EQU xpos +32 ;flag including \par
1 ifex LD DE,32 ;rasp \par
1 hxz1 RST 16 \par
1 hxz AND 15 \par
1 hulp EQU xpos +5 \par
1 hex1 LD (HL),A ;store \par
1 hex INC DE ;point to char after # \par
1 hdod EQU xpos +70 \par
1 hd0b EQU xpos +60 \par
1 hd00 EQU xpos +59 \par
1 getblmark LD DE,filstrt \par
1 get AND A ;cursor flag \par
1 g5 EX AF,AF' ;save key \par
1 g3 CP 200 ;'>=' \par
1 g2 CP 199 ;'<=' \par
1 g1 CP 198 ;'AND' \par
1 firstofile EQU xpos +40 ;opus \par
1 first PUSH DE ;save linbufpntr \par
1 findtable EQU xpos +73 ;start of find$, poked by \par
1 finds CALL storelin \par
1 findcomp CALL aonly ;test for alpha char \par
1 findadd EQU xpos +14 ;addr. of item last found \par
1 filstrt EQU 32768 ;start of textfile \par
1 filmax EQU xpos +12 ;last useable addr. for text \par
1 filend EQU xpos +10 ;actual end of text \par
1 filelen EQU xpos +42 ;including HC \par
1 ferm DEFM "INCORRECT FILE" \par
1 fc1 XOR (HL) ;cp alpha char \par
1 f7 PUSH HL \par
1 f6 CALL vorige +3 ;retrieve line with match \par
1 f5 POP HL ;retrieve filepointer \par
1 f4 PUSH HL ;end of file reached \par
1 f3 INC HL \par
1 f2 INC HL \par
1 f1 LD DE,findtable ;point to find$ \par
1 extest POP BC ;exit with C or NC \par
1 expandlin LD HL,(curslin) ;use curslin \par
1 ex2 JP begin ;to menu \par
1 ex1 DEC HL \par
1 errm DEFM " ERRORS" \par
1 errcnt EQU xpos +23 ;error counter \par
1 entex CALL prlin ;move line to screen + buffer \par
1 enter CALL storelin ;store current line if nec. \par
1 ent1 LD (curslin),HL ;adjust cursor \par
1 editor XOR A ;point to start of line \par
1 dumpf EQU xpos +20 ;start of ass.code in mem. \par
1 dumpa EQU xpos +18 ;addr. to store ass.code \par
1 drvnr EQU xpos +44 ;also ufia MGT table \par
1 down LD A,(ypos) ;test for bottom of screen \par
1 dok2 CP 32 \par
1 dll SUB 8 \par
1 divloop SRL H \par
1 dellsub PUSH HL ;save addr. of nextlin \par
1 delline LD HL,(curslin) \par
1 dellblok CALL getblmark ;find blockmarkers \par
1 dell3 POP AF ;end of file reached, \par
1 dell2 CALL scrup +2 ;adjust screen \par
1 dell1 CALL dellsub ;delete the line \par
1 d1 LD HL,(scrtop) ;adjust scrtop first \par
1 cursup LD A,(xpos) \par
1 cursor EX AF,AF' ;'print cursor' flag \par
1 curslin EQU xpos +8 ;addr. of line with cursor \par
1 cursex POP AF \par
1 cursdown LD A,(xpos) \par
1 csd LD (curslin),HL \par
1 control SUB 4 ;test shifted numberkeys \par
1 compln LD HL,#0D0D ;make sure line in linbuffer \par
1 comment LD A,E ;test pos in linebuffer \par
1 comm1 CALL vul \par
1 cmesg DEFB 127 \par
1 cls LD HL,16384 \par
1 clin LD H,A \par
1 cl2 LD (HL),0 ;fill with zero \par
1 cl1 PUSH HL \par
1 chartable DEFB 0,0,0,0,0,0,0,0 ;space \par
1 char LD HL,altflg \par
1 caps LD HL,23658 ;toggle capsflag \par
1 calc LD HL,(xpos) ;calc scr.addr. from X,Y-pos \par
1 c1 LD A,D \par
1 bufsize EQU xpos +36 ;- \par
1 blocklen EQU xpos +34 ;opus specific \par
1 blmerr LD BC,berm ;point to block-error-msge \par
1 blkmark CALL insline ;insert new line \par
1 bksp LD HL,altflg \par
1 bk1 CALL left ;'delete' char \par
1 bigline LD DE,(filend) ;new > old \par
1 big EX DE,HL \par
1 berm DEFM "INVALID BLOCK COMMAND" \par
1 begin LD A,(altflg) ; 0 = warmstart, to menu \par
1 axi CALL printmsge ;print msge \par
1 asspoint EQU xpos +16 ;assemble address \par
1 assm DEFM "ASSEMBLY " \par
1 assexit LD HL,posm ;print AT \par
1 assemble EQU $ \par
1 aser DEFM "ABORTED, " \par
1 aonly CP 123 ;on exit: C = invalid \par
1 altflg EQU xpos +4 ;zero if no changes in line \par
1 \viewkind4\uc1\pard\b\f0\fs20 ; * TORNADO Z-80 assembler * EDITOR source 201 R.Koning 2005 \b0 \par
1 \pard\nowidctlpar w3 PUSH DE \lang2057 ;expand line into linebuffer \lang1043 \par
1 \pard\nowidctlpar DEFM " D = Delete block" : DEFB 13 \par
1 \pard\cf1 DEFM " Q = Merge text" : DEFB 13 \cf0 \par
1 \cf1 posm DEFB 22,20,0,20,1,255 ;inverse at 20,0\cf0\par
1 \cf1 merm EQU linbuf +68\par
1 \cf1 menutable DEFB 20,1 ;inverse \par
1 \cf1 g4 CP 195 ;"NOT" \par
1 \cf1 dokey CP 195 ;"NOT" \par
1 \cf1 codm DEFB 22,19,0,20,1 ;inverse at 19,0\cf0\par
1 \cf1 ;SORT SYMBOL TABLE (shell sort)\par
1 \cf1 LD A,6 ;finish the print line \par
1 \cf1 JR NZ,w00\par
1 \cf1 JR NC,nxc \par
1 \cf1 CP "Q" \par
1 \cf1 CP ";" \par
1 \cf1 CP ":" ;second statement coming? \par
1 \cf1 CALL sort \cf0 \par
1 \cf0 xpos EQU merm +16 ;hor. printpos (pixels) \par
1 \cf0 w00 CP "C" \par
1 \cf0 ;BLOCKs \par
1 \b ;------------------------------------------------------------- \b0\par
1 ?---------------------------------------------------------------\par
1 ;try for token now \par
1 ;to menu when 'extended' only \par
1 ;insert space \par
1 ;insert on second lowest \par
1 ;insert blank line at bottom \par
1 ;expand + print to scr \par
1 ;end \par
1 ;compress line inside linebuffer \par
1 ;attention : \b linbuf\b0 and \b chartable\b0 at n * 256 ! \par
1 ;adjust file to accommodate new line \par
1 ;TEST MORE KEYS \par
1 ;PRINT TEXTFILE \par
1 ;DELETE A LINE \par
1 ;---------------------------------------------------------\par
1 ;----------------------------------------------------------------\par
1 ;-------------------------------------------------------------------- \par
1 ;------------------------------------------------------------------- \par
1 ;--------------------------------------------------------------- \par
1 ;------------------------------------------------------------- \par
1 ;----------------------------------------------------------- \par
1 ;--------------------------------------------------------- \par
1 ;----- sub \par
1 ;----- sub \par
1 ;-- FILLERS here, to put CHARTABLE on #7000, 28672 \par
1 ; (\b symbtop\b0 at n * 16) \par
1 \cf1 ORG 25779 \cf0 \par
1 XOR A ;ypos = 0, temporarely \par
1 XOR A ;signal 'click needed' \par
1 XOR A ;cursor points to start of \par
1 XOR A ;'cursor off' flag \par
1 XOR 65 ;"A" and reset Carry!\par
1 XOR 1 ;toggle cursorflag \par
1 XOR (HL) ;move into screen \par
1 SUB H \par
1 SUB E ;line in linbuf \par
1 SUB B \par
1 SUB 8 ;1 line down \par
1 SUB 4 \par
1 SUB 16 ;next label \par
1 SUB 128 ;BC = end-32768 = length \par
1 SUB (HL) ;test chars \par
1 SUB (HL) \par
1 SUB (HL) \par
1 SET 0,(HL) ;signal 'line changed' \par
1 SET 0,(HL) ;line changed \par
1 SET 0,(HL) \par
1 SCF ;signal ERROR \par
1 SBC HL,DE \lang2057 ;cont. if not \lang1043 \par
1 SBC HL,DE ;compare lengths \par
1 SBC HL,DE ;check if still in range \par
1 SBC HL,DE ;calc length of old line \par
1 SBC HL,DE ;calc length of new line \par
1 SBC HL,DE ;calc length of compr. line \par
1 SBC HL,BC ;nw l.pntr \par
1 SBC HL,BC ;calc length of tail \par
1 SBC HL,BC ;calc length of 'tail' \par
1 SBC HL,BC ;against endmarker \par
1 SBC HL,BC ;HL = rightside len \par
1 SBC HL,BC ;BC = addr. of next line \par
1 SBC HL,BC \par
1 RST 16 \lang2057 ;next line \lang1043 \par
1 RST 16 \lang2057 \lang1043 \par
1 RST 16 \cf0 \par
1 RR L \par
1 RR E \par
1 RET Z ;ret if not present \par
1 RET Z ;ret if cursor on last pos. \par
1 RET Z ;ret if cursor on first line \par
1 RET Z ;exit if new = old \par
1 RET Z ;exit if end of line \par
1 RET Z ;exit here \par
1 RET NC ;test alphanum \par
1 RET NC ;test A - z \par
1 RET NC ;ret if no change made \par
1 RET C ;test 0 - 9 \par
1 RET C ;ret if not \par
1 RET C ;RET if no room for line \par
1 RET C \par
1 RET Z \par
1 RET C \par
1 RET ;if end of file \par
1 RET ;exit directly from here \par
1 RET ;RET Z if eof \par
1 RET ; and continue to print this table \par
1 RES 5,(IY+1) ;wait for keypress \par
1 RES 5,(IY+1) ;'no key' \par
1 RES 5,(IY+1) \par
1 PUSH HL \lang2057 ;test for end of block \lang1043 \par
1 PUSH HL ;store msge pointer \par
1 PUSH HL ;store marker positions \par
1 PUSH HL ;store filepntr \par
1 PUSH HL ;store addr. found \par
1 PUSH HL ;store 2nd marker \par
1 PUSH HL ;save filepointer \par
1 PUSH HL ;or use HL on this entrypoint \par
1 PUSH HL ;last char +1 \par
1 PUSH DE ;store scrpos \par
1 PUSH DE ;store pointer \par
1 PUSH DE ;save first marker addr. \par
1 PUSH DE ;do not destroy DE \par
1 PUSH DE \lang2057 \lang1043 \par
1 PUSH BC \par
1 PUSH AF ;store xpos \par
1 PUSH AF ;save ypos \par
1 POP HL \lang2057 ;set RETaddr. \lang1043 \par
1 POP HL ;was DE!\par
1 POP HL ;retrieve filepntr \par
1 POP HL ;retr. last +1 \par
1 POP HL ;retr. filepntr \par
1 POP HL ;restore cursorpositions \par
1 POP HL ;point to '-65520' \par
1 POP HL ;no more match \par
1 POP HL ;first marker \par
1 POP HL ;error exit \par
1 POP HL ;drop retaddr. \par
1 POP HL ;drop RETaddr. \par
1 POP HL ;balance stack \par
1 POP DE \lang2057 ;jp if end of text \lang1043 \par
1 POP DE ;retrieve the 'split' number \par
1 POP DE ;retrieve markers \par
1 POP DE ;addr of next entry in DE \par
1 POP DE ;DE = first marker \par
1 POP DE ;=old length \par
1 POP DE \lang2057 \lang1043 \par
1 POP BC ;drop retaddr. \par
1 POP BC ;drop RETaddr. \par
1 POP BC ;HL = addr. of nextlin \par
1 POP BC ;BC = next line \par
1 POP BC ;BC = length of tail \par
1 OR L \par
1 OR E \par
1 OR A \par
1 OR 64 \par
1 LDIR ;shift tail into position \par
1 LDIR ;move tail \par
1 LDIR ;move line into file \par
1 LDIR ;move 'tail' from nextlin \par
1 LDDR ;move tail \par
1 LDDR ;make room for one chr$ 13 \par
1 LDDR ;make room \par
1 LD L,A ;calc addr. of pattern \par
1 LD L,A \par
1 LD L,0 ;start of scr line \par
1 LD HL,vfilmax \par
1 LD HL,undef \par
1 LD HL,symbtop -16 ;table end +1, minus 1 entry \par
1 LD HL,symbtop \par
1 LD HL,serm ;pnt to message "SYMBOLTABLE" \par
1 LD HL,press \par
1 LD HL,opcotable ;find opcode \par
1 LD HL,opcotable \par
1 LD HL,oksm ;point to "O.K." \par
1 LD HL,menutable ;print menu part 1 \par
1 LD HL,linlast ;end of buffer \par
1 LD HL,linbuf +64 ;clear linebuffer \par
1 LD HL,linbuf ;and in linebuffer \par
1 LD HL,filstrt ;set pointers to start of file\par
1 LD HL,filstrt ;insert default line \par
1 LD HL,filstrt ;find end of text \par
1 LD HL,filstrt ;else print complete text \par
1 LD HL,filstrt \par
1 LD HL,errm ;"errors" \par
1 LD HL,codm ;"code" \par
1 LD HL,cmesg \par
1 LD HL,assm ;"assembly" \par
1 LD HL,aser ;point to "aborted"msge \par
1 LD HL,5000 \par
1 LD HL,50 ;click \par
1 LD HL,22528 ;ATTR \par
1 LD HL,16 ;entry len \par
1 LD HL,127 ;reset find$, (c) + chr$0 \par
1 LD HL,127 ;find$ is default chr$ 127 \par
1 LD HL,1000 ;find = 1000 \par
1 LD HL,(xpos) ;save curspos. screen \par
1 LD HL,(totlen) \par
1 LD HL,(scrtop) ;adjust scrtop line \par
1 LD HL,(linpoint) ;save curspos buffer \par
1 LD HL,(linpoint) ;in buffer \par
1 LD HL,(linpoint) ;cursorpos. in buffer \par
1 LD HL,(linpoint) \par
1 LD HL,(findadd) ;point into file \par
1 LD HL,(filend) ;delete empty lines \par
1 LD HL,(filend) ;adjust fileend \par
1 LD HL,(filend) ;BC =addr. of next line \par
1 LD HL,(dumpa) ;calc. length \par
1 LD HL,(curslin) ;point into file \par
1 LD HL,(curslin) ;find line past bottom of scr.\par
1 LD HL,#B800 ;top left cursor coords \par
1 LD HL,#B800 ;point to topleft pixelpos \par
1 LD HL,#0214 ;repdel=20 , repper=2 \par
1 LD H,B ;point to msge in BC \par
1 LD H,A ;HL points to pattern 1 \par
1 LD H,A ;HL = 8 pixels down \par
1 LD H,(HL) \par
1 LD E,L ;DE = linbuf pointer \par
1 LD E,A ;adjust linbuf pointer \par
1 LD DE,ypos \par
1 LD DE,symbtop -16 ;get top of table \par
1 LD DE,linlast ;move buffercontents \par
1 LD DE,linlast \par
1 LD DE,linbuf -1 \par
1 LD DE,linbuf ;HL =last in linbuf \par
1 LD DE,linbuf \lang2057 \lang1043 \par
1 LD DE,linbuf \par
1 LD DE,filstrt \par
1 LD DE,16385 \par
1 LD DE,1 \par
1 LD DE,(sympo) ;table start \par
1 LD DE,(sympo) ;check if still in range \par
1 LD DE,(sympo) ;add offset \par
1 LD DE,(linpoint) ;pointer in buffer \par
1 LD DE,(dumpf) \par
1 LD DE,(curslin) ;point into file \par
1 LD DE,(curslin) ;HL = old line length now \par
1 LD DE,#F00F ;two cursor-patterns \par
1 LD D,H ;HL = insert pointer \par
1 LD D,E ;choose pattern \par
1 LD C,L ;BC now holds leftside len a16 \par
1 LD C,L ;BC = nextlin \par
1 LD C,L ;BC = next line addr. \par
1 LD C,E \par
1 LD C,A ;temp \par
1 LD C,A ;store pixrow counter \par
1 LD C,A ;save token \par
1 LD C,A ;calc addr of pattern \par
1 LD C,32 ;move 32 bytes on each row \par
1 LD C,32 ;move 32 bytes (1 line) \par
1 LD C,224 ;point to next line \par
1 LD C,224 \par
1 LD BC,warm ;RETaddr. \par
1 LD BC,ferm ;point to file-error-msge \par
1 LD BC,begin \lang2057 \lang1043 \par
1 LD BC,768 \par
1 LD BC,6144 \par
1 LD BC,32512 \par
1 LD BC,21 \par
1 LD BC,15 ;point to numbers, MSB \par
1 LD BC,(sympo) ;print bottomaddr. of S-table \par
1 LD BC,(filend) ;BC = merge addr. \par
1 LD BC,(dumpf) ;store-address \par
1 LD BC,(curslin) ;test cursorposition \par
1 LD BC,#04FF ;calc bufferpos. from scr.pos.\par
1 LD B,H ;print length \par
1 LD B,H ;incl. ENTER \par
1 LD B,H ;DE = curslin \par
1 LD B,H ;BC = nr. of bytes in 'tail' \par
1 LD B,H ;BC = length of block \par
1 LD B,H ;BC = length \par
1 LD B,D ;BC = length of file \par
1 LD B,A ;save briefly, must be space now\par
1 LD B,A ;retrieve ypos \par
1 LD B,A ;BC = addr. of pattern \par
1 LD B,A ;B = tokennr. \par
1 LD B,8 ;8 pixrows \par
1 LD B,6 ;delay \par
1 LD B,4 ;div by 16 \par
1 LD B,24 ;calc 24 lines up \par
1 LD B,24 ;calc 24 lines down \par
1 LD B,16 ;entry len \par
1 LD B,14 ;print 14 chars \par
1 LD A,L \par
1 LD A,H ;bottom pixelrow \par
1 LD A,H \par
1 LD A,E \lang2057 \lang1043 \par
1 LD A,D ;until 0 \par
1 LD A,C ;retrieve token \par
1 LD A,C \par
1 LD A,B\par
1 LD A,B \par
1 LD A,8 ;adjust cursor \par
1 LD A,8 \par
1 LD A,71 ;paper 0, ink 7, bright 1 \par
1 LD A,59 ;insert ';' here \par
1 LD A,44 ;comma \par
1 LD A,35 ;inc hl! \par
1 LD A,35 ; # \par
1 LD A,34 ;comment TAB \par
1 LD A,32 ;spaces \par
1 LD A,32 ;space \par
1 LD A,32 ;change into space \par
1 LD A,3 ;open #3 \par
1 LD A,255 \par
1 LD A,2 ;use screen \par
1 LD A,2 ;open #2 \par
1 LD A,191 \par
1 LD A,184 ;else restore top of screen \par
1 LD A,16 ;next TAB \par
1 LD A,13 \lang2057 ;retrieve 'last line' \lang1043 \par
1 LD A,13 ;newline \par
1 LD A,13 ;maybe one? \par
1 LD A,127 ;error marker \par
1 LD A,127 ;calc tokennr. \par
1 LD A,126 ;=blokmarker \par
1 LD A,126 ; blockmarker = chr$ 126 \par
1 LD A,11 ;TAB if token \par
1 LD A,0 \par
1 LD A,(ypos) ;test for bottomline \par
1 LD A,(ypos) ;test for bottom of screen \par
1 LD A,(ypos) ;one line down \par
1 LD A,(ypos) ;count for 23 lines this way \par
1 LD A,(ypos) ;1 line down \par
1 LD A,(ypos) \par
1 LD A,(xpos) \par
1 LD A,(toggle) ;sort names or numbers \par
1 LD A,(storevar) ;retrieve cursorpos. flag \par
1 LD A,(storevar +1) ;retrieve command \par
1 LD A,(stmt2flg) ;test if ':' was found \par
1 LD A,(findtable) \par
1 LD A,(filmax +1) ;test room \par
1 LD A,(filmax +1) ;new line, test for room \par
1 LD A,(filmax +1) \par
1 LD A,(errcnt) ;test for errors \par
1 LD A,(errcnt) \par
1 LD A,(HL) ;test end of file \par
1 LD A,(HL) ;linebuffer \par
1 LD A,(HL) ;find end of line \par
1 LD A,(HL) ;fetch char from tokentable \par
1 LD A,(DE) ;test end of find$ \par
1 LD A,(DE) ;retrieve char \par
1 LD A,(DE) ;now LSB \par
1 LD A,(DE) ;fetch from linbuf \par
1 LD A,(DE) ;fetch char from linbuf \par
1 LD A,(DE) ;fetch again from linbuf \par
1 LD A,(DE) ;compare first char \par
1 LD A,(DE) ;MSB \par
1 LD A,(DE) ; opcode \par
1 LD A,(DE) \par
1 LD A,(BC) ;shift second pattern \par
1 LD A,(23560) ;get key \par
1 LD A,(23560) \par
1 LD (ypos),A ;restore ypos \par
1 LD (xpos),HL ;in screen \par
1 LD (xpos),A ;temp! \par
1 LD (xpos),A ;restore xpos \par
1 LD (xpos),A ;on screen \par
1 LD (xpos),A ;line on screen \par
1 LD (totlen),HL \par
1 LD (toggle),A ;preset the sort flag\par
1 LD (toggle),A ;prep num sort \par
1 LD (sympo),HL \par
1 LD (storevar),A \par
1 LD (stmt2flg),A ;signal ':' found \par
1 LD (stmt2flg),A ;leave spaces after ':' \par
1 LD (scrtop),HL ;store new top line addr. \par
1 LD (linpoint),HL ;store current addr. in buff \par
1 LD (linpoint),HL ;in linebuffer \par
1 LD (linpoint),HL \par
1 LD (linpoint),A ;also to start of linebuffer \par
1 LD (linlast +1),HL ;ends with ENTER \par
1 LD (findtable),HL ; chr$ 0 = endmarker\par
1 LD (findtable),HL \par
1 LD (findadd),HL ;store \par
1 LD (findadd),HL ;reset filepointer \par
1 LD (findadd),HL \par
1 LD (filmax),HL \par
1 LD (filend),HL ;store end of text \par
1 LD (filend),HL ;adjust pointer \par
1 LD (filend),DE ;adjust pointer \par
1 LD (curslin),HL \lang2057 ;print 64 characters \lang1043 \par
1 LD (curslin),HL ;point to topline \par
1 LD (curslin),HL \par
1 LD (curslin),DE \par
1 LD (HL),A ;insert marker \par
1 LD (HL),A \par
1 LD (HL),32 ;else insert space \par
1 LD (HL),32 \par
1 LD (HL),255 ;insert endmarker \par
1 LD (HL),13 ;insert new line \par
1 LD (HL),13 ;eol +eof \par
1 LD (HL),0 \par
1 LD (DE),A ;8 \par
1 LD (DE),A ;7 \par
1 LD (DE),A ;6 \par
1 LD (DE),A ;5 \par
1 LD (DE),A ;4 \par
1 LD (DE),A ;3 \par
1 LD (DE),A ;2 \par
1 LD (DE),A ;1 move to screen \par
1 LD (DE),A \par
1 LD (23697),A ;Pflag \par
1 LD (23694),A ;MASK-P \par
1 LD (23693),A ;ATTR-P \par
1 LD (23624),A ;border \par
1 LD (23624),A ;BORDERCOL \par
1 LD (23561),HL \par
1 JR wk0 \par
1 JR waitkey ;editor loop \par
1 JR w3 \par
1 JR smt \par
1 JR scrdw1 \par
1 JR rec1 ;to put a space on cursorpos. \par
1 JR printmsge \par
1 JR pl2 \par
1 JR pc1 \par
1 JR nxt ;try next token \par
1 JR nxt ;find end of token \par
1 JR nxch ;else skip them \par
1 JR notok +1 ;treat next char the normal \par
1 JR ls4 ;do not print an adress \par
1 JR ls1 ;loop \par
1 JR loop1 ;mainloop, split again \par
1 JR is1 +3 \par
1 JR hex ;test next char for hex \par
1 JR f7 ;print scr from addr in HL \par
1 JR f7 ;cls,print scr from addr in HL\par
1 JR f6 \par
1 JR f1 ;cont searching in file \par
1 JR extest \par
1 JR clin ;clear 1 line \par
1 JR char \par
1 JR Z,wa ;until new key pressed \par
1 JR Z,w2 ;jp if found \par
1 JR Z,testsymb ;sort names \par
1 JR Z,t2 -1 ;jp if end of table \par
1 JR Z,t1 \par
1 JR Z,recsp ;jp if 'delete space' \par
1 JR Z,more ;cont. if matching \par
1 JR Z,ls6 \par
1 JR Z,isn ;insert chars \par
1 JR Z,isln1 ;insert line into file \par
1 JR Z,isln1 ;exit, inserting line \par
1 JR Z,is1 ;jp if no 'tail' \par
1 JR Z,insl1 ;jp if second lowest line \par
1 JR Z,hex \par
1 JR Z,g5 \cf0 \par
1 JR Z,first ;jp if match \par
1 JR Z,f7 ;jp if start of file reached \par
1 JR Z,f5 ;exit if end of find$ \par
1 JR Z,f4 +1 ;jp if so \par
1 JR Z,f4 ;jp if so \par
1 JR Z,f3 ;loop if matching \par
1 JR Z,ex1 \par
1 JR Z,enter ;13 \par
1 JR Z,editor ;exit if end of file \par
1 JR Z,dellblok ;delete old block \par
1 JR Z,dell3 ;exit if last line in file \par
1 JR Z,comment \par
1 JR Z,comm1 -2 ;if ';' is first char \par
1 JR Z,comm1 ;jp if (c) \par
1 JR Z,caps ;6 \par
1 JR Z,c1 \par
1 JR Z,bksp ;backspace \par
1 JR Z,axi ;jp if no errors \par
1 JR NZ,wk0 -1 ;ignore other extended keys \par
1 JR NZ,w5 ;cont. if not PRINT TEXT \par
1 JR NZ,w4 \lang2057 \lang1043 \par
1 JR NZ,w2 +1 \par
1 JR NZ,w1 \par
1 JR NZ,w0 \par
1 JR NZ,volger \par
1 JR NZ,valend ;jp if so \par
1 JR NZ,try ;find next token if so \par
1 JR NZ,trtok \par
1 JR NZ,slo ;next round \par
1 JR NZ,scrup2 ;8 pixrows to move \par
1 JR NZ,scrup1 ;until init. A = 0 \par
1 JR NZ,scrdw2 \par
1 JR NZ,quote \par
1 JR NZ,quo \par
1 JR NZ,qo \par
1 JR NZ,pl1 \par
1 JR NZ,noquote ;test more \par
1 JR NZ,mb3 \par
1 JR NZ,mb2 \par
1 JR NZ,mb1 \par
1 JR NZ,lup \par
1 JR NZ,ls3 ;jp if not \par
1 JR NZ,isln ;jp if not \par
1 JR NZ,invaL ;char of token, jp if not \par
1 JR NZ,insert ;insert spaces after ':' \par
1 JR NZ,get ;jp if key pressed \par
1 JR NZ,g4 \par
1 JR NZ,g3 \par
1 JR NZ,g2 \par
1 JR NZ,g1 \par
1 JR NZ,f2 ;next if no match \par
1 JR NZ,extest ;stay only in loop when equal \par
1 JR NZ,extest \par
1 JR NZ,ent1 ;jp if not end of file \par
1 JR NZ,dok2 \par
1 JR NZ,dll ;cont. until botlin +1 found \par
1 JR NZ,dell2 ;jp if scroll needed \par
1 JR NZ,dell1 ;jp if not end of text \par
1 JR NZ,csd ;jp if there is a next line \par
1 JR NZ,comm1 \par
1 JR NZ,cl2 \par
1 JR NZ,blmerr ;error if not found \par
1 JR NZ,blkmark ;graphics, insert blockmarker \par
1 JR NZ,bk1 +3 ;jp if <> space \par
1 JR NZ,$+3 \par
1 JR NC,wm1 ;until screen full \par
1 JR NC,vor1 \par
1 JR NC,udo1 \par
1 JR NC,token \par
1 JR NC,t2 -1 ;more chars if not \par
1 JR NC,notok ;exit if too far in tokentable\par
1 JR NC,next ;skip swap also when zero \par
1 JR NC,lsend ;jp if ready \par
1 JR NC,ls5 \par
1 JR NC,loop3 \par
1 JR NC,loop2 \par
1 JR NC,isn ;jp if so \par
1 JR NC,is2 \par
1 JR NC,insl2 ;jp if not on bottom \par
1 JR NC,fc1 ;jp if so \par
1 JR NC,comm1 -2 \par
1 JR NC,char ;jp with normal chars \par
1 JR NC,big ;cont. if room available \par
1 JR C,w3 \lang2057 ;delete blockmarkers \lang1043 \par
1 JR C,vor2 \par
1 JR C,valtok ;jp if end of opcode \par
1 JR C,pc1 \par
1 JR C,nxch +1 ;exit if not \par
1 JR C,minlin ;jp if new < old \par
1 JR C,mb0 ;jp if cursor past block \par
1 JR C,hxz1 \par
1 JR C,hex1 \par
1 JR C,ex2 \par
1 JR C,d1 ;jp if scroll needed \par
1 JR C,cursex ;jp if no room for line \par
1 JR C,blmerr ;error if no room \par
1 JR C,bk1 ;jp if not last char on line \par
1 JR C,$+3 ;only if pos. < 11 \par
1 JP wm1 -3 ;print screen (in WARM) \par
1 JP wait ;to wait-key \par
1 JP wait \par
1 JP udolin ;print new line \par
1 JP movelin ;copy to screen \par
1 JP mb4 \lang2057 \lang1043 \par
1 JP entex ;move line to scr +buf \par
1 JP entex ;move line to scr + buf \par
1 JP begin ;to menu \par
1 JP assemble ;assemble \par
1 JP Z,warm ;to existing text \par
1 JP Z,warm ; 2 = coming from 'find', to \par
1 JP Z,symv ;view symbols \par
1 JP Z,symt ;print symbols \par
1 JP Z,right ;9 \par
1 JP Z,pageup ;5 \par
1 JP Z,pagedown ;4 \par
1 JP Z,movblok ;move block \par
1 JP Z,movblok ;copy block \par
1 JP Z,left ;8 cursor \par
1 JP Z,isln1 ;ready to insert into file \par
1 JP Z,isln ;jp if comment \par
1 JP Z,isln ;execute 'remark' without TAB \par
1 JP Z,isl ;remark \par
1 JP Z,finds ;7 \par
1 JP Z,dellblok ;delete block \par
1 JP Z,cursup ;11 \par
1 JP Z,cursex ;jp if on first line \par
1 JP Z,cursdown ;10 \par
1 JP Z,begin ;ready if so \par
1 JP Z,begin ; first line \par
1 JP Z,begin \lang2057 \lang1043 \par
1 JP NZ,wait ;exit if errors \par
1 JP NZ,wait \par
1 JP NZ,printerr ;jp if no endmarker found \par
1 JP NZ,nxch ;compress more if no quote \par
1 JP NZ,blmerr ;error if not found \par
1 JP C,udolin ;jp if still on screen \par
1 JP C,ifex ;jp if no room \par
1 JP C,ifex \par
1 JP C,cursex ;jp if no room \par
1 JP C,blmerr -2 ;error if inside block \par
1 JP 7088 ;basic \par
1 INC L ;next pattern1 \par
1 INC HL ;next char in tokentable \par
1 INC HL ;move trailing chars into \par
1 INC HL ;insert ENTER \par
1 INC HL \par
1 INC H \par
1 INC E \lang2057 ;test 64 \lang1043 \par
1 INC E ;insert one space after token \par
1 INC D ;next pixrow, 1 down \par
1 INC C ;next pattern2 \par
1 INC BC ;take endmarker into account \par
1 INC BC ;nr of bytes to move \par
1 INC BC ;BC = length \par
1 INC B \par
1 INC A ;test for 255 = end of file \par
1 INC A ;test for 255 \par
1 INC A ;test end of file (255) \par
1 INC A ;count for 8 pixelrows \par
1 INC A ;(255) \par
1 INC (HL) \par
1 HALT ;delay \par
1 EX DE,HL ;use 1th marker \par
1 EX DE,HL ;on last line simply insert \par
1 EX DE,HL ;get startmarker \par
1 EX DE,HL ;de = nr of entries \par
1 EX DE,HL ;cursor in deleted lines? \par
1 EX DE,HL ;DE points to linebuffer \par
1 EX DE,HL ;DE = end of old line \par
1 EX AF,AF' ;save flag \par
1 EX AF,AF' ;get key \par
1 EX (SP),HL ;store old length \par
1 EX (SP),HL ;old r.pntr in HL \par
1 EX (SP),HL ;HL = length \par
1 EX (SP),HL ;HL = addr. of next line \par
1 EX (SP),HL \par
1 DUMP 0 \par
1 DJNZ wk1 \par
1 DJNZ t1 ;exit with HL pointing \par
1 DJNZ swl \par
1 DJNZ pu \par
1 DJNZ pd \par
1 DJNZ nxtchar \par
1 DJNZ ls2 ;loop \par
1 DJNZ divloop \par
1 DJNZ cl1 ;next pixrow \par
1 DEFM "XO" :DEFB "R" +128 \par
1 DEFM "SU" :DEFB "B" +128 \par
1 DEFM "SR" :DEFB "L" +128 \par
1 DEFM "SR" :DEFB "A" +128 \par
1 DEFM "SL" :DEFB "A" +128 \par
1 DEFM "SE" :DEFB "T" +128 \par
1 DEFM "SC" :DEFB "F" +128 ; 220 \par
1 DEFM "SB" :DEFB "C" +128 \par
1 DEFM "S" :DEFB "P" +128 \par
1 DEFM "RS" :DEFB "T" +128 \par
1 DEFM "RRC":DEFB "A" +128 \par
1 DEFM "RR" :DEFB "D" +128 \par
1 DEFM "RR" :DEFB "C" +128 \par
1 DEFM "RR" :DEFB "A" +128 \par
1 DEFM "RLC":DEFB "A" +128 \par
1 DEFM "RL" :DEFB "D" +128 \par
1 DEFM "RL" :DEFB "C" +128 ; 210 \par
1 DEFM "RL" :DEFB "A" +128 \par
1 DEFM "RET":DEFB "N" +128 \par
1 DEFM "RET":DEFB "I" +128 \par
1 DEFM "RE" :DEFB "T" +128 \par
1 DEFM "RE" :DEFB "S" +128 \par
1 DEFM "R" :DEFB "R" +128 \par
1 DEFM "R" :DEFB "L" +128 \par
1 DEFM "Press..." \par
1 DEFM "PUS":DEFB "H" +128 \par
1 DEFM "PO" :DEFB "P" +128 \par
1 DEFM "P" :DEFB "O" +128 ; 200 \par
1 DEFM "P" :DEFB "E" +128 \par
1 DEFM "OUT":DEFB "I" +128 \par
1 DEFM "OUT":DEFB "D" +128 \par
1 DEFM "OU" :DEFB "T" +128 \par
1 DEFM "OTI":DEFB "R" +128 \par
1 DEFM "OTD":DEFB "R" +128 \par
1 DEFM "OR" :DEFB "G" +128 \par
1 DEFM "O" :DEFB "R" +128 \par
1 DEFM "NO" :DEFB "P" +128 \par
1 DEFM "NE" :DEFB "G" +128 \par
1 DEFM "N" :DEFB "Z" +128 ; 190 \par
1 DEFM "N" :DEFB "V" +128 \par
1 DEFM "N" :DEFB "C" +128 \par
1 DEFM "Merge: " \par
1 DEFM "LDI":DEFB "R" +128 \par
1 DEFM "LDD":DEFB "R" +128 \par
1 DEFM "LD" :DEFB "I" +128 \par
1 DEFM "LD" :DEFB "D" +128 \par
1 DEFM "L" :DEFB "D" +128 ; 180 \par
1 DEFM "J" :DEFB "R" +128 \par
1 DEFM "J" :DEFB "P" +128 \par
1 DEFM "INI":DEFB "R" +128 \par
1 DEFM "IND":DEFB "R" +128 \par
1 DEFM "INCLUD" :DEFB 197 ; 170 \par
1 DEFM "IN" :DEFB "I" +128 \par
1 DEFM "IN" :DEFB "D" +128 \par
1 DEFM "IN" :DEFB "C" +128 \par
1 DEFM "I" :DEFB "Y" +128 \par
1 DEFM "I" :DEFB "X" +128 \par
1 DEFM "I" :DEFB "N" +128 \par
1 DEFM "I" :DEFB "M" +128 \par
1 DEFM "HAL":DEFB "T" +128 \par
1 DEFM "H" :DEFB "L" +128 \par
1 DEFM "File : 32768," ; 15th \par
1 DEFM "EX" :DEFB "X" +128 \par
1 DEFM "ERRO" :DEFB128 +82 \par
1 DEFM "EQ" :DEFB "U" +128 ; 160 \par
1 DEFM "EN" :DEFB "D" +128 \par
1 DEFM "E" :DEFB "X" +128 \par
1 DEFM "E" :DEFB "I" +128 \par
1 DEFM "DUM":DEFB "P" +128 \par
1 DEFM "DJN":DEFB "Z" +128 \par
1 DEFM "DEF":DEFB "W" +128 \par
1 DEFM "DEF":DEFB "S" +128 \par
1 DEFM "DEF":DEFB "M" +128 \par
1 DEFM "DEF":DEFB "B" +128 ;150 \par
1 DEFM "DE" :DEFB "C" +128 \par
1 DEFM "DA" :DEFB "A" +128 \par
1 DEFM "D" :DEFB "I" +128 \par
1 DEFM "D" :DEFB "E" +128 \par
1 DEFM "CPI":DEFB "R" +128 \par
1 DEFM "CPD":DEFB "R" +128 \par
1 DEFM "CP" :DEFB "L" +128 \par
1 DEFM "CP" :DEFB "I" +128 \par
1 DEFM "CP" :DEFB "D" +128 \par
1 DEFM "CODE AT: " \par
1 DEFM "CC" :DEFB "F" +128 \par
1 DEFM "CAL":DEFB "L" +128 \par
1 DEFM "C" :DEFB "P" +128 ;140 \par
1 DEFM "BI" :DEFB "T" +128 \par
1 DEFM "B" :DEFB "C" +128 \par
1 DEFM "AN" :DEFB "D" +128 \par
1 DEFM "AD" :DEFB "D" +128 \par
1 DEFM "AD" :DEFB "C" +128 \par
1 DEFM "* TORNADO Z-80 assembler HC2k *" \par
1 DEFM " - 65520" \par
1 DEFM " * TORNADO *" \par
1 DEFM " V = View symbols" : DEFB 13 \par
1 DEFM " T = Print symbols": DEFB 13 \par
1 DEFM " S = Save text" : DEFB 13 \par
1 DEFM " P = Print text" : DEFB 13 \par
1 DEFM " O = To editor" : DEFB 13 \par
1 DEFM " N = New text" : DEFB 13 \par
1 DEFM " M = Move block" : DEFB 13 \par
1 DEFM " L = Load text" : DEFB 13 \par
1 DEFM " F = Find text" : DEFB 13 \par
1 DEFM " C = Copy block" : DEFB 13 \par
1 DEFM " B = TO BASIC" \par
1 DEFM " A = Assemble" : DEFB 13 \par
1 DEFB 6 \par
1 DEFB 255,13 \par
1 DEFB 255 ;endmarker \par
1 DEFB 20,0,13,13 \cf0 \par
1 DEFB 192,96,48,80,80,48,96,192 \par
1 DEFB 13,13,255 \par
1 DEFB 13,13 \par
1 DEFB 0,96,80,96,80,80,96,0 ;B \par
1 DEFB 0,96,80,80,96,96,80,0 ;R \par
1 DEFB 0,96,80,80,96,64,64,0 ;P \par
1 DEFB 0,96,80,80,80,80,96,0 ;D \par
1 DEFB 0,96,80,80,80,80,80,0 ;N \par
1 DEFB 0,96,32,16,32,32,96,0 \par
1 DEFB 0,96,16,32,64,0,64,0 ;? \par
1 DEFB 0,96,16,32,16,16,96,0 ;3 \par
1 DEFB 0,80,96,96,96,80,80,0 ;K \par
1 DEFB 0,80,80,80,80,80,32,0 ;U \par
1 DEFB 0,80,80,80,80,32,32,0 ;V \par
1 DEFB 0,80,80,80,80,112,32,0 ;W \par
1 DEFB 0,80,80,32,32,80,80,0 ;X \par
1 DEFB 0,80,80,32,32,32,32,0 ;Y \par
1 DEFB 0,80,80,112,80,80,80,0 ;H \par
1 DEFB 0,80,80,0,0,0,0,0 \par
1 DEFB 0,80,112,80,80,80,80,0 ;M \par
1 DEFB 0,64,96,80,80,80,96,0 ;b \par
1 DEFB 0,64,96,80,80,80,80,0 ;h \par
1 DEFB 0,64,80,96,96,80,80,0 ;k \par
1 DEFB 0,64,80,32,64,16,16,0 \par
1 DEFB 0,64,64,64,64,64,48,0 ;l \par
1 DEFB 0,64,64,64,64,64,112,0 ;L \par
1 DEFB 0,64,32,32,32,32,64,0 \par
1 DEFB 0,48,64,96,64,64,64,0 ;f \par
1 DEFB 0,48,64,96,64,64,112,0 \par
1 DEFB 0,48,64,32,16,16,96,0 ;S \par
1 DEFB 0,48,32,64,32,32,48,0 \par
1 DEFB 0,32,96,32,32,32,112,0 ;1 \par
1 DEFB 0,32,80,80,80,80,32,0 ;O \par
1 DEFB 0,32,80,80,80,112,48,0 ;Q \par
1 DEFB 0,32,80,80,48,16,32,0 ;9 \par
1 DEFB 0,32,80,80,112,80,80,0 ;A \par
1 DEFB 0,32,80,64,64,80,32,0 ;C \par
1 DEFB 0,32,80,64,112,80,32,0 ;G \par
1 DEFB 0,32,80,32,80,80,32,0 ;8 \par
1 DEFB 0,32,80,16,32,64,112,0 ;2 \par
1 DEFB 0,32,80,112,112,80,32,0 ;0 \par
1 DEFB 0,32,80,112,112,64,32,0 ;@ \par
1 DEFB 0,32,64,96,80,80,32,0 ;6 \par
1 DEFB 0,32,64,64,64,64,32,0 \par
1 DEFB 0,32,64,0,0,0,0,0 \par
1 DEFB 0,32,32,32,32,32,32,0 \par
1 DEFB 0,32,32,32,32,0,32,0 \par
1 DEFB 0,32,112,96,112,48,112,32 \par
1 DEFB 0,32,112,32,32,32,32,0 \par
1 DEFB 0,32,112,32,32,32,16,0 ;t \par
1 DEFB 0,32,0,96,32,32,112,0 ;i \par
1 DEFB 0,16,48,80,80,80,48,0 ;d \par
1 DEFB 0,16,32,16,32,64,48,0 \par
1 DEFB 0,16,16,48,80,112,16,0 ;4 \par
1 DEFB 0,16,16,16,80,80,32,0 ;J \par
1 DEFB 0,16,0,16,16,16,80,32 ;j \par
1 DEFB 0,112,64,96,64,64,64,0 ;F \par
1 DEFB 0,112,64,96,64,64,112,0 ;E \par
1 DEFB 0,112,64,96,16,80,32,0 ;5 \par
1 DEFB 0,112,64,64,64,64,112,0 \par
1 DEFB 0,112,32,32,32,32,32,0 ;T \par
1 DEFB 0,112,32,32,32,32,112,0 ;I \par
1 DEFB 0,112,16,32,64,64,112,0 ;Z \par
1 DEFB 0,112,16,16,32,64,64,0 ;7 \par
1 DEFB 0,112,16,16,16,16,112,0 \par
1 DEFB 0,0,96,80,80,96,64,64 ;p \par
1 DEFB 0,0,96,80,80,80,80,0 ;n \par
1 DEFB 0,0,80,80,80,96,32,0 ;v \par
1 DEFB 0,0,80,80,80,80,48,0 ;u \par
1 DEFB 0,0,80,80,80,48,16,32 ;y \par
1 DEFB 0,0,80,80,80,112,32,0 ;w \par
1 DEFB 0,0,80,32,32,32,80,0 ;x \par
1 DEFB 0,0,80,32,112,32,80,0 \par
1 DEFB 0,0,80,112,80,80,80,0 ;m \par
1 DEFB 0,0,80,112,80,112,80,0 \par
1 DEFB 0,0,64,32,16,32,64,0 ;> \par
1 DEFB 0,0,48,80,80,48,16,16 ;q \par
1 DEFB 0,0,48,80,80,112,16,96 ;g \par
1 DEFB 0,0,48,64,64,64,64,0 ;r \par
1 DEFB 0,0,48,64,64,64,48,0 ;c \par
1 DEFB 0,0,48,64,32,16,96,0 ;s \par
1 DEFB 0,0,32,80,80,80,32,0 ;o \par
1 DEFB 0,0,32,80,112,64,48,0 ;e \par
1 DEFB 0,0,32,32,112,32,32,0 \par
1 DEFB 0,0,32,16,48,80,112,0 ;a \par
1 DEFB 0,0,16,32,64,32,16,0 ;< \par
1 DEFB 0,0,112,16,32,64,112,0 ;z \par
1 DEFB 0,0,0,64,32,16,0,0 \par
1 DEFB 0,0,0,32,0,0,32,64 ;; \par
1 DEFB 0,0,0,32,0,0,32,0 ;: \par
1 DEFB 0,0,0,16,32,64,0,0 \par
1 DEFB 0,0,0,112,0,112,0,0 ;= \par
1 DEFB 0,0,0,0,112,0,0,0 \par
1 DEFB 0,0,0,0,0,96,96,0 \par
1 DEFB 0,0,0,0,0,32,32,64 \par
1 DEFB 0,0,0,0,0,0,0,240 \par
1 DEFB "Z" +128 ; 229 \par
1 DEFB "V" +128 \par
1 DEFB "R" +128 \par
1 DEFB "P" +128 \par
1 DEFB "M" +128 \par
1 DEFB "L" +128 \par
1 DEFB "I" +128 \par
1 DEFB "H" +128 \par
1 DEFB "E" +128 \par
1 DEFB "D" +128 \par
1 DEFB "C" +128 \par
1 DEFB "B" +128 \par
1 DEFB "A" +128 ;128 \par
1 DEFB "A" :DEFB "F" :DEFB 39 +128 ;AF' \par
1 DEFB "A" :DEFB "F" +128 \par
1 DEC HL ;if any at end of file \par
1 DEC DE ;to curslin \par
1 DEC DE ;prepare for loop \par
1 DEC DE ;cont if equal \par
1 DEC DE ;adjust linbufpntr \par
1 DEC DE ;adjust end of file \par
1 DEC DE ;adjust cursoraddr. if nec. \par
1 DEC DE ;DE = end of text \par
1 DEC DE ; last line \par
1 DEC D ;adjust high byte when needed \par
1 DEC (HL) \par
1 CPIR ;find \par
1 CPIR ;cont. search \par
1 CPIR \par
1 CP E ;if possible \par
1 CP E \par
1 CP 95 \par
1 CP 91 \par
1 CP 8 \par
1 CP 64 ;test for linbuf full \par
1 CP 63 \par
1 CP 58 \par
1 CP 48 \par
1 CP 43 ;test 'INCLUDE' \par
1 CP 34 ;test for second quote \par
1 CP 34 ;search for second quote \par
1 CP 34 ;quote \par
1 CP 34 ;no tokenizing inside quotes \par
1 CP 33 ;test space e.o. \par
1 CP 32 ;skip spaces \par
1 CP 32 \par
1 CP 3 ;was it printer \par
1 CP 255 \par
1 CP 2 ; 1 = coldstart, default line \par
1 CP 199 ;test command <= \par
1 CP 197 ;'OR' \par
1 CP 185 ;test for top of screen \par
1 CP 14 ;test enter \par
1 CP 13 ;until end of line \par
1 CP 13 ;if end of line \par
1 CP (HL) ;test other char \par
1 CP (HL) \par
1 CP "Z" +1 ;convert chars to caps \par
1 CP "V" \par
1 CP "S" \par
1 CP "P" \par
1 CP "N" \par
1 CP "L" \par
1 CP "F" \par
1 CP "D" \par
1 CP "B" \par
1 CP "%" ;binair \par
1 CP "#" ;hex \par
1 CALL vorige +3 ;find start of block \par
1 CALL vorige \par
1 CALL volger ;result in HL \par
1 CALL volger ;make HL point to start of \par
1 CALL volger ;get start of next line \par
1 CALL volger ;find end of line \par
1 CALL volger ;find end of block \par
1 CALL volgende ;next line in file \par
1 CALL volgende ;find start of next line \par
1 CALL volgende \lang2057 \lang1043 \par
1 CALL testa ;test last char for alphanum \par
1 CALL testa ;test for alphanumeric \par
1 CALL testa ;alphanum (!) \par
1 CALL test ;compare two entries \par
1 CALL swap ;also exchanges DE and HL! \par
1 CALL storelin ;store current line if nec. \par
1 CALL scrup ;scroll 1 line up \par
1 CALL scrdw ;scroll down \par
1 CALL prmenu \par
1 CALL prlin ;and reprint \par
1 CALL prlin \par
1 CALL printmsge ;print 'file + merge' msge \par
1 CALL movelin ;store line + reprint \par
1 CALL movelin ;copy to screen \par
1 CALL movelin ;and to scr. \par
1 CALL mkroom ;make room for block \par
1 CALL mb5 ;delete second marker at HL \par
1 CALL koud ;prepare for new text \par
1 CALL inssp ;insert space \par
1 CALL inssp ;delete space \par
1 CALL insline \par
1 CALL insfile ;make room or reclaim in file \par
1 CALL hxz \par
1 CALL getblmark ;test for 2 blockmarkers \par
1 CALL findcomp ;compare char \par
1 CALL findcomp \par
1 CALL expandlin +3 ;move this line into linbuf \par
1 CALL expandlin \lang2057 \lang1043 \par
1 CALL expandlin \par
1 CALL entex ;copy also to linebuffer \par
1 CALL down ;on screen \par
1 CALL down ;move cursor down or screen up\par
1 CALL dellsub ;delete block \par
1 CALL delline \par
1 CALL cursdown ;move cursor \par
1 CALL cursdown \par
1 CALL compln ;else compress + store \par
1 CALL cls \par
1 CALL clin ;cls botlin \par
1 CALL calc +3 ;calc this rowaddr. \par
1 CALL calc +3 ;calc scraddr. from A and B \par
1 CALL calc +3 ;calc 1 line down addr. \par
1 CALL calc +3 \par
1 CALL calc ;calc screenpos \par
1 CALL bigline ;make room \par
1 CALL Z,vorige +3 ;prev. line if (c) =error \par
1 CALL Z,clin ;if so, clear botlin \par
1 CALL NZ,koud \par
1 CALL NZ,dokey ;call if valid key \par
1 CALL NZ,cursor ;unprint cursor if 'on' \par
1 CALL 5633 ;open # \par
1 CALL 3435 ;do cls \par
1 CALL 11563 ;print number of errors \par
1 CALL 11563 ;print length of text \par
1 CALL 11563 ;print decimal in BC \par
1 BIT 7,C ;test 'undefined' \par
1 BIT 7,A \par
1 BIT 7,(HL) ;test for 1-char token \par
1 AND A \par
1 AND A ;test for botlin \par
1 AND A ;now DE= new fileend, HL = old\par
1 AND A ;NC = no error \par
1 AND A ; text \par
1 AND A \lang2057 \lang1043 \par
1 AND 7 ;counter in lower bits \par
1 AND 7 \par
1 AND 56 \par
1 AND 4 \par
1 AND 31 ;test for 64 chars (4 pix) \par
1 AND 31 ;32 bytes \par
1 AND 24 \par
1 AND 223 ;use CAPS \par
1 AND 223 ;take CAPS into account \par
1 AND 223 \par
1 AND 191 \lang2057 ;finish with ENTER \lang1043 \par
1 AND 127 ;no more match, test for last \par
1 AND 127 ;move chars into linbuf \par
1 ADD HL,HL ;x 16 (len of entry) \par
1 ADD HL,HL ;save = 4000 \par
1 ADD HL,HL ;merge = 8000 \par
1 ADD HL,HL ;load = 2000 \par
1 ADD HL,DE ;undo the SBC \par
1 ADD HL,DE ;test for maxfile \par
1 ADD HL,DE ;restore HL \par
1 ADD HL,DE ;point to next entry \par
1 ADD HL,DE ;new r.pntr \par
1 ADD HL,DE \par
1 ADD HL,BC ;point to next line \par
1 ADD HL,BC ;find next rowaddr \par
1 ADD HL,BC ;add 'room' if necessary \par
1 ADD A,B \par
1 ADD A,A ;test end of token \par
1 ADD A,48 \par
1 ADD A,4 \par
1 ADD A,(HL) ;add first pattern \par
1 ;move cursor and ret \par
1 ;len=33 BASIC \par
1 ;delete line now \par
1 ; to Bth token \par
1 ; = not found\par
1 ; way \par
1 \par