home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Power-Programmierung
/
CD1.mdf
/
forth
/
rbsrc
/
rb-eview.scr
< prev
next >
Wrap
Text File
|
1988-04-13
|
47KB
|
1 lines
( 23:06 02/22/87 ) ( Last change: Screen 008 hs 08:12 02/04/87 ) \ Load Screen E 11:13 04/11/88 : MARKER ; 2 45 THRU 2 45 THRU BSAVE OVERLAY RBEVIEW FORGET MARKER BYE \ Overlay Screen 16:48 04/13/88 FORTH DEFINITIONS DECIMAL BSTART OVERLAY ( variables -- window 10:16 02/09/87 ) VARIABLE 'HELP VARIABLE FILL-CHAR VARIABLE CURFILE 0 0 23 79 WINDOW CURRENTW \ current window 1 1 21 77 WINDOW VIRTUALW \ the work window 5 5 10 35 WINDOW FIELDW 0 0 0 0 WINDOW WND1 0 0 0 0 WINDOW WND2 0 0 0 0 WINDOW WND3 CREATE WNDS WND1 , WND2 , WND3 , ( constants 11:20 11/18/87 ) INCLUDE VIEW.DEF 1 CONSTANT VERT \ vertical 2 CONSTANT HORZ \ horizontal 3 CONSTANT RGT \ right 4 CONSTANT LFT \ left 5 CONSTANT UPP 6 CONSTANT DWN 0 EQU ANCHOR 0 EQU CDETAIL 0 EQU CSELECTOR 0 EQU DUMMY 0 CONSTANT SELECTOR 1 CONSTANT DETAIL \ 13:59 03/16/88 INCLUDE FIELD.DEF INCLUDE FILES.DEF INCLUDE LCGLOBAL.DEF DICTIONARY VIEW.DCT TEST.VW DICTIONARY WRK.DCT NULL DICTIONARY D1.DCT NULL DICTIONARY D2.DCT NULL VARIABLE #CHARS #CHARS OFF ( relative coords 09:21 10/21/87 ) ( -- col row ) : ?XY-WINDOW ?XY CURRENTW WINDOW-ROW C@ - >R CURRENTW WINDOW-COL C@ - R> ; ( col row -- addr len ) : RC->STR 100 * + S>D <# # # ASCII , HOLD # # #> ; : TITS PAD 80 BLANK 0 24 FULLW REV 80 PAD WND-STR! 2 24 FULLW REV 30 LC.BUFF LC.DESCR WND-STR! 45 24 FULLW REV " Design a View" WND-CSTR! ; ( coord 15:52 11/18/87 ) : COORD 70 24 FULLW REV ?XY RC->STR SWAP WND-STR! ; ( help-disp 11:36 02/10/87 ) : CLEAR VIRTUALW BOX-CLR 0 0 GOTOXY 32 FILL-CHAR ! 0 CURRENTW WINDOW-COL ! 0 0 ; ( char -- t/f ) : ISASCII 126 32 ISSET ; ( draw-horz 11:41 11/18/87 ) : DRAW-HORZ VW.BUFF VW.1ST C@ HORZ = IF ?XY NIP 79 1 ?DO I OVER FULLW HIL 196 WND-CHAR! LOOP DROP EXIT THEN VW.BUFF VW.2ND C@ ?DUP IF CASE RGT OF ?XY FULLW HIL 195 ?XY SWAP 78 SWAP ENDOF LFT OF ?XY FULLW HIL 180 ?XY SWAP 1 ENDOF ENDCASE ?DO I OVER FULLW HIL 196 WND-CHAR! LOOP DROP WND-CHAR! THEN ; \ draw-verts 14:07 04/06/88 : DRAW-VERTS VW.BUFF VW.1ST C@ VERT = IF ?XY DROP 23 1 ?DO DUP I FULLW HIL 179 WND-CHAR! LOOP DROP EXIT THEN VW.BUFF VW.2ND C@ ?DUP IF CASE DWN OF ?XY FULLW HIL 194 ?XY 1+ 23 SWAP ENDOF UPP OF ?XY FULLW HIL 193 ?XY 1 ENDOF ENDCASE ?DO DUP I FULLW HIL 179 WND-CHAR! LOOP DROP WND-CHAR! THEN ; \ draw-lines 14:08 04/06/88 : DRAW-LINES VW.BUFF VW.1ST C@ CASE VERT OF DRAW-VERTS DRAW-HORZ ENDOF HORZ OF DRAW-HORZ DRAW-VERTS ENDOF ENDCASE ; ( down 11:40 11/18/87 ) : UP ?XY-WINDOW NIP 1 = IF ERRTONE 00 00 ELSE 00 -1 THEN ; : DOWN ?XY-WINDOW NIP CURRENTW WINDOW-#ROW C@ 1- = IF ERRTONE 00 00 ELSE 00 01 THEN ; ( right & left 11:51 02/09/87 ) : RIGHT ?XY-WINDOW DROP 1 = IF ERRTONE 00 00 ELSE -1 00 THEN ; : LEFT ?XY-WINDOW DROP CURRENTW WINDOW-#COL C@ 1- = IF ERRTONE 00 00 ELSE 01 00 THEN ; ( clear mark & set mark 09:58 11/12/87 ) : CLR-MARK ?XY DUP 0 SWAP FULLW NOR 32 WND-CHAR! 79 SWAP FULLW NOR 32 WND-CHAR! DUP 0 FULLW NOR 32 WND-CHAR! 23 FULLW NOR 32 WND-CHAR! ; : SET-MARK ?XY DUP 0 SWAP FULLW NOR 16 WND-CHAR! 79 SWAP FULLW NOR 17 WND-CHAR! DUP 0 FULLW NOR 31 WND-CHAR! 23 FULLW NOR 30 WND-CHAR! ; \ go-v 14:14 03/16/88 : @1ST VW.BUFF VW.1ST C@ ; : @2ND VW.BUFF VW.2ND C@ ; : GO-V VERT VW.BUFF VW.1ST C! 0 VW.BUFF VW.2ND C! 0 0 ; : GO-H HORZ VW.BUFF VW.1ST C! 0 VW.BUFF VW.2ND C! 0 0 ; : DO-RGT @1ST VERT = IF RGT VW.BUFF VW.2ND C! THEN 0 0 ; : DO-LFT @1ST VERT = IF LFT VW.BUFF VW.2ND C! THEN 0 0 ; : DO-UP @1ST HORZ = IF UPP VW.BUFF VW.2ND C! THEN 0 0 ; : DO-DWN @1ST HORZ = IF DWN VW.BUFF VW.2ND C! THEN 0 0 ; : !2ND VW.BUFF VW.2ND C! 0 0 ; : !1ST VW.BUFF VW.1ST C! 0 0 ; ( process hs 08:12 02/04/87 ) : PROCESS PCKEY ?DUP 0= IF 100 + THEN CASE 168 OF -1 00 00 ENDOF ( f10 f1 ) 159 OF 0 0 0 ENDOF 27 OF 0 00 00 ENDOF ( esc U ) 85 OF 0 DO-UP ENDOF 72 OF 0 GO-H ENDOF ( H D ) 68 OF 0 DO-DWN ENDOF 172 OF 0 UP ENDOF ( up dw ) 180 OF 0 DOWN ENDOF 177 OF 0 LEFT ENDOF ( lft rg ) 175 OF 0 RIGHT ENDOF 76 OF 0 DO-LFT ENDOF ( L V ) 86 OF 0 GO-V ENDOF 78 OF 0 0 !2ND ENDOF ( N R ) 82 OF 0 DO-RGT ENDOF 0 SWAP 0 SWAP 0 SWAP ENDCASE CLR-MARK ?XY ROT + >R + R> GOTOXY COORD SET-MARK VIRTUALW BOX-CLR DRAW-LINES ; ( mode choice 16:42 10/27/87 ) : MODES " Create Modify cUstomize print List" ; MODES 3 10 10 CHOICE MODEC \ operation mode 3 2 4 14 WINDOW MODEW \ mode window : @MODE " DataBases" NONE SINGLE MODEW OPEN-WINDOW MODEW MODEC CHOOSE MODEW CLOSE-WINDOW CASE 0 OF 0 ENDOF 1 OF NOOP -1 ENDOF 2 OF NOOP -1 ENDOF ENDCASE ; \ screen labels 10:39 04/06/88 : !WND-XY ( cl row baddr ---- ) SWAP DUP 1 = IF DROP 0 THEN SWAP DUP ROT SWAP W.RW C! W.CL C! ; : SCR#1 1 0 0 'WNDB !WND-XY 1 1 FULLW REV " One " WND-CSTR! 1 VW.BUFF VW.#WNDS C! ; : SCR#2 ( offc offr col rw -- ) 2DUP 1 'WNDB !WND-XY ROT + -ROT + SWAP FULLW REV " Two " WND-CSTR! 2 VW.BUFF VW.#WNDS C! ; : SCR#3 ( offc offr col rw -- ) 2DUP 2 'WNDB !WND-XY ROT + -ROT + SWAP FULLW REV " Three " WND-CSTR! 3 VW.BUFF VW.#WNDS C! ; \ h.scr2&3 10:33 04/06/88 : H.SCR2&3 VW.BUFF VW.1ST C@ HORZ = IF VW.BUFF VW.2ND C@ CASE 0 OF 0 2 ?XY NIP 0 SWAP SCR#2 ENDOF UPP OF 2 0 ?XY DROP 1 SCR#2 1 2 ?XY NIP 0 SWAP SCR#3 ENDOF DWN OF 1 2 ?XY NIP 0 SWAP SCR#2 2 2 ?XY SCR#3 ENDOF ENDCASE THEN ; \ v.scr2&3 09:01 04/06/88 : V.SCR2&3 VW.BUFF VW.1ST C@ VERT = IF VW.BUFF VW.2ND C@ CASE 0 OF 2 0 ?XY DROP 0 SCR#2 ENDOF RGT OF 2 1 ?XY DROP 0 SCR#2 2 2 ?XY SCR#3 ENDOF LFT OF 2 1 ?XY DROP 0 SCR#2 0 2 ?XY NIP 0 SWAP SCR#3 ENDOF ENDCASE THEN ; : LABEL-SCR SCR#1 H.SCR2&3 V.SCR2&3 ; : ?QA ?XY SWAP 1- SWAP ; \ areas 14:16 04/06/88 : RCNONE @1ST HORZ = IF ?QA NIP DUP 0 'WNDB W.#ROWS C! 23 SWAP - 1 'WNDB W.#ROWS C! THEN @1ST VERT = IF ?QA DROP DUP 0 'WNDB W.#COLS C! 78 SWAP - 1 'WNDB W.#COLS C! THEN ; : RCUPP ?QA 0 'WNDB W.#ROWS C! 0 'WNDB W.#COLS C! ?QA 1 'WNDB W.#ROWS C! 78 SWAP - 1 'WNDB W.#COLS C! ?QA NIP 23 SWAP - 2 'WNDB W.#ROWS C! ; : RCDWN ?QA NIP 0 'WNDB W.#ROWS C! ?QA 23 SWAP - DUP 1 'WNDB W.#ROWS C! 2 'WNDB W.#ROWS C! DUP 1 'WNDB W.#COLS C! 78 SWAP - 2 'WNDB W.#COLS C! ; \ areas 14:16 04/06/88 : RCRGT ?QA DROP 0 'WNDB W.#COLS C! ?QA 1 'WNDB W.#ROWS C! 78 SWAP - DUP 1 'WNDB W.#COLS C! 2 'WNDB W.#COLS C! ?QA NIP 23 SWAP - 2 'WNDB W.#ROWS C! ; : RCLFT ?QA 0 'WNDB W.#ROWS C! DUP 0 'WNDB W.#COLS C! 2 'WNDB W.#COLS C! ?QA 23 SWAP - 2 'WNDB W.#ROWS C! 78 SWAP - 1 'WNDB W.#COLS C! ; \ finished 08:16 04/06/88 : FINISHED ?XY VW.BUFF VW.CROW C! VW.BUFF VW.CCOL C! LABEL-SCR 23 78 2DUP 0 'WNDB W.#COLS C! 0 'WNDB W.#ROWS C! 2DUP 1 'WNDB W.#COLS C! 1 'WNDB W.#ROWS C! 2 'WNDB W.#COLS C! 2 'WNDB W.#ROWS C! @2ND CASE 0 OF RCNONE ENDOF UPP OF RCUPP ENDOF DWN OF RCDWN ENDOF RGT OF RCRGT ENDOF LFT OF RCLFT ENDOF ENDCASE ; \ woowoo 10:10 04/11/88 : WOOWOO ( --- ) 0 'WNDB W.#COLS WND1 WINDOW-#COL 4 CMOVE 1 'WNDB W.#COLS WND2 WINDOW-#COL 4 CMOVE 2 'WNDB W.#COLS WND3 WINDOW-#COL 4 CMOVE ; \ 12:25 04/06/88 : .SHOWXY ( buff --- ) DUP W.RW C@ . SPACE DUP W.CL C@ . SPACE DUP W.#ROWS C@ . SPACE W.#COLS C@ . SPACE ; : .P CR ." Wnd1= " 0 'WNDB .SHOWXY CR ." Wnd2= " 1 'WNDB .SHOWXY CR ." Wnd3= " 2 'WNDB .SHOWXY CR ; \ testit 09:12 04/07/88 DICTIONARY T.DAT LOCUS\QF#2.DAT ' NO.COND T.DAT WRK.BUFF 1 25 DCT-CHOICE TESTC : TESTIT T.DAT OPEN-DICTIONARY 0 3 0 ?DO I 'WNDB W.VTYPE? C@ SELECTOR = IF DROP I LEAVE THEN LOOP 2* WNDS + @ DUP WND-CLR TESTC DCT-CHOOSE DROP T.DAT CLOSE-DICTIONARY ; \ @selector 08:26 04/07/88 : wnds " One Two Three " ; wnds 3 10 10 CHOICE TC 5 5 4 15 WINDOW SELW : @SELECTOR " Selector in" NONE DOUBLE SELW OPEN-WINDOW VW.BUFF VW.#WNDS C@ TC 2+ ! BEGIN SELW TC CHOOSE ?DUP UNTIL SELW CLOSE-WINDOW 1- DUP EQU CSELECTOR SELECTOR OVER 'WNDB W.VTYPE? C! ANCHOR SWAP 'WNDB W.FILE C! ; \ sel-lne.bld 13:24 04/07/88 CREATE FMT.PAD 40 ALLOT : scan.lne ( --- 0-3 for offset, -1 for not found ) -1 4 0 ?DO FLD.BUFF FLD.OFFSET @ I 'SEL SEL.OFF @ = IF DROP I LEAVE THEN LOOP ; : new-fmt ( cb --- len addr ) DROP FMT.PAD 40 BLANK FLD.BUFF FLD.NAME FMT.PAD 1+ 20 CMOVE scan.lne DUP -1 <> IF 0 <# # #> FMT.PAD 27 + SWAP CMOVE ELSE DROP THEN 30 FMT.PAD ; \ new-key 11:06 04/12/88 : new-key PCKEY DUP 13 = IF DROP FLD.BUFF FLD.TYPE C@ 3 <> IF 0 4 0 ?DO I 'SEL SEL.OFF @ 0= IF DROP I 1+ LEAVE THEN LOOP ?DUP IF 1- 'SEL FLD.BUFF FLD.OFFSET @ OVER SEL.OFF ! FLD.BUFF FLD.TYPE C@ OVER SEL.TYPE C! FLD.BUFF FLD.LENGTH C@ OVER SEL.LEN C! FLD.BUFF FLD.MS/LS @ SWAP SEL.MS/LS ! THEN THEN 80 THEN ; \ @fld 13:43 04/07/88 ' new-key ' new-fmt ' NO.COND WRK.DCT FLD.BUFF 0 0 DCT-CHOICE TESTC : @SEL-FLDS " Selector Line" LISTL SINGLE FIELDW OPEN-WINDOW FIELDW TESTC DCT-CHOOSE DROP FIELDW CLOSE-WINDOW ; \ free-det 14:52 04/11/88 : ?FREE-DET ( --- 1-15 for slot, 0 for nothing ) 0 15 0 ?DO I CDETAIL 'DETAILS DT.OFFSET @ 0= IF DROP I 1+ LEAVE THEN LOOP ; ' NO.COND D1.DCT FLD.BUFF 0 FLD.NAME 20 DCT-CHOICE FLDC \ @field 13:34 04/11/88 : @FIELD " Fields" LISTL DOUBLE FIELDW OPEN-WINDOW -CUR FIELDW FLDC DCT-CHOOSE FIELDW CLOSE-WINDOW +CUR IF FLD.BUFF FLD.TYPE C@ 3 <> IF \ no relationships ?FREE-DET ?DUP IF 1- CDETAIL 'DETAILS D1.DCT D.LST-READ @ OVER DT.FLD# ! FLD.BUFF FLD.TYPE C@ OVER DT.TYPE C! FLD.BUFF FLD.OFFSET @ OVER DT.OFFSET ! FLD.BUFF FLD.LENGTH C@ OVER DT.LEN C! FLD.BUFF FLD.MS/LS @ OVER DT.MS/LS ! ?XY-WINDOW ROT TUCK DT.RW C! DT.CL C! FLD.BUFF FLD.NLEN C@ 0 ?DO FLD.BUFF FLD.NAME I + C@ EMIT LOOP THEN THEN THEN 0 0 ; \ lc/cr 14:28 04/11/88 : HOME ?XY-WINDOW DROP 1- NEGATE 0 ; ( -- cl-off rw-off ) : LF/CR HOME DROP DOWN NIP ; \ dproc hs 0 13:15 04/11/88 : DPROC PCKEY ?DUP 0= IF 100 + THEN CASE 168 OF -1 00 00 ENDOF ( f10 f1 ) 159 OF 0 0 0 ENDOF 27 OF 0 00 00 ENDOF ( esc f2 ) 160 OF 0 @FIELD ENDOF 13 OF 0 LF/CR ENDOF ( ) 171 OF 0 HOME ENDOF 172 OF 0 UP ENDOF ( up dw ) 180 OF 0 DOWN ENDOF 177 OF 0 LEFT ENDOF ( lft rg ) 175 OF 0 RIGHT ENDOF 032 OF 0 LEFT ENDOF 0 SWAP 0 SWAP 0 SWAP ENDCASE ?XY ROT + >R + R> GOTOXY COORD ; \ ?dvalid 14:57 04/12/88 : ?DVALID ( #file --- t/f ) DUP ANCHOR = IF DROP -1 EXIT THEN 0 WRK.DCT D.HU @ 0 ?DO FLD.BUFF I WRK.DCT DICT-READ FLD.BUFF FLD.TYPE C@ 3 = IF FLD.BUFF FLD.RELATION @ 2 PICK = IF FLD.BUFF FLD.OFFSET @ CDETAIL 'WNDB W.ROFF ! -1 LEAVE THEN THEN LOOP NIP ; \ @detail 15:08 04/12/88 : @detail ( #wnd --- file+1, or 0 ) BEGIN DUP 16 * " Wnd #1 -- DetailWnd #2 -- DetailWnd #3 -- Detail" 1+ + 16 STRPCK @ACTIVES ?DUP 0= IF 0 -1 ELSE 1- DUP ?DVALID IF 1+ -1 ELSE DROP 0 THEN THEN UNTIL NIP ; \ @det-file 10:43 04/11/88 : @DET-FILE ( #wnd --- ) DUP @detail ?DUP IF 1- D1.DCT OVER NAME>DCT OVER 'WNDB W.FILE ! 'WNDB W.#COLS CURRENTW WINDOW-#COL 4 CMOVE CURRENTW WND-CLR 1 1 CURRENTW WND-GOTOXY D1.DCT OPEN-DICTIONARY BEGIN DPROC UNTIL D1.DCT CLOSE-DICTIONARY ELSE DROP THEN ; \ @detail 10:18 04/11/88 : @DETAILS VW.BUFF VW.#WNDS C@ 0 ?DO I 'WNDB W.VTYPE? C@ DETAIL = IF I EQU CDETAIL I @DET-FILE THEN LOOP ; \ vwinit 08:50 04/07/88 : VWINIT VW.BUFF SIZEOF VIEW ERASE WRK.DCT ANCHOR NAME>DCT 3 0 ?DO DETAIL I 'WNDB W.VTYPE? C! ANCHOR I 'WNDB W.FILE C! LOOP ; 5 5 4 45 WINDOW INFW : @DESCR " View Description" EDITL SINGLE INFW OPEN-WINDOW 2 2 INFW NOR " Description:" WND-CSTR! 15 2 INFW VW.BUFF VW.DESCR 30 @STRING DROP INFW CLOSE-WINDOW ; ( view-add 10:19 11/17/87 ) : VIEW-ADD VWINIT @DESCR CLS TITS WRK.DCT OPEN-DICTIONARY 1 1 CURRENTW WND-GOTOXY SET-MARK DRAW-LINES 0 FLD.BUFF FLD.FLG C! -CUR BEGIN PROCESS UNTIL +CUR FINISHED WOOWOO @SELECTOR @SEL-FLDS @DETAILS VW.BUFF VIEW.DCT ADD-ITEM DROP CLR-MARK +CUR CLS WRK.DCT CLOSE-DICTIONARY ; \ @view 14:14 04/13/88 3 3 10 35 WINDOW VIEWW ' NO.COND VIEW.DCT VW.BUFF 0 VW.DESCR 30 DCT-CHOICE VIEWC : @VIEW ( --- 0/none,view+1 ) " Actives Views" LISTL SINGLE VIEWW OPEN-WINDOW VIEWW VIEWC DCT-CHOOSE VIEWW CLOSE-WINDOW ; : VIEW-DEL ( --- ) @VIEW ?DUP IF 1- VIEW.DCT DEL-ITEM THEN ; \ @mode 14:21 04/13/88 : MODES " Create Delete " ; MODES 2 10 10 CHOICE MODEC \ operation mode 3 2 4 14 WINDOW MODEW \ mode window : @MODE " Views" NONE SINGLE MODEW OPEN-WINDOW MODEW MODEC CHOOSE MODEW CLOSE-WINDOW ; \ rbeview 14:18 04/13/88 : RBEVIEW ( --- ) " View Maintenance" @ACTIVES ?DUP IF 1- EQU ANCHOR VIEW.DCT ANCHOR NAME>VIEW VIEW.DCT OPEN-DICTIONARY @MODE CASE 1 OF VIEW-ADD ENDOF 2 OF VIEW-DEL ENDOF ENDCASE VIEW.DCT CLOSE-DICTIONARY THEN ; \ Excises 16:50 04/13/88 EXCISE ANCHOR CDETAIL EXCISE CSELECTOR DUMMY