- ;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 
- ;@                                                                            @ 
- ;@                               N o t e p a d                                @ 
- ;@                                                                            @ 
- ;@             (c) 2012-2014 by Prodatron / SymbiosiS (JЎrn Mika)             @ 
- ;@                                                                            @ 
- ;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 
-   
- ;Todo 
- ;- find nach doc-ende von vorne anfangen bis curpos 
- ;- commands 29-31 focus setzen! 
-   
-   
- ;--- PROGRAM-ROUTINES --------------------------------------------------------- 
- ;### PRGKEY -> Check key 
- ;### PRGINF -> show info-box 
- ;### PRGEND -> quit application 
- ;### PRGPAR -> Search for command line parameter (textfile) 
-   
- ;--- SUB-ROUTINES ------------------------------------------------------------- 
- ;### DIACNC -> Cancel dialogue 
- ;### MSGGET -> check for message for application 
- ;### CLCDEZ -> Converts byte into 2 decimal digits 
- ;### CLCNUM -> Converts 16bit number into ASCII string (terminated by 0) 
- ;### CLCR16 -> Converts string into 16bit number 
-   
- ;--- CONFIG-ROUTINES ---------------------------------------------------------- 
- ;### CFGGET -> Generates config path 
- ;### CFGLOD -> Loads config 
- ;### CFGINI -> Initialize config 
- ;### CFGFNT -> Loads font 
- ;### CFGSAV -> Save config 
- ;### CFGOPN -> Open config-dialogue 
- ;### CFGCOL -> Updates colour preview 
- ;### CFGOKY -> Close config-dialogue and save config 
- ;### CFGWRP -> Switch between "wrap at window border" and "no wrap" 
- ;### CFGBAR -> Switches the status bar on/off 
-   
- ;--- FILE-ROUTINES ------------------------------------------------------------ 
- ;### FILMOD -> Ask for file-saving, if text has been modified 
- ;### FILNEW -> New file 
- ;### FILOPN -> Open file 
- ;### FILSAS -> Save file as 
- ;### FILSAV -> Save file 
- ;### FILLOD -> load selected textfile 
- ;### FILSTO -> save actual textfile 
- ;### FILTIT -> Refreshes window title with filename 
-   
- ;--- EDIT-ROUTINES ------------------------------------------------------------ 
- ;### EDTCHG -> Editor changed 
- ;### EDTCUT -> Edit Cut 
- ;### EDTCOP -> Edit Copy 
- ;### EDTPAS -> Edit Paste 
- ;### EDTSAL -> Edit Select All 
- ;### EDTDEL -> Edit Delete 
- ;### EDTGOT -> Edit Goto 
- ;### EDTTIM -> Edit Date/Time 
-   
- ;--- FIND- AND REPLACE-ROUTINES ----------------------------------------------- 
- ;### FNDFND -> Opens Find-Dialogue 
- ;### FNDREP -> Opens Replace-Dialogue 
- ;### FNDFOK -> Start Find 
- ;### FNDROK -> Start Replace 
- ;### FNDRDR -> Replace-Dialogue -> Replace 
- ;### FNDRDA -> Replace-Dialogue -> Replace All 
- ;### FNDRAL -> Start Replace all 
- ;### FNDFNX -> Find next 
- ;### FNDRPL -> Replaces text 
- ;### FNDSEA -> Searches for text 
- ;### FNDCAS -> Converts char into lcase, if case-flag is not set 
- ;### FNDALN -> Checks, if word only + char is alphanumeric 
- ;### FNDPLF -> Converts ^P into 13+10 
- ;### FNDLFP -> Converts 13+10 into ^P 
- ;### FNDGOT -> Goto 
-   
- ;--- DOCUMENT-ROUTINES -------------------------------------------------------- 
- ;### DOCINI -> initialise loaded document 
- ;### DOCNEW -> clears and initialise document 
- ;### DOCRFS -> refresh document display 
-   
-   
-   
- ;============================================================================== 
- ;### CODE AREA ################################################################ 
- ;============================================================================== 
-   
- ;### PRGPRZ -> Application process 
- prgwin      db 0    ;main     window ID 
- diawin      db 0    ;dialogue window ID 
- windatsup   equ 51 
-   
- prgprz  call prgpar 
-         call cfglod 
-         call cfgini 
-         call SySystem_HLPINI 
-   
-         ld a,(prgbnknum) 
-         ld de,prgwindat 
-         call SyDesktop_WINOPN 
-         jp c,prgend             ;memory full -> quit process 
-         ld (prgwin),a           ;window has been opened -> store ID 
-   
-         ld a,(prgparf) 
-         or a 
-         call nz,fillod 
-         call edtchg1 
-   
- prgprz1 call msgget             ;*** check for messages 
-         jr c,prgprz2 
-         jr prgprz1 
- prgprz0 rst #30 
-         call msgget0 
-         jr c,prgprz2 
-         call edtchg0 
-         jr prgprz1 
- prgprz2 cp MSR_DSK_WCLICK       ;* window has been clicked? 
-         jr nz,prgprz0 
-         ld a,(diawin) 
-         cp (iy+1) 
-         ld a,(iy+2) 
-         jr nz,prgprz3 
-         cp DSK_ACT_CLOSE        ;* setup-close clicked 
-         jp z,diacnc 
- prgprz3 cp DSK_ACT_CLOSE        ;* main-close clicked 
-         jr z,prgend0 
-         cp DSK_ACT_MENU         ;* menu has been clicked 
-         jr z,prgprz4 
-         cp DSK_ACT_KEY          ;* key has been clicked 
-         jr z,prgkey 
-         cp DSK_ACT_CONTENT      ;* content clicked 
-         jr nz,prgprz0 
- prgprz4 ld l,(iy+8) 
-         ld h,(iy+9) 
-         ld a,l 
-         or h 
-         jr z,prgprz0 
-         ld a,(iy+3)             ;A=click type (0/1/2=mouse left/right/double, 7=keyboard) 
-         jp (hl) 
-   
- ;### PRGKEY -> Check key 
- prgkeya equ 8 
- prgkeyt db "N"-64:dw filnew ;CTRL+N = New 
-         db "O"-64:dw filopn ;CTRL+O = Open 
-         db "S"-64:dw filsav ;CTRL+S = Save 
-         db "F"-64:dw fndfnd ;CTRL+F = Find 
-         db 143:dw fndfnx    ;F3     = Find next 
-         db "R"-64:dw fndrep ;CTRL+R = Replace 
-         db "G"-64:dw edtgot ;CTRL+G = Goto 
-         db 145:dw edttim    ;F5     = Date/Time 
-   
- prgkey  ld hl,prgkeyt 
-         ld b,prgkeya 
-         ld de,3 
-         ld a,(iy+4) 
- prgkey1 ld c,(hl) 
-         cp c 
-         jr z,prgkey2 
-         add hl,de 
-         djnz prgkey1 
-         jp prgprz0 
- prgkey2 inc hl 
-         ld a,(hl) 
-         inc hl 
-         ld h,(hl) 
-         ld l,a 
-         ld a,7 
-         jp (hl) 
-   
- ;### PRGHLP -> show help 
- prghlp  call SySystem_HLPOPN 
-         jp prgprz0 
-   
- ;### PRGINF -> show info-box 
- prginf  ld hl,prgtxtinf         ;*** info box 
-         ld b,1+128+64 
- prginf1 call prginf0 
-         jp prgprz0 
- prginf0 ld a,(prgbnknum) 
-         ld de,prgwindat 
-         jp SySystem_SYSWRN 
-   
- ;### PRGEND -> quit application 
- prgend0 call filmod 
-         jp c,prgprz0 
- prgend  ld hl,(prgcodbeg+prgpstnum) 
-         call SySystem_PRGEND 
- prgend1 rst #30                     ;wait for death 
-         jr prgend1 
-   
- ;### PRGPAR -> Search for command line parameter (textfile) 
- prgparf db 0                    ;flag, if command line parameter exists 
-   
- prgpar  ld hl,(prgcodbeg)       ;search for command line parameter 
-         ld de,prgcodbeg 
-         dec h 
-         add hl,de               ;HL=code area end=path 
-         ld b,255 
- prgpar1 ld a,(hl) 
-         or a 
-         ret z 
-         cp 32 
-         jr z,prgpar2 
-         inc hl 
-         djnz prgpar1 
-         ret 
- prgpar2 ld (hl),0 
-         inc hl 
-         ld de,docpth 
-         ld bc,255 
-         ld a,c 
-         ld (prgparf),a 
-         ldir 
- prgpar3 ret 
-   
-   
- ;============================================================================== 
- ;### SUB-ROUTINES ############################################################# 
- ;============================================================================== 
-   
- ;### DIACNC -> Cancel dialogue 
- diacnc  ld a,(diawin) 
-         call SyDesktop_WINCLS 
-         jp prgprz0 
-   
- ;### MSGGET -> check for message for application 
- ;### Output     CF=0 -> no message, CF=1 -> IXH=sender, (AppMsgB)=message, A=(AppMsgB+0), IY=AppMsgB 
- msgget  call msgget2            ;** sleep 
-         rst #08 
-         jr msgget1 
- msgget0 call msgget2            ;** no sleep 
-         rst #18                 ;get Message -> IXL=Status, IXH=sender ID 
- msgget1 or a 
-         db #dd:dec l 
-         ret nz 
-         ld iy,AppMsgB 
-         ld a,(iy+0) 
-         or a 
-         jp z,prgend 
-         scf 
-         ret 
- msgget2 ld a,(AppPrzN) 
-         db #dd:ld l,a           ;IXL=our own process ID 
-         db #dd:ld h,-1          ;IYL=sender ID (-1 = receive messages from any sender) 
-         ld iy,AppMsgB           ;IY=Messagebuffer 
-         ret 
-   
- ;### CLCDEZ -> Converts byte into 2 decimal digits 
- ;### Input      A=Value 
- ;### Output     L=10-digit, H=1-digit 
- ;### Destroyed  AF 
- clcdez  ld l,0 
- clcdez1 sub 10 
-         jr c,clcdez2 
-         inc l 
-         jr clcdez1 
- clcdez2 add "0"+10 
-         ld h,a 
-         ld a,"0" 
-         add l 
-         ld l,a 
-         ret 
-   
- ;### CLCNUM -> Converts 16bit number into ASCII string (terminated by 0) 
- ;### Input      IX=value, IY=address, E=max digits 
- ;### Output     (IY)=last digit 
- ;### Destroyed  AF,BC,DE,HL,IX,IY 
- clcnumt dw 1,10,100,1000,10000 
- clcnum  ld d,0 
-         ld b,e 
-         dec e 
-         push ix 
-         pop hl 
-         ld ix,clcnumt 
-         add ix,de 
-         add ix,de               ;IX=first divider 
-         dec b 
-         jr z,clcnum4 
-         ld c,0 
- clcnum1 ld e,(ix) 
-         ld d,(ix+1) 
-         dec ix 
-         dec ix 
-         ld a,"0" 
-         or a 
- clcnum2 sbc hl,de 
-         jr c,clcnum5 
-         inc c 
-         inc a 
-         jr clcnum2 
- clcnum5 add hl,de 
-         inc c 
-         dec c 
-         jr z,clcnum3 
-         ld (iy+0),a 
-         inc iy 
- clcnum3 djnz clcnum1 
- clcnum4 ld a,"0" 
-         add l 
-         ld (iy+0),a 
-         ld (iy+1),0 
-         ret 
-   
- ;### CLCR16 -> Converts string into 16bit number 
- ;### Input      IX=string, A=terminator, BC=min (>=0), DE=max (<=65534) 
- ;### Output     IX=string behind terminator, HL=number, CF=1 -> invalid (too big/small, wrong chars/terminator) 
- ;### Destroyed  AF,DE,IYL 
- clcr16  ld hl,0 
-         db #fd:ld l,a 
- clcr161 ld a,(ix+0) 
-         inc ix 
-         db #fd:cp l 
-         jr z,clcr163 
-         sub "0" 
-         ret c 
-         cp 10 
-         ccf 
-         ret c 
-         push bc 
-         add hl,hl:jr c,clcr162 
-         ld c,l 
-         ld b,h 
-         add hl,hl:jr c,clcr162 
-         add hl,hl:jr c,clcr162 
-         add hl,bc:jr c,clcr162 
-         ld c,a 
-         ld b,0 
-         add hl,bc:ret c 
-         pop bc 
-         jr clcr161 
- clcr162 pop bc 
-         ret 
- clcr163 sbc hl,bc 
-         ret c 
-         add hl,bc 
-         inc de 
-         sbc hl,de 
-         ccf 
-         ret c 
-         add hl,de 
-         or a 
-         ret 
-   
- SySystem_HLPFLG db 0    ;flag, if HLP-path is valid 
- SySystem_HLPPTH db "%help.exe " 
- SySystem_HLPPTH1 ds 128 
- SySHInX db ".HLP",0 
-   
- SySystem_HLPINI 
-         ld hl,(prgcodbeg) 
-         ld de,prgcodbeg 
-         dec h 
-         add hl,de                   ;HL = CodeEnd = Command line 
-         ld de,SySystem_HLPPTH1 
-         ld bc,0 
-         db #dd:ld l,128 
- SySHIn1 ld a,(hl) 
-         or a 
-         jr z,SySHIn3 
-         cp " " 
-         jr z,SySHIn3 
-         cp "." 
-         jr nz,SySHIn2 
-         ld c,e 
-         ld b,d 
- SySHIn2 ld (de),a 
-         inc hl 
-         inc de 
-         db #dd:dec l 
-         ret z 
-         jr SySHIn1 
- SySHIn3 ld a,c 
-         or b 
-         ret z 
-         ld e,c 
-         ld d,b 
-         ld hl,SySHInX 
-         ld bc,5 
-         ldir 
-         ld a,1 
-         ld (SySystem_HLPFLG),a 
-         ret 
-   
- SySystem_HLPOPN 
-         ld a,(SySystem_HLPFLG) 
-         or a 
-         ret z 
-         ld hl,SySystem_HLPPTH 
-         ld a,(prgbnknum) 
-         jp SySystem_PRGRUN 
-   
-   
- ;============================================================================== 
- ;### CONFIG-ROUTINES ########################################################## 
- ;============================================================================== 
-   
- cfgnam  db "notepad.dat",0 
- cfgnam0 
- cfgpth  dw 0 
-   
- ;### CFGGET -> Generates config path 
- cfgget  ld hl,(prgcodbeg) 
-         ld de,prgcodbeg 
-         dec h 
-         add hl,de           ;HL = CodeEnd = path 
-         ld (cfgpth),hl 
-         ld e,l 
-         ld d,h              ;DE=HL 
-         ld b,255 
- cfgget1 ld a,(hl)           ;search end of path 
-         or a 
-         jr z,cfgget2 
-         inc hl 
-         djnz cfgget1 
-         jr cfgget4 
-         ld a,255 
-         sub b 
-         jr z,cfgget4 
-         ld b,a 
- cfgget2 ld (hl),0 
-         dec hl              ;search start of filename 
-         call cfgget5 
-         jr z,cfgget3 
-         djnz cfgget2 
-         jr cfgget4 
- cfgget3 inc hl 
-         ex de,hl 
- cfgget4 ld hl,cfgnam        ;replace application filename with config filename 
-         ld bc,cfgnam0-cfgnam 
-         ldir 
-         ret 
- cfgget5 ld a,(hl) 
-         cp "/" 
-         ret z 
-         cp "\\" 
-         ret z 
-         cp ":" 
-         ret 
-   
- ;### CFGLOD -> Loads config 
- cfglod  call cfgget 
-         ld hl,(cfgpth) 
-         ld a,(prgbnknum) 
-         db #dd:ld h,a 
-         call SySystem_CallFunction 
-         db MSC_SYS_SYSFIL 
-         db FNC_FIL_FILOPN           ;open file 
-         ret c 
-         ld hl,cfgdat 
-         ld bc,16+128 
-         ld de,(prgbnknum) 
-         push af 
-         call SySystem_CallFunction 
-         db MSC_SYS_SYSFIL 
-         db FNC_FIL_FILINP           ;load configdata 
-         pop af 
-         call SySystem_CallFunction 
-         db MSC_SYS_SYSFIL 
-         db FNC_FIL_FILCLO           ;close file 
-         ret 
-   
- ;### CFGINI -> Initialize config 
- cfgini  ld hl,prgwinmen4+2 
-         ld de,cfgdatsta 
-         ld a,(de) 
-         add a 
-         res 1,(hl) 
-         or (hl) 
-         ld (hl),a 
-         and 2 
-         call cfgbar1 
-         jr nz,cfgini0 
-         ld de,10 
-         ld hl,(prgwindat+10) 
-         add hl,de 
-         ld (prgwindat+10),hl 
- cfgini0 ld hl,(cfgdatpap) 
-         ld a,h 
-         add a:add a:add a:add a 
-         add l 
-         ld (txtmulobj+texdatcol),a 
-         ld a,(cfgdattab) 
-         ld (txtmulobj+texdattab),a 
-         ld hl,txtmulobj+texdatfg2 
-         res 0,(hl) 
-         ld a,(cfgdatwrp) 
-         cp 1 
-         jr c,cfgini2 
-         set 0,(hl) 
-         ld hl,-1 
-         jr nz,cfgini1 
-         ld hl,(cfgdatwps) 
- cfgini1 ld (txtmulobj+texdatxmx),hl 
- cfgini2 ld a,(cfgfntnum) 
-         inc a 
-         ld (fntselobj),a 
-         dec a 
-         jr z,cfgfnt 
-         db #fd:ld l,a 
-         add a 
-         ld l,a 
-         ld h,0 
-         ld de,cfgfntdat 
-         add hl,de 
-         ld ix,fntsellst+4 
-         xor a 
- cfgini3 ld (ix+2),l 
-         ld (ix+3),h 
-         ld de,4 
-         add ix,de 
-         ld bc,-1 
-         cpir 
-         db #fd:dec l 
-         jr nz,cfgini3 
-         call cfgwrp0 
-         jr cfgfnt 
-   
- ;### CFGFNT -> Loads font 
- cfgfntl db -1   ;last loaded font 
- cfgfnt  ld hl,txtmulobj+texdatflg 
-         res 3,(hl) 
-         ld a,(cfgdatfnt) 
-         or a 
-         ret z 
-         ld hl,cfgfntl 
-         cp (hl) 
-         jr z,cfgfnt1 
-         push af 
-         ld hl,(cfgpth) 
-         ld a,(prgbnknum) 
-         db #dd:ld h,a 
-         call SySystem_CallFunction 
-         db MSC_SYS_SYSFIL 
-         db FNC_FIL_FILOPN           ;open file 
-         pop bc 
-         ret c 
-         push af 
-         ld c,a 
-         ld a,b 
-         add a 
-         ld l,a 
-         ld h,0 
-         ld de,cfgfntdat-2 
-         add hl,de 
-         ld a,(hl):db #dd:ld l,a 
-         inc hl 
-         ld a,(hl):db #dd:ld h,a 
-         ld a,c 
-         ld iy,0 
-         ld c,0 
-         call SySystem_CallFunction 
-         db MSC_SYS_SYSFIL 
-         db FNC_FIL_FILPOI           ;move to font data 
-         pop bc 
-         jr c,cfgfnt0 
-         ld a,b 
-         ld hl,txtbufmem 
-         ld bc,txtbufmax+1 
-         add hl,bc 
-         ld (txtmulobj+texdatfnt),hl 
-         ld bc,96*16+2 
-         ld de,(prgbnknum) 
-         push af 
-         call SySystem_CallFunction 
-         db MSC_SYS_SYSFIL 
-         db FNC_FIL_FILINP           ;load font 
-         pop bc 
-         jr c,cfgfnt0 
-         call cfgfnt1 
-         ld a,(cfgdatfnt) 
-         ld (cfgfntl),a 
- cfgfnt0 ld a,b 
-         call SySystem_CallFunction 
-         db MSC_SYS_SYSFIL 
-         db FNC_FIL_FILCLO           ;close file 
-         ret 
- cfgfnt1 ld hl,txtmulobj+texdatflg 
-         set 3,(hl) 
-         ret 
-   
- ;### CFGSAV -> Save config 
- cfgsav  ld hl,(cfgpth)      ;open config file 
-         ld a,(prgbnknum) 
-         db #dd:ld h,a 
-         xor a 
-         call SySystem_CallFunction 
-         db MSC_SYS_SYSFIL 
-         db FNC_FIL_FILOPN 
-         ret c 
-         ld de,(prgbnknum)   ;save config 
-         ld hl,cfgdat 
-         ld bc,16 
-         push af 
-         call SySystem_CallFunction 
-         db MSC_SYS_SYSFIL 
-         db FNC_FIL_FILOUT 
-         pop af              ;close config file 
-         call SySystem_CallFunction 
-         db MSC_SYS_SYSFIL 
-         db FNC_FIL_FILCLO 
-         ret 
-   
- ;### CFGOPN -> Open config-dialogue 
- cfgopn  ld a,(cfgdatwrp) 
-         ld (cfgwinwrp),a 
-         ld ix,(cfgdatwps) 
-         ld iy,cfgwinbuf1 
-         ld e,4 
-         call cfgopn1 
-         ld ix,(cfgdattab) 
-         db #dd:ld h,0 
-         ld iy,cfgwinbuf2 
-         ld e,2 
-         call cfgopn1 
-         ld bc,(fntselobj-1) 
-         ld hl,fntsellst+1 
-         ld de,4 
- cfgopn2 res 7,(hl) 
-         add hl,de 
-         djnz cfgopn2 
-         ld a,(cfgdatfnt) 
-         ld (fntselobj+12),a 
-         add a:add a 
-         ld l,a 
-         ld h,0 
-         ld de,fntsellst+1 
-         add hl,de 
-         set 7,(hl) 
-         ld a,(cfgdatpap) 
-         ld (papselobj+12),a 
-         ld c,a 
-         ld a,(cfgdatpen) 
-         ld (penselobj+12),a 
-         call cfgcol0 
-         ld de,cfgwindat 
- cfgopn0 ld a,(prgbnknum) 
-         call SyDesktop_WINOPN 
-         jp c,prgprz0            ;memory full -> ignore 
-         ld (diawin),a           ;window has been opened -> store ID 
-         inc a 
-         ld (prgwindat+windatsup),a 
-         jp prgprz0 
- cfgopn1 push iy 
-         call clcnum 
-         ex (sp),iy 
-         pop hl 
-         db #fd:ld e,l 
-         db #fd:ld d,h 
-         or a 
-         sbc hl,de 
-         inc l 
-         ld (iy-6),l 
-         ld (iy-10),l 
-         ret 
-   
- ;### CFGCOL -> Updates colour preview 
- cfgcol  call cfgcol0 
-         ld a,(diawin) 
-         ld e,8 
-         call SyDesktop_WINDIN 
-         jp prgprz0 
- cfgcol0 ld a,(penselobj+12) 
-         add a:add a:add a:add a 
-         ld hl,papselobj+12 
-         add (hl) 
-         ld (cfgwindsc8+2),a 
-         ret 
-   
- ;### CFGOKY -> Close config-dialogue and save config 
- cfgoky  ld a,(cfgwinwrp) 
-         ld (cfgdatwrp),a 
-         ld ix,cfgwinbuf1 
-         xor a 
-         ld bc,50 
-         ld de,9999 
-         call clcr16 
-         jr c,cfgoky1 
-         ld (cfgdatwps),hl 
- cfgoky1 ld ix,cfgwinbuf2 
-         xor a 
-         ld bc,1 
-         ld de,99 
-         call clcr16 
-         jr c,cfgoky1 
-         ld a,l 
-         ld (cfgdattab),a 
- cfgoky2 ld a,(fntselobj+12) 
-         ld (cfgdatfnt),a 
-         ld a,(papselobj+12) 
-         ld (cfgdatpap),a 
-         ld a,(penselobj+12) 
-         ld (cfgdatpen),a 
-         call cfgsav 
-         call cfgini 
-         call docrfs 
-         jp diacnc 
-   
- ;### CFGWRP -> Switch between "wrap at window border" and "no wrap" 
- cfgwrp  ld a,(cfgdatwrp) 
-         or a 
-         ld a,2 
-         jr z,cfgwrp2 
-         xor a 
- cfgwrp2 ld (cfgdatwrp),a 
-         call cfgwrp0 
-         call cfgini 
-         call docrfs 
-         jp prgprz0 
- cfgwrp0 ld a,(cfgdatwrp) 
-         or a 
-         ld a,3 
-         jr z,cfgwrp1 
-         ld a,1 
- cfgwrp1 ld (prgwinmen3+2),a 
-         ret 
-   
- ;### CFGBAR -> Switches the status bar on/off 
- cfgbar  ld hl,prgwinmen4+2 
-         ld de,cfgdatsta 
-         ld a,(hl)               ;modify menu 
-         xor 2 
-         ld (hl),a 
-         and 2 
-         rra 
-         ld (de),a 
-         call cfgbar1 
-         ld de,10 
-         jr z,cfgbar2 
-         call edtchg5 
-         ld de,-10 
- cfgbar2 ld hl,(prgwindat+10) 
-         add hl,de 
-         ld (prgwindat+10),hl 
-         ld a,(prgwindat) 
-         cp 2 
-         ld a,(prgwin) 
-         push af 
-         call z,SyDesktop_WINMAX 
-         pop af 
-         call nz,SyDesktop_WINMID 
-         jp prgprz0 
- cfgbar1 ld hl,prgwindat+1 
-         res 6,(hl) 
-         ret z 
-         set 6,(hl) 
-         ret 
-   
-   
- ;============================================================================== 
- ;### FILE-ROUTINES ############################################################ 
- ;============================================================================== 
-   
- ;### FILMOD -> Ask for file-saving, if text has been modified 
- ;### Output     CF=0 ok, CF=1 cancel 
- filmod  ld a,(txtmulobj+texdatflg) 
-         rla 
-         ret nc 
-         ld hl,prgtxtsav 
-         ld b,8*4+3+64 
-         call prginf0 
-         cp 1 
-         ret c 
-         sub 4 
-         ret z 
-         ccf 
-         ret c 
-         jp filsav0 
-   
- ;### FILNEW -> New file 
- filnew  call filmod 
-         jp c,prgprz0 
-         call docnew 
-         call docrfs 
-         jp prgprz0 
-   
- ;### FILOPN -> Open file 
- filopn  call filmod 
-         jp c,prgprz0 
-         xor a 
-         call filopn0 
-         or a 
-         call z,fillod 
-         jp prgprz0 
- filopn0 ld hl,prgbnknum 
-         add (hl) 
-         ld hl,docmsk 
-         ld c,8 
-         ld ix,100 
-         ld iy,5000 
-         ld de,prgwindat 
-         jp SySystem_SELOPN 
-   
- ;### FILSAS -> Save file as 
- filsas  call filsav1 
-         call filtit 
-         jp prgprz0 
-   
- ;### FILSAV -> Save file 
- filsav  call filsav0 
-         jp prgprz0 
- ;-> CF=1 cancel 
- filsav0 ld a,(docpth) 
-         or a 
-         jr nz,filsav2 
- filsav1 ld a,64 
-         call filopn0 
-         or a 
-         scf 
-         ret nz 
- filsav2 call filsto 
-         or a 
-         ret 
-   
- ;### FILLOD -> load selected textfile 
- fillode dw prgtxterr1,prgtxterr2,prgtxterr3,prgtxterr4 
-   
- fillod  ld hl,docpth 
-         ld a,(prgbnknum) 
-         db #dd:ld h,a 
-         call SySystem_CallFunction 
-         db MSC_SYS_SYSFIL 
-         db FNC_FIL_FILOPN           ;open file 
-         ld e,2      ;2=error while loading file 
-         jr c,fillod5 
-         push af 
-         ld hl,txtbufmem 
-         ld bc,txtbufmax 
-         add hl,bc 
-         ld (hl),0 
-         sbc hl,bc 
-         ld de,(prgbnknum) 
-         call SySystem_CallFunction 
-         db MSC_SYS_SYSFIL 
-         db FNC_FIL_FILINP           ;load textdata 
-         pop de 
-         push bc 
-         push af 
-         ld a,d 
-         call SySystem_CallFunction 
-         db MSC_SYS_SYSFIL 
-         db FNC_FIL_FILCLO           ;close file 
-         pop af 
-         pop bc 
-         ld e,2      ;2=error while loading file 
-         jr c,fillod3 
-         ld hl,txtbufmem 
-         add hl,bc 
-         ld e,0      ;0=ok 
-         ld (hl),e 
-         jr nz,fillod1 
-         inc e       ;1=memory full (only the first part of the file has been loaded) 
- fillod1 push de         ;loading ok -> init text 
-         call docini 
-         call filtit 
-         jr fillod4 
- fillod3 push de         ;error while loading -> clear text 
-         call docnew 
- fillod4 call docrfs 
-         pop de 
- fillod5 inc e:dec e 
-         ret z 
-         ld l,e          ;show error message 
-         ld h,0 
-         add hl,hl 
-         ld bc,fillode-2 
-         add hl,bc 
-         ld a,(hl) 
-         inc hl 
-         ld h,(hl) 
-         ld l,a 
-         ld b,1+64 
-         call prginf0 
-         jp prgprz0 
-   
- ;### FILSTO -> save actual textfile 
- filsto  ld hl,txtmulobj+texdatflg   ;reset modified-bit 
-         res 7,(hl) 
-         ld hl,docpth 
-         ld a,(prgbnknum) 
-         db #dd:ld h,a 
-         xor a 
-         call SySystem_CallFunction 
-         db MSC_SYS_SYSFIL 
-         db FNC_FIL_FILNEW           ;create file 
-         ld e,3      ;3=error while writing file 
-         jr c,fillod5 
-         push af 
-         ld hl,txtbufmem 
-         ld bc,(txtmulobj+texdatlen) 
-         add hl,bc 
-         ld (hl),26 
-         push hl 
-         sbc hl,bc 
-         inc bc 
-         ld de,(prgbnknum) 
-         call SySystem_CallFunction 
-         db MSC_SYS_SYSFIL 
-         db FNC_FIL_FILOUT           ;save textdata 
-         pop hl 
-         ld (hl),0 
-         pop de 
-         push af 
-         ld a,d 
-         call SySystem_CallFunction 
-         db MSC_SYS_SYSFIL 
-         db FNC_FIL_FILCLO           ;close file 
-         pop af 
-         ld e,3      ;3=error while writing file 
-         jr c,fillod5 
-         inc e       ;4=device full (only part of the text has been saved) 
-         or a 
-         jr nz,fillod5 
-         ld e,a      ;0=ok 
-         jr fillod5 
-   
- ;### FILTIT -> Refreshes window title with filename 
- filtitt db " - Notepad",0 
-   
- filtit  ld hl,docpth 
-         ld e,l:ld d,h 
- filtit1 call cfgget5 
-         inc hl 
-         jr nz,filtit2 
-         ld e,l:ld d,h 
- filtit2 or a 
-         jr nz,filtit1 
-         dec hl 
-         sbc hl,de 
-         ld a,l 
-         or a 
-         ret z 
-         cp 13 
-         jr c,filtit3 
-         ld a,12 
- filtit3 ld c,a 
-         ld b,0 
-         ex de,hl 
-         ld de,prgwintit 
-         ldir 
-         ld hl,filtitt 
-         ld bc,11 
-         ldir 
-         ld a,(prgwin) 
-         jp SyDesktop_WINTIT 
-   
-   
- ;============================================================================== 
- ;### EDIT-ROUTINES ############################################################ 
- ;============================================================================== 
-   
- ;### EDTCHG -> Editor changed 
- edtchgm db "Lin Col Siz Mrk " 
- edtchgf db 0    ;flag, if changed 
-   
- edtchg  ld a,1                  ;** Set Change-Flag 
-         ld (edtchgf),a 
-         jp prgprz0 
-   
- edtchg0 ld hl,edtchgf           ;** Update only on change 
-         bit 0,(hl) 
-         ld (hl),0 
-         ret z 
- edtchg1 ld a,(prgwindat+1)      ;** Update only on view 
-         bit 6,a 
-         ret z 
-         call edtchg5 
-         ld a,(prgwin) 
-         jp SyDesktop_WINSTA 
- edtchg5 ld a,29                 ;** Update content 
-         rst #20:dw jmp_keyput 
-         rst #30 
-         ld iy,prgwinsta 
-         ld hl,edtchgm 
-         ld ix,(txtmulobj+texdatmsg+2) 
-         inc ix 
-         call edtchg4 
-         ld ix,(txtmulobj+texdatmsg+0) 
-         inc ix 
-         call edtchg4 
-         ld ix,(txtmulobj+texdatlen) 
-         call edtchg4 
-         ld de,(txtmulobj+texdatmrk) 
-         ld a,e:or d 
-         jr z,edtchg3 
-         bit 7,d 
-         jr z,edtchg2 
-         ld a,e:cpl:ld e,a 
-         ld a,d:cpl:ld d,a 
-         inc de 
- edtchg2 push de:pop ix 
-         call edtchg4 
- edtchg3 ld (iy-2),0 
-         ret 
- edtchg4 push iy:pop de          ;add value 
-         ld bc,4 
-         add iy,bc 
-         ldir 
-         ld e,5 
-         push hl 
-         call clcnum 
-         pop hl 
-         inc iy:inc iy:inc iy 
-         ld (iy-2),"," 
-         ld (iy-1)," " 
-         ret 
-   
- ;### EDTCUT -> Edit Cut 
- edtcut  ld a,"X"-64 
- edtcut0 rst #20:dw jmp_keyput 
-         jp prgprz0 
-   
- ;### EDTCOP -> Edit Copy 
- edtcop  ld a,"C"-64 
-         jr edtcut0 
-   
- ;### EDTPAS -> Edit Paste 
- edtpas  ld a,"V"-64 
-         jr edtcut0 
-   
- ;### EDTSAL -> Edit Select All 
- edtsal  ld a,"A"-64 
-         jr edtcut0 
-   
- ;### EDTDEL -> Edit Delete 
- edtdel  ld a,8 
-         jr edtcut0 
-   
- ;### EDTGOT -> Edit Goto 
- edtgot  ld hl,(gotdatoln+texdatlen) 
-         ld (gotdatoln+texdatmrk),hl 
-         ld hl,0 
-         ld (gotdatoln+texdatpos),hl 
-         ld a,3 
-         ld (gotwingrp+14),a 
-         ld de,gotwindat 
-         jp cfgopn0 
-   
- ;### EDTTIM -> Edit Date/Time 
- edttims db "00:00:00 00.00.0000",0 
- edttim  ld hl,(txtmulobj+texdatmrk) 
-         ld a,l:or h 
-         jr z,edttim1 
-         ld a,8 
-         rst #20:dw jmp_keyput 
-         rst #30 
- edttim1 ld hl,(txtmulobj+texdatlen)     ;increase length 
-         ld de,19 
-         add hl,de 
-         ex de,hl 
-         ld hl,(txtmulobj+texdatmax) 
-         sbc hl,de 
-         jp c,fndral3 
-         ld (txtmulobj+texdatlen),de 
-         ld hl,txtmulobj+texdatflg 
-         set 7,(hl) 
-         ld hl,(txtmulobj+texdatpos)     ;insert data 
-         push hl 
-         push de 
-         ex de,hl 
-         sbc hl,de 
-         ld c,l:ld b,h 
-         inc bc 
-         pop de 
-         ld hl,txtbufmem 
-         add hl,de 
-         ex de,hl 
-         ld hl,-19 
-         add hl,de 
-         lddr 
-         inc de 
-         push de 
-         rst #20:dw #810c                ;generate time/date string 
-         push hl 
-         push de 
-         push bc 
-         call clcdez:ld (edttims+6),hl 
-         pop bc:push bc 
-         ld a,c 
-         call clcdez:ld (edttims+0),hl 
-         pop af 
-         call clcdez:ld (edttims+3),hl 
-         pop de:push de 
-         ld a,e 
-         call clcdez:ld (edttims+12),hl 
-         pop af 
-         call clcdez:ld (edttims+9),hl 
-         pop ix 
-         ld iy,edttims+15 
-         ld e,4 
-         call clcnum 
-         pop de 
-         ld hl,edttims                   ;copy time/date string 
-         ld bc,19 
-         push bc 
-         ldir 
-         pop bc 
-         pop hl 
-         add hl,bc 
-         ld (txtmulobj+texdatmsg+0),hl   ;update display 
-         ld hl,0 
-         ld (txtmulobj+texdatmrk),hl 
-         ld a,30 
-         rst #20:dw jmp_keyput 
-         jp prgprz0 
-   
-   
- ;============================================================================== 
- ;### FIND- AND REPLACE-ROUTINES ############################################### 
- ;============================================================================== 
-   
- ;### FNDFND -> Opens Find-Dialogue 
- fndfnd  call fndfnd1 
-         ld de,fndwindat 
-         jp cfgopn0 
- fndfnd1 ld bc,(txtmulobj+texdatmrk) 
-         ld a,c:or b 
-         jr z,fndfnd5 
-         ld hl,(txtmulobj+texdatpos) 
-         bit 7,b 
-         jr z,fndfnd2 
-         add hl,bc 
-         ld a,c:cpl:ld c,a 
-         ld a,b:cpl:ld b,a 
-         inc bc 
- fndfnd2 ld a,b 
-         or a 
-         jr nz,fndfnd3 
-         ld a,c 
-         cp 32+1 
-         jr c,fndfnd4 
- fndfnd3 ld bc,32 
- fndfnd4 ld (fnddatofn+texdatlen),bc 
-         ld de,txtbufmem 
-         add hl,de 
-         ld de,fnddattfn 
-         ldir 
-         xor a 
-         ld (de),a 
- fndfnd5 ld hl,(fnddatofn+texdatlen) 
-         ld (fnddatofn+texdatmrk),hl 
-         ld hl,0 
-         ld (fnddatofn+texdatpos),hl 
-         ld a,3 
-         ld (fndwingrp+14),a 
-         ld (repwingrp+14),a 
-         ld hl,fnddattfn 
-         jp fndlfp 
-   
- ;### FNDREP -> Opens Replace-Dialogue 
- fndrep  call fndfnd1 
-         ld hl,fnddattrp 
-         call fndlfp 
-         ld de,repwindat 
-         jp cfgopn0 
-   
- ;### FNDFOK -> Start Find 
- fndfok  ld a,(diawin) 
-         call SyDesktop_WINCLS 
-         jp fndfnx 
-   
- ;### FNDROK -> Start Replace 
- fndrok  call fndrok0 
-         ld hl,(txtmulobj+texdatpos) 
-         call fndsea 
-         jp c,fndfnx0 
- fndrok1 call fndfnx2 
-         rst #30 
-         ld de,rplwindat 
-         jp cfgopn0 
- fndrok0 ld a,(diawin) 
-         call SyDesktop_WINCLS 
-         ld hl,fnddattfn 
-         call fndplf 
-         ld hl,fnddattrp 
-         call fndplf 
-         rst #30         ;let the desktop-manager close the window first, before the text is modified 
-         ret 
-   
- ;### FNDRDR -> Replace-Dialogue -> Replace 
- fndrdr  call fndrok0 
-         ld hl,(txtmulobj+texdatpos) 
-         ld de,(txtmulobj+texdatmrk) 
-         add hl,de 
-         push hl 
-         call fndrpl 
-         pop de 
-         jr c,fndral3 
-         ld hl,(fnddatorp+texdatlen) 
-         add hl,de 
-         ld (txtmulobj+texdatmsg+0),hl 
-         push hl 
-         ld hl,0 
-         ld (txtmulobj+texdatmrk),hl 
-         ld a,30 
-         rst #20:dw jmp_keyput 
-         rst #30 
-         pop hl 
-         call fndsea 
-         jr nc,fndrok1 
-         jp prgprz0 
-   
- ;### FNDRDA -> Replace-Dialogue -> Replace All 
- fndrda  ld hl,(txtmulobj+texdatpos) 
-         ld de,(txtmulobj+texdatmrk) 
-         add hl,de 
-         ld (txtmulobj+texdatpos),hl 
-         ld hl,0 
-         ld (txtmulobj+texdatmrk),hl 
-         jr fndral 
-   
- ;### FNDRAL -> Start Replace all 
- fndral  call fndrok0 
-         ld bc,0 
-         ld a,(fnddatall) 
-         dec a 
-         ld l,a:ld h,a 
-         jr z,fndral1 
- fndral0 ld hl,(txtmulobj+texdatpos) 
- fndral1 push bc 
-         call fndsea 
-         jr c,fndral2 
-         push hl 
-         call fndrpl 
-         pop hl 
-         pop bc 
-         jr c,fndral3 
-         inc bc 
-         ld de,(fnddatorp+texdatlen) 
-         add hl,de 
-         jr fndral1 
- fndral2 pop bc 
-         ld a,c:or b 
-         jr z,fndfnx0 
-         push bc:pop ix 
-         ld e,5 
-         ld iy,fndmsgtxt2b 
-         call clcnum 
-         push iy:pop de 
-         inc de 
-         ld hl,fndmsgtxt2c 
-         ld bc,8 
-         ldir 
-         call docrfs 
-         ld hl,prgtxtrep 
-         ld b,8*2+1+64+128 
-         jp prginf1 
- fndral3 ld hl,prgtxtmem 
-         ld b,8*3+1+64 
-         jp prginf1 
-   
- ;### FNDFNX -> Find next 
- fndfnx  ld hl,fnddattfn 
-         call fndplf 
-         ld hl,(txtmulobj+texdatpos) 
-         call fndsea 
-         jr nc,fndfnx1 
- fndfnx0 ld hl,prgtxtfnd 
-         ld b,8*2+1+64 
-         jp prginf1 
- fndfnx1 call fndfnx2 
-         jp prgprz0 
- fndfnx2 ld de,(fnddatofn+texdatlen) 
-         add hl,de 
-         ld (txtmulobj+texdatmsg+0),hl 
-         ld a,e:cpl:ld e,a 
-         ld a,d:cpl:ld d,a 
-         inc de 
-         ld (txtmulobj+texdatmsg+2),de 
-         ld a,31 
-         rst #20:dw jmp_keyput 
-         ret 
-   
- ;### FNDRPL -> Replaces text 
- ;### Input      HL=Offset, (fnddatofn+texdatlen)=old length, fnddattrp=new text, (fnddatorp+texdatlen)=new length 
- ;### Output     CF=0 ok, CF=1 memory full 
- fndrplo dw 0    ;offset 
- fndrpl  push hl 
-         ex de,hl 
-         ld hl,(fnddatofn+texdatlen) 
-         ld bc,(fnddatorp+texdatlen) 
-         or a 
-         sbc hl,bc 
-         push hl 
-         ld c,l:ld b,h 
-         ld hl,(txtmulobj+texdatlen) 
-         or a 
-         sbc hl,bc       ;hl=new length 
-         push hl 
-         ld bc,txtbufmax 
-         scf 
-         sbc hl,bc 
-         ccf 
-         pop hl 
-         pop bc          ;bc=lendif 
-         ret c           ;new length >= max+1 -> memory full 
-         ld (txtmulobj+texdatlen),hl 
-         ld a,c:or b 
-         jr z,fndrpl2 
-         push bc 
-         push hl 
-         ld a,b 
-         sbc hl,de 
-         ld bc,(fnddatorp+texdatlen) 
-         sbc hl,bc 
-         ld c,l:ld b,h 
-         inc bc          ;bc=copylength (newlen-new wordlength-offset+1) 
-         pop hl          ;hl=newlen 
-         rla 
-         jr nc,fndrpl1 
-         ld de,txtbufmem ;expand text -> copy backwards 
-         add hl,de       ;hl=last char+1 
-         pop de          ;de=dif 
-         push hl 
-         add hl,de       ;hl=last char+dif = source 
-         pop de          ;de=last char = destination 
-         lddr 
-         jr fndrpl2 
- fndrpl1 ld hl,(fnddatorp+texdatlen) 
-         add hl,de 
-         ld de,txtbufmem 
-         add hl,de 
-         ex de,hl        ;de=offset + new wordlength=destination 
-         pop hl 
-         add hl,de       ;hl=destination + dif=source 
-         ldir 
- fndrpl2 pop de 
-         ld hl,txtbufmem 
-         add hl,de 
-         ex de,hl 
-         ld hl,fnddattrp 
-         ld bc,(fnddatorp+texdatlen) 
-         ldir 
-         ld hl,txtmulobj+texdatflg 
-         set 7,(hl)      ;modified 
-         or a 
-         ret 
-   
- ;### FNDSEA -> Searches for text 
- ;### Input      HL=Startoffset, fnddattfn=Text, (fnddatofn+texdatlen)=length, (fnddatcas)=Flag, if case sensitive 
- ;### Output     CF=0 ok (HL=offset), CF=1 nothing found 
- fndsea  ld de,(fnddatofn+texdatlen) 
-         ld a,e:or d 
-         scf 
-         ret z 
-         push hl 
-         add hl,de 
-         ex de,hl 
-         ld hl,(txtmulobj+texdatlen) 
-         scf 
-         sbc hl,de 
-         ld c,l:ld b,h 
-         pop hl 
-         ret c 
-         inc bc              ;bc=len 
-         ld de,txtbufmem 
-         add hl,de           ;hl=adr 
-         ld a,(fnddattfn) 
-         call fndcas 
-         ld e,a 
- fndsea1 ld a,(hl)       ;search for 1st char 
-         call fndcas 
-         cp e 
-         jr z,fndsea3 
- fndsea2 inc hl          ;next char 
-         dec bc 
-         ld a,c:or b 
-         jr nz,fndsea1 
-         scf 
-         ret 
- fndsea3 dec hl          ;1st char found 
-         ld a,(hl) 
-         inc hl 
-         call fndaln 
-         jr c,fndsea2 
-         push bc 
-         push de 
-         push hl 
-         ld bc,(fnddatofn+texdatlen) 
-         ld de,fnddattfn 
- fndsea4 inc hl          ;check remaining chars 
-         dec c 
-         jr z,fndsea6 
-         inc de 
-         ld a,(de) 
-         call fndcas 
-         ld b,a 
-         ld a,(hl) 
-         call fndcas 
-         cp b 
-         jr z,fndsea4 
- fndsea5 pop hl          ;not found, next char 
-         pop de 
-         pop bc 
-         jr fndsea2 
- fndsea6 ld a,(hl)       ;complete string found 
-         call fndaln 
-         jr c,fndsea5 
-         pop hl 
-         pop de 
-         pop bc 
-         ld de,txtbufmem 
-         or a 
-         sbc hl,de 
-         ret 
-   
- ;### FNDCAS -> Converts char into lcase, if case-flag is not set 
- ;### Input      A=Char 
- ;### Output     A=Char 
- ;### Destroyed  F 
- fndcas  push hl 
-         ld hl,fnddatcas 
-         bit 0,(hl) 
-         pop hl 
-         ret nz 
-         cp "A" 
-         ret c 
-         cp "Z"+1 
-         ret nc 
-         add "a"-"A" 
-         ret 
-   
- ;### FNDALN -> Checks, if word only + char is alphanumeric 
- ;### Input      A=Char 
- ;### Output     CF=1 word only + char is alphanumeric 
- ;### Destroyed  F 
- fndaln  or a 
-         push hl 
-         ld hl,fnddatwrd 
-         bit 0,(hl) 
-         pop hl 
-         ret z 
-         cp "_" 
-         scf 
-         ret z 
-         cp "0" 
-         ccf 
-         ret nc 
-         cp "9"+1 
-         ret c 
-         cp "A" 
-         ccf 
-         ret nc 
-         cp "Z"+1 
-         ret c 
-         cp "a" 
-         ccf 
-         ret nc 
-         cp "z"+1 
-         ret 
-   
- ;### FNDPLF -> Converts ^P into 13+10 
- ;### Input      HL=String 
- ;### Destroyed  AF,BC,DE,HL 
- fndplf  ld bc,13*256+10 
-         ld de,"^"*256+"P" 
-         jr fndlfp0 
-   
- ;### FNDLFP -> Converts 13+10 into ^P 
- ;### Input      HL=String 
- ;### Destroyed  AF,BC,DE,HL 
- fndlfp  ld de,13*256+10 
-         ld bc,"^"*256+"P" 
- fndlfp0 ld a,(hl) 
- fndlfp1 or a 
-         ret z 
-         inc hl 
-         cp d 
-         jr nz,fndlfp0 
-         ld a,(hl) 
-         cp e 
-         jr nz,fndlfp1 
-         dec hl 
-         ld (hl),b 
-         inc hl 
-         ld (hl),c 
-         inc hl 
-         jr fndlfp0 
-   
- ;### FNDGOT -> Goto 
- fndgot  ld a,(diawin)           ;close dialogue 
-         call SyDesktop_WINCLS 
-         ld ix,gotdattln         ;convert line 
-         xor a 
-         ld bc,1 
-         ld de,9999 
-         call clcr16 
-         jr nc,fndgot2 
- fndgot1 ld hl,prgtxtnum 
-         ld b,8*3+1+64 
-         jp prginf1 
- fndgot2 push hl 
-         ld ix,gotdattcl         ;convert column 
-         xor a 
-         ld bc,1 
-         ld de,16383 
-         call clcr16 
-         pop bc 
-         jr c,fndgot1 
-         push hl                 ;limit max-line 
-         ld hl,(txtmulobj+texdatlnt) 
-         sbc hl,bc 
-         jr nc,fndgot3 
-         add hl,bc 
-         ld c,l:ld b,h 
- fndgot3 ld ix,txtmulobj+texdatlln 
-         ld hl,0                 ;goto line 
- fndgot4 dec bc 
-         ld a,c:or b 
-         jr z,fndgot5 
-         ld e,(ix+0) 
-         ld d,(ix+1) 
-         res 7,d 
-         add hl,de 
-         inc ix 
-         inc ix 
-         jr fndgot4 
- fndgot5 ex de,hl 
-         pop hl                  ;limit max-column 
-         ld c,(ix+0) 
-         ld b,(ix+1) 
-         inc bc 
-         bit 7,b 
-         res 7,b 
-         jr z,fndgot6 
-         dec bc:dec bc 
- fndgot6 sbc hl,bc 
-         jr nc,fndgot7 
-         add hl,bc 
-         ld c,l:ld b,h 
- fndgot7 dec bc 
-         ex de,hl 
-         add hl,bc 
-         ld (txtmulobj+texdatmsg+0),hl 
-         ld hl,0 
-         ld (txtmulobj+texdatmsg+2),hl 
-         ld a,31 
-         rst #20:dw jmp_keyput   ;set cursor 
-         jp prgprz0 
-   
-   
- ;============================================================================== 
- ;### DOCUMENT-ROUTINES ######################################################## 
- ;============================================================================== 
-   
- texdatadr       equ 0           ;Zeiger auf Text 
- texdatbeg       equ 2           ;erstes angezeigtes Zeichen (nur singleline) 
- texdatpos       equ 4           ;Cursorposition im Gesamttext 
- texdatmrk       equ 6           ;0/Anzahl markierter Zeichen [neg->Cursor=Ende Markierung] 
- texdatlen       equ 8           ;Textlфnge 
- texdatmax       equ 10          ;maximal zulфssige Textlфnge (1-16383; exklusive 0-Terminator) 
- texdatflg       equ 12          ;Flags (Bit0=Pa▀wort [nur singleline], Bit1=ReadOnly, Bit2=AltColor, Bit3=AltFont [nur multiline]) 
- ;** extended 16c/altfont 
- texdatcol       equ 13          ;4bit txtpap, 4bit txtpen 
- texdatrhm       equ 14          ;4bit rahmen1, 4bit rahmen2 
- texdatfnt       equ 15          ;Adresse des alternativen Fonts 
- texdatrs1       equ 17          ;*reserved 1byte* 
- ;** ab hier nur Multiline 
- texdatlnt       equ 18          ;aktuelle Anzahl Zeilen 
- texdatxmx       equ 20          ;maximale Zeilenbreite in Pixeln bei Wordwrap-Pos-Vorgabe (-1=unbegrenzt) 
- texdatymx       equ 22          ;maximale Anzahl Zeilen (*2 bytes ab texdatlln!) 
- texdatxwn       equ 24          ;win x len ohne slider f№r bisherige formatierung (winx<>aktx -> Neuformatierung notwendig, durch -8 erzwingen) 
- texdatywn       equ 26          ;win y len ohne slider 
-   
- texdatzgr       equ 28          ;pointer auf diesen datensatz (ab texdatadr) 
- texdatxfl       equ 30          ;full x len (=Lфnge der lфngsten Textzeile in Pixel) 
- texdatyfl       equ 32          ;full y len (=Anzahl aller Textzeilen * 8) 
- texdatxof       equ 34          ;offset x   (=texdatbeg) 
- texdatyof       equ 36          ;offset y 
- texdatfg2       equ 38          ;Flags (Bit0=WordWrap-Position vorgegeben [dann Xslider], Bit1=1) 
- texdattab       equ 39          ;Tabstop GrЎ▀e (1-255; 0=kein Tabstop) ##!!## 
-   
- texdatmsg       equ 40          ;Message-Buffer (in POS, MRK, out CXP, CYP) 
- texdatrs2       equ 44          ;*reserved 4byte* 
- texdatlln       equ 48          ;Zeilen-Lфngentabelle (bit15=cr+lf am ende vorhanden) 
-   
- ;### DOCINI -> initialise loaded document 
- docini  ld hl,txtmulobj+texdatflg   ;reset modified-bit 
-         res 7,(hl) 
-         ld hl,txtbufmem             ;search for EOF (0 or 26 [CPC]) 
-         ld bc,txtbufmax 
-         push hl 
-         xor a                       ;search for 0 
-         cpir 
-         ex (sp),hl 
-         ld bc,txtbufmax 
-         ld a,26                     ;search for 26 (EOF) 
-         cpir 
-         pop de 
-         or a 
-         sbc hl,de 
-         jr nc,docini1 
-         add hl,de 
-         ex de,hl 
- docini1 ex de,hl 
-         dec hl 
-         xor a 
-         ld (hl),a 
-         ld bc,txtbufmem 
-         sbc hl,bc                   ;hl=textlength (=min(found(0),found(26)) 
-         ld (txtmulobj+texdatlen),hl 
- docini2 ld a,l 
-         or h 
-         jr z,docnew1 
-         ld a,(bc) 
-         cp 10 
-         jr z,docini4 
-         cp 13 
-         jr z,docini4 
-         cp 32 
-         jr c,docini3 
-         cp 128 
-         jr c,docini4 
- docini3 ld a,"?" 
-         ld (bc),a 
- docini4 inc bc 
-         dec hl 
-         jr docini2 
-   
- ;### DOCNEW -> clears and initialise document 
- docnew  ld hl,txtmulobj+texdatflg   ;reset modified-bit 
-         res 7,(hl) 
-         xor a 
-         ld (txtbufmem),a 
-         ld l,a:ld h,a 
-         ld (txtmulobj+texdatlen),hl 
- docnew1 ld (txtmulobj+texdatpos),hl 
-         ld (txtmulobj+texdatmrk),hl 
-         ld (txtmulobj+texdatxof),hl 
-         ld (txtmulobj+texdatyof),hl 
-         ret 
-   
- ;### DOCRFS -> refresh document display 
- docrfs  call edtchg1 
-         ld hl,-8 
-         ld (txtmulobj+texdatxwn),hl 
-         ld a,(prgwin) 
-         ld e,1 
-         jp SyDesktop_WINDIN 
-   
-   
- ;============================================================================== 
- ;### DATA AREA ################################################################ 
- ;============================================================================== 
-   
- prgdatbeg 
-   
- txtbufmem db 0 
- ;!!!last label in data-area!!! 
-   
- ;============================================================================== 
- ;### TRANSFER AREA ############################################################ 
- ;============================================================================== 
-   
- prgtrnbeg 
- ;### PRGPRZS -> Stack for application process 
-         ds 128 
- prgstk  ds 6*2 
-         dw prgprz 
- AppPrzN db 0 
- AppMsgB ds 14 
-   
- prgicn16c db 12,24,24:dw $+7:dw $+4,12*24:db 5 
-         db #88,#88,#88,#88,#DD,#8D,#D8,#DD,#8D,#D8,#DD,#88,#88,#88,#88,#8D,#8D,#D8,#DD,#8D,#D8,#DD,#8D,#D8,#88,#88,#88,#54,#D4,#4D,#44,#D4,#4D,#44,#D4,#77,#88,#88,#88,#54,#44,#44,#44,#44,#44,#44,#44,#77 
-         db #88,#88,#85,#44,#44,#44,#44,#44,#44,#44,#45,#17,#88,#88,#85,#44,#44,#44,#44,#44,#44,#44,#45,#17,#88,#88,#54,#44,#FF,#FF,#FF,#FF,#F4,#44,#50,#17,#88,#88,#54,#44,#44,#44,#44,#44,#44,#44,#51,#17 
-         db #88,#85,#44,#45,#55,#55,#55,#55,#44,#45,#00,#17,#88,#85,#44,#44,#44,#44,#44,#44,#44,#45,#00,#17,#88,#54,#44,#55,#55,#55,#55,#54,#44,#51,#11,#17,#88,#54,#44,#44,#44,#44,#44,#44,#44,#50,#06,#17 
-         db #85,#44,#44,#44,#44,#44,#44,#44,#45,#00,#06,#17,#85,#44,#44,#44,#44,#44,#44,#44,#45,#11,#11,#17,#54,#44,#44,#44,#44,#44,#44,#44,#50,#00,#66,#17,#54,#44,#44,#44,#44,#44,#44,#44,#50,#00,#66,#17 
-         db #85,#55,#55,#55,#55,#55,#55,#55,#11,#11,#11,#17,#88,#88,#88,#70,#00,#00,#00,#00,#00,#06,#66,#17,#88,#88,#88,#70,#00,#00,#00,#00,#00,#06,#66,#17,#88,#88,#88,#71,#11,#11,#11,#11,#11,#11,#11,#17 
-         db #88,#88,#88,#70,#00,#00,#00,#00,#00,#66,#66,#17,#88,#88,#88,#76,#66,#66,#66,#66,#66,#66,#61,#17,#88,#88,#88,#87,#11,#11,#11,#11,#11,#11,#11,#78,#88,#88,#88,#88,#77,#77,#77,#77,#77,#77,#77,#88 
-   
- docmsk  db "TXT",0 
- docpth  ds 256 
-   
- ;### STRINGS ################################################################## 
-   
- prgwintit   db "untitled - Notepad",0:ds 12-8 
- prgwinsta   ds 4*11 
-   
- prgtxtinf1  db "Notepad for SymbOS",0 
- prgtxtinf2  db " Version 1.2 (Build 141019pdt)",0 
- prgtxtinf3  db " Copyright <c> 2014 SymbiosiS" 
- prgtxtinf0  db 0 
-   
- prgtxterra  db "Textbuffer full. Only a part of",0 
- prgtxterrb  db "the document has been loaded.",0 
- prgtxterrc  db "Error while loading file!",0 
- prgtxterrd  db "Error while saving file!",0 
- prgtxterre  db "Device full. Only a part of",0 
- prgtxterrf  db "the document has been saved.",0 
-   
- prgtxtsav1  db "Save changes?",0 
-   
- prgtxtoky   db "Ok",0 
- prgtxtcnc   db "Cancel",0 
- prgtxtfnx   db "Find next",0 
- prgtxtfrp   db "Replace",0 
- prgtxtfra   db "Replace all",0 
-   
- ;### FIND AND REPLACE ######################################################### 
-   
- fndwintit   db "Find",0 
- repwintit   db "Replace",0 
- gotwintit   db "Go to",0 
-   
- fndwintxt1  db "Find what",0 
- fndwintxt2  db "Replace with",0 
- fndwintxt3  db "Match case",0 
- fndwintxt4  db "Whole word only",0 
- fndwintxt5  db "Entire document",0 
- fndwintxt6  db "Line",0 
- fndwintxt7  db "Column",0 
-   
- fnddattfn   ds 33 
- fnddattrp   ds 33 
- gotdattln   db "1":ds 4 
- gotdattcl   db "1":ds 5 
-   
- fndmsgtxt1  db "Text not found!",0 
- fndmsgtxt2a db "Replaced " 
- fndmsgtxt2b ds 8+5 
- fndmsgtxt2c db " times.",0 
- fndmsgtxt3a db "Textbuffer full. Couldn't",0 
- fndmsgtxt3b db "replace one or more entries.",0 
- fndmsgtxt4  db "Invalid number",0 
-   
- ;### CONFIG ################################################################### 
-   
- fnttxtdef   db "Default",0 
-   
- coltxt00    db "00",0 
- coltxt01    db "01",0 
- coltxt02    db "02",0 
- coltxt03    db "03",0 
- coltxt04    db "04",0 
- coltxt05    db "05",0 
- coltxt06    db "06",0 
- coltxt07    db "07",0 
- coltxt08    db "08",0 
- coltxt09    db "09",0 
- coltxt10    db "10",0 
- coltxt11    db "11",0 
- coltxt12    db "12",0 
- coltxt13    db "13",0 
- coltxt14    db "14",0 
- coltxt15    db "15",0 
-   
- cfgwintit   db "Settings",0 
- cfgwintxt0  db "Font type",0 
- cfgwintxt1  db "Font colour",0 
- cfgwintxt2  db "Options",0 
- cfgwintxt3  db "Word wrap at window border",0 
- cfgwintxt4  db "Word wrap at",0 
- cfgwintxt5  db "px",0 
- cfgwintxt6  db "No word wrap",0 
- cfgwintxt7  db "Tabstop width",0 
- cfgwintxt8  db "chars",0 
- cfgwintxt9  db "Pen",0 
- cfgwintxta  db "Paper",0 
- cfgwintxtb  db "Preview",0 
-   
- ;### MENU ##################################################################### 
-   
- prgwinmentx1 db "File",0 
- prgwinmen1tx1 db "New",0 
- prgwinmen1tx2 db "Open...",0 
- prgwinmen1tx3 db "Save",0 
- prgwinmen1tx4 db "Save As...",0 
- prgwinmen1tx5 db "Exit",0 
-   
- prgwinmentx2 db "Edit",0 
- prgwinmen2tx1 db "Cut",0 
- prgwinmen2tx2 db "Copy",0 
- prgwinmen2tx3 db "Paste",0 
- prgwinmen2tx4 db "Delete",0 
- prgwinmen2tx5 db "Find...",0 
- prgwinmen2tx6 db "Find Again",0 
- prgwinmen2tx7 db "Replace...",0 
- prgwinmen2tx8 db "Go To...",0 
- prgwinmen2tx9 db "Select All",0 
- prgwinmen2txa db "Time/Date",0 
-   
- prgwinmentx3 db "Format",0 
- prgwinmen3tx1 db "Auto word wrap",0 
- prgwinmen3tx2 db "Settings...",0 
-   
- prgwinmentx4 db "View",0 
- prgwinmen4tx1 db "Status bar",0 
-   
- prgwinmentx5 db "?",0 
- prgwinmen5tx1 db "Index",0 
- prgwinmen5tx2 db "About Notepad...",0 
-   
- ;### ALERT BOXES ############################################################## 
-   
- prgtxtinf  dw prgtxtinf1,4*1+2,prgtxtinf2,4*1+2,prgtxtinf3,4*1+2,prgicnbig 
-   
- prgtxterr1  dw prgtxterra,4*1+2,prgtxterrb,4*1+2,prgtxtinf0,4*1+2 
- prgtxterr2  dw prgtxterrc,4*1+2,prgtxtinf0,4*1+2,prgtxtinf0,4*1+2 
- prgtxterr3  dw prgtxterrd,4*1+2,prgtxtinf0,4*1+2,prgtxtinf0,4*1+2 
- prgtxterr4  dw prgtxterre,4*1+2,prgtxterrf,4*1+2,prgtxtinf0,4*1+2 
-   
- prgtxtsav   dw prgtxtsav1,4*1+2,prgtxtinf0,4*1+2,prgtxtinf0,4*1+2 
-   
- prgtxtfnd   dw fndmsgtxt1,4*1+2,prgtxtinf0,4*1+2,prgtxtinf0,4*1+2 
- prgtxtrep   dw fndmsgtxt2a,4*1+2,prgtxtinf0,4*1+2,prgtxtinf0,4*1+2,prgicnbig 
- prgtxtmem   dw fndmsgtxt3a,4*1+2,fndmsgtxt3b,4*1+2,prgtxtinf0,4*1+2 
- prgtxtnum   dw fndmsgtxt4,4*1+2,prgtxtinf0,4*1+2,prgtxtinf0,4*1+2 
-   
- ;### CONFIG WINDOW ############################################################ 
-   
- cfgwindat   dw #1401,4+16,079,024,160,138,0,0,160,138,160,138,160,138,0,cfgwintit,0,0,cfgwingrp,0,0:ds 136+14 
- cfgwingrp   db 20,0:dw cfgwinobj,0,0,256*20+19,0,0,0 
- cfgwinobj 
-             dw     00,         0,2,          0,0,1000,1000,0        ;00=Hintergrund 
-             dw     00,255*256+ 3,cfgwindsc0, 00, 01, 80,59,0        ;01=Frame       "Font type" 
-             dw     00,255*256+41,fntselobj,  08, 10, 64,42,0        ;02=Font-List 
-             dw     00,255*256+ 3,cfgwindsc1, 80, 01, 80,59,0        ;03=Frame       "Font colour" 
-             dw     00,255*256+ 1,cfgwindsc6, 88, 12, 32, 8,0        ;04=Description "Pen" 
-             dw cfgcol,255*256+42,penselobj, 120, 11, 32,10,0        ;05=Pen-List 
-             dw     00,255*256+ 1,cfgwindsc7, 88, 24, 32, 8,0        ;06=Description "Paper" 
-             dw cfgcol,255*256+42,papselobj, 120, 23, 32,10,0        ;07=Paper-List 
-             dw     00,255*256+ 1,cfgwindsc8, 92, 40, 56, 8,0        ;08=Description "Preview" 
-             dw     00,255*256+ 3,cfgwindsc2, 00, 60,160,63,0        ;09=Frame       "Options" 
-             dw     00,255*256+18,cfgwinrad0, 08, 70,120, 8,0        ;10=Radiobox    "Word wrap at window border" 
-             dw     00,255*256+18,cfgwinrad1, 08, 81, 64, 8,0        ;11=Radiobox    "Word wrap at" 
-             dw     00,255*256+32,cfgwininp1, 73, 79, 26,12,0        ;12=Input       "Word wrap at" 
-             dw     00,255*256+ 1,cfgwindsc4,101, 81, 32, 8,0        ;13=Description "px" 
-             dw     00,255*256+18,cfgwinrad2, 08, 92, 64, 8,0        ;14=Radiobox    "No word wrap" 
-             dw     00,255*256+ 1,cfgwindsc3, 08,106, 32, 8,0        ;15=Description "Tab stop width" 
-             dw     00,255*256+32,cfgwininp2, 68,104, 16,12,0        ;16=Input       "Tab stop width" 
-             dw     00,255*256+ 1,cfgwindsc5, 86,106, 32, 8,0        ;17=Description "chars" 
-             dw cfgoky,255*256+16,prgtxtoky,  59,123, 48,12,0        ;18="Ok"    -Button 
-             dw diacnc,255*256+16,prgtxtcnc, 109,123, 48,12,0        ;19="Cancel"-Button 
-   
-   
- fntselobj   dw 8,0,fntsellst,0,1,fntselrow,0,1 
- fntselrow   dw 0,56,0,0 
- fntsellst   dw 00,fnttxtdef 
-             dw 01,fnttxtdef, 02,fnttxtdef, 03,fnttxtdef, 04,fnttxtdef, 05,fnttxtdef, 06,fnttxtdef, 07,fnttxtdef, 08,fnttxtdef 
-             dw 09,fnttxtdef, 10,fnttxtdef, 11,fnttxtdef, 12,fnttxtdef, 13,fnttxtdef, 14,fnttxtdef, 15,fnttxtdef, 16,fnttxtdef 
-   
- penselobj   dw 16,0,pensellst,0,1,penselrow,0,1 
- penselrow   dw 0,56,0,0 
- pensellst   dw 00,coltxt00, 01,coltxt01, 02,coltxt02, 03,coltxt03, 04,coltxt04, 05,coltxt05, 06,coltxt06, 07,coltxt07 
-             dw 08,coltxt08, 09,coltxt09, 10,coltxt10, 11,coltxt11, 12,coltxt12, 13,coltxt13, 14,coltxt14, 15,coltxt15 
-   
- papselobj   dw 16,0,papsellst,0,1,papselrow,0,1 
- papselrow   dw 0,56,0,0 
- papsellst   dw 00,coltxt00, 01,coltxt01, 02,coltxt02, 03,coltxt03, 04,coltxt04, 05,coltxt05, 06,coltxt06, 07,coltxt07 
-             dw 08,coltxt08, 09,coltxt09, 10,coltxt10, 11,coltxt11, 12,coltxt12, 13,coltxt13, 14,coltxt14, 15,coltxt15 
-   
- cfgwindsc0  dw cfgwintxt0,2+4 
- cfgwindsc1  dw cfgwintxt1,2+4 
- cfgwindsc2  dw cfgwintxt2,2+4 
- cfgwindsc3  dw cfgwintxt7,2+4 
- cfgwindsc4  dw cfgwintxt5,2+4 
- cfgwindsc5  dw cfgwintxt8,2+4 
- cfgwindsc6  dw cfgwintxt9,2+4 
- cfgwindsc7  dw cfgwintxta,2+4 
- cfgwindsc8  dw cfgwintxtb,256*194+16 
-   
- cfgwininp1  dw cfgwinbuf1,0,0,0,0,4,0 
- cfgwinbuf1  ds 5 
- cfgwininp2  dw cfgwinbuf2,0,0,0,0,2,0 
- cfgwinbuf2  ds 3 
-   
- cfgwinwrp   db 0 
- cfgwinradb  dw -1,-1 
- cfgwinrad0  dw cfgwinwrp,cfgwintxt3,256*0+2+4,cfgwinradb 
- cfgwinrad1  dw cfgwinwrp,cfgwintxt4,256*1+2+4,cfgwinradb 
- cfgwinrad2  dw cfgwinwrp,cfgwintxt6,256*2+2+4,cfgwinradb 
-   
- cfgdat 
- cfgdatpap   db 0    ;paper 
- cfgdatpen   db 1    ;pen 
- cfgdatfnt   db 0    ;font  
- cfgdatwrp   db 0    ;0=autowordwrap, 1=wordwrap at position x, 2=no wordwrap 
- cfgdatwps   dw 200  ;wordwrap-position (pixels) 
- cfgdattab   db 8    ;tabstop-position (chars) 
- cfgdatsta   db 1    ;flag, if statusbar 
-             ds 16-8 
-   
- cfgfntnum   db 0    ;number of fonts 
- cfgfntdat   ds 127  ;font information (offset table, names) 
-   
- ;### GOTO ##################################################################### 
-   
- gotwindat   dw #1401,4+16,090,060,120,34,0,0,120,34,120,34,120,34,0,gotwintit,0,0,gotwingrp,0,0:ds 136+14 
- gotwingrp   db 07,0:dw gotwinobj,0,0,256*07+06,0,0,3 
- gotwinobj 
-             dw     00,         0,2,          0,0,1000,1000,0        ;00=Hintergrund 
-             dw     00,255*256+ 1,gotwindsc1, 04, 06, 34, 8,0        ;01=Description "Line" 
-             dw     00,255*256+32,gotdatoln,  38, 04, 32,12,0        ;02=Input       "Line" 
-             dw     00,255*256+ 1,gotwindsc2, 04, 20, 34, 8,0        ;03=Description "Column" 
-             dw     00,255*256+32,gotdatocl,  38, 18, 32,12,0        ;04=Input       "Column" 
-             dw fndgot,255*256+16,prgtxtoky,  76, 04, 40,12,0        ;05="Ok"        -Button 
-             dw diacnc,255*256+16,prgtxtcnc,  76, 18, 40,12,0        ;06="Cancel"    -Button 
-   
- gotwindsc1  dw fndwintxt6,2+4 
- gotwindsc2  dw fndwintxt7,2+4 
- gotdatoln   dw gotdattln,0,1,0,1,4,0 
- gotdatocl   dw gotdattcl,0,1,0,1,5,0 
-   
- ;### FIND AND REPLACE ######################################################### 
-   
- fndwindat   dw #1401,4+16,060,060,240,46,0,0,240,46,240,46,240,46,0,fndwintit,0,0,fndwingrp,0,0:ds 136+14 
- fndwingrp   db 07,0:dw fndwinobj,0,0,256*07+06,0,0,3 
- fndwinobj 
-             dw     00,         0,2,          0,0,1000,1000,0        ;00=Hintergrund 
-             dw     00,255*256+ 1,fndwindsc1, 04, 06, 40, 8,0        ;01=Description "Find what" 
-             dw     00,255*256+32,fnddatofn,  60, 04,114,12,0        ;02=Input       "Find what" 
-             dw     00,255*256+17,fndwinchk1, 04, 24, 80, 8,0        ;03=Checkbox    "Match case" 
-             dw     00,255*256+17,fndwinchk2, 04, 34, 80, 8,0        ;04=Checkbox    "Whole word only" 
-             dw fndfok,255*256+16,prgtxtfnx, 182, 04, 54,12,0        ;05="Find next" -Button 
-             dw diacnc,255*256+16,prgtxtcnc, 182, 20, 54,12,0        ;06="Cancel"    -Button 
-   
- repwindat   dw #1401,4+16,060,060,240,70,0,0,240,70,240,70,240,70,0,repwintit,0,0,repwingrp,0,0:ds 136+14 
- repwingrp   db 11,0:dw repwinobj,0,0,256*11+09,0,0,3 
- repwinobj 
-             dw     00,         0,2,          0,0,1000,1000,0        ;00=Hintergrund 
-             dw     00,255*256+ 1,fndwindsc1, 04, 06, 40, 8,0        ;01=Description  "Find what" 
-             dw     00,255*256+32,fnddatofn,  60, 04,114,12,0        ;02=Input        "Find what" 
-             dw     00,255*256+ 1,fndwindsc2, 04, 20, 40, 8,0        ;03=Description  "Replace with" 
-             dw     00,255*256+32,fnddatorp,  60, 18,114,12,0        ;04=Input        "Replace with" 
-             dw     00,255*256+17,fndwinchk1, 04, 38, 80, 8,0        ;05=Checkbox     "Match case" 
-             dw     00,255*256+17,fndwinchk2, 04, 48, 80, 8,0        ;06=Checkbox     "Whole word only" 
-             dw     00,255*256+17,fndwinchk3, 04, 58, 80, 8,0        ;07=Checkbox     "Entire document" 
-             dw fndrok,255*256+16,prgtxtfnx, 182, 04, 54,12,0        ;08="Find next"  -Button 
-             dw fndral,255*256+16,prgtxtfra, 182, 20, 54,12,0        ;09="Replace all"-Button 
-             dw diacnc,255*256+16,prgtxtcnc, 182, 36, 54,12,0        ;10="Cancel"     -Button 
-   
- rplwindat   dw #1401,4+16,060,060,226,24,0,0,226,24,226,24,226,24,0,repwintit,0,0,rplwingrp,0,0:ds 136+14 
- rplwingrp   db 5,0:dw rplwinobj,0,0,256*5+3,0,0,2 
- rplwinobj 
-             dw     00,         0,2,          0,0,1000,1000,0        ;00=Hintergrund 
-             dw fndrok,255*256+16,prgtxtfnx,   2, 6, 54,12,0         ;01="Find next"  -Button 
-             dw fndrdr,255*256+16,prgtxtfrp,  58, 6, 54,12,0         ;02="Replace"    -Button 
-             dw fndrda,255*256+16,prgtxtfra, 114, 6, 54,12,0         ;03="Replace all"-Button 
-             dw diacnc,255*256+16,prgtxtcnc, 170, 6, 54,12,0         ;04="Cancel"     -Button 
-   
- fndwindsc1  dw fndwintxt1,2+4 
- fndwindsc2  dw fndwintxt2,2+4 
-   
- fndwinchk1  dw fnddatcas,fndwintxt3,2+4 
- fndwinchk2  dw fnddatwrd,fndwintxt4,2+4 
- fndwinchk3  dw fnddatall,fndwintxt5,2+4 
-   
- fnddatofn   dw fnddattfn,0,0,0,0,32,0 
- fnddatorp   dw fnddattrp,0,0,0,0,32,0 
- fnddatcas   db 0    ;flag, if case-sensitive 
- fnddatwrd   db 0    ;flag, if whole word only 
- fnddatall   db 0    ;flag, if entire document 
-   
- ;### MAIN WINDOW ############################################################## 
-   
- prgwindat   dw #7701,3,50,20,200,106,0,0,200,106,100,50,1000,1000,prgicnsml,prgwintit 
- prgwindat0  dw prgwinsta,prgwinmen,prgwingrp,0,0:ds 136+14 
-   
- prgwinmen  dw  5, 1+4,prgwinmentx1,prgwinmen1,0, 1+4,prgwinmentx2,prgwinmen2,0, 1+4,prgwinmentx3,prgwinmen3,0, 1+4,prgwinmentx4,prgwinmen4,0, 1+4,prgwinmentx5,prgwinmen5,0 
- prgwinmen1 dw  6, 1,prgwinmen1tx1,filnew,0, 1,prgwinmen1tx2,filopn,0, 1,prgwinmen1tx3,filsav,0, 1,prgwinmen1tx4,filsas,0, 1+8,0,0,0, 1,prgwinmen1tx5,prgend0,0 
- prgwinmen2 dw 12, 1,prgwinmen2tx1,edtcut,0, 1,prgwinmen2tx2,edtcop,0, 1,prgwinmen2tx3,edtpas,0, 1,prgwinmen2tx4,edtdel,0, 1+8,0,0,0,                1,prgwinmen2tx5,fndfnd,0 
-            dw     1,prgwinmen2tx6,fndfnx,0, 1,prgwinmen2tx7,fndrep,0, 1,prgwinmen2tx8,edtgot,0, 1+8,0,0,0,                1,prgwinmen2tx9,edtsal,0, 1,prgwinmen2txa,edttim,0 
- prgwinmen3 dw  2, 1,prgwinmen3tx1,cfgwrp,0, 1,prgwinmen3tx2,cfgopn,0 
- prgwinmen4 dw  1, 1,prgwinmen4tx1,cfgbar,0 
- prgwinmen5 dw  3, 1,prgwinmen5tx1,prghlp,0, 1+8,0,0,0, 1,prgwinmen5tx2,prginf,0 
-   
- prgwingrp   db 2,0:dw prgwinobj,prgwinclc,0,256*0+0,0,0,2 
- prgwinobj 
-             dw     00,255*256+00,8         ,0,0,0,0,0   ;00=Background 
-             dw edtchg,255*256+33,txtmulobj ,0,0,0,0,0   ;01=Editor 
-   
- prgwinclc 
-             dw   0,      0,  0,  0,1000,      0,1000,      0    ;Background 
-             dw   1,      0,  1,  0,  -2,256*1+1, -2,256*1+1     ;Editor 
-   
- txtmulobj   dw txtbufmem    ;texdatadr       equ 0           ;Zeiger auf Text 
-             dw 0            ;texdatbeg       equ 2           ;erstes angezeigtes Zeichen (nur singleline) 
-             dw 0            ;texdatpos       equ 4           ;Cursorposition im Gesamttext 
-             dw 0            ;texdatmrk       equ 6           ;0/Anzahl markierter Zeichen [neg->Cursor=Ende Markierung] 
-             dw 0            ;texdatlen       equ 8           ;Textlфnge 
-             dw txtbufmax    ;texdatmax       equ 10          ;maximal zulфssige Textlфnge (1-16383; exklusive 0-Terminator) 
-             db 4            ;texdatflg       equ 12          ;Flags (Bit0=Pa▀wort [nur singleline], Bit1=ReadOnly, Bit2=AltColor, Bit3=AltFont [nur multiline], Bit7=Text has been modified) 
-                             ;;** extended 16c/altfont 
-             db 0+16         ;texdatcol       equ 13          ;4bit txtpap, 4bit txtpen 
-             db 0            ;texdatrhm       equ 14          ;4bit rahmen1, 4bit rahmen2 (nur singleline) 
-             dw 0            ;texdatfnt       equ 15          ;Adresse des alternativen Fonts 
-             ds 1            ;texdatrs1       equ 17          ;*reserved 2byte* 
-                             ;;** ab hier nur Multiline 
-             dw 0            ;texdatlnt       equ 18          ;aktuelle Anzahl Zeilen 
-             dw -1           ;texdatxmx       equ 20          ;maximale Zeilenbreite in Pixeln bei Wordwrap-Pos-Vorgabe (-1=unbegrenzt) 
-             dw txtlinmax    ;texdatymx       equ 22          ;maximale Anzahl Zeilen (*2 bytes ab texdatlln!) 
-             dw -8           ;texdatxwn       equ 24          ;win y len ohne slider f№r bisherige formatierung (winx<>aktx -> Neuformatierung notwendig, durch -8 erzwingen) 
-             dw 0            ;texdatywn       equ 26          ;win y len ohne slider 
-                             ; 
-             dw txtmulobj    ;texdatzgr       equ 28          ;pointer auf diesen datensatz 
-             dw 120          ;texdatxfl       equ 30          ;full x len (=Lфnge der lфngsten Textzeile in Pixel) 
-             dw 80           ;texdatyfl       equ 32          ;full y len (=Anzahl aller Textzeilen * 8) 
-             dw 0            ;texdatxof       equ 34          ;offset x 
-             dw 0            ;texdatyof       equ 36          ;offset y 
-             db 1+2          ;texdatfg2       equ 38          ;Flags (Bit0=kein Auto-WordWrap [dann Xslider], Bit1=1) 
-             db 0            ;texdattab       equ 39          ;Tabstop GrЎ▀e (1-255; 0=kein Tabstop) 
-                             ; 
-             ds 4            ;texdatmsg       equ 40          ;Message-Buffer (in POS, MRK, out CXP, CYP) 
-             ds 4            ;texdatrs2       equ 44          ;*reserved 4byte* 
-             db 0            ;texdatlln       equ 48          ;Zeilen-Lфngentabelle (bit15=cr+lf am ende vorhanden, wird mitgezфhlt) 
- ;!!!last line in transfer-area!!! 
-   
- prgtrnend 
-