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