home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD1.mdf / forth / rbsrc / rb-view.scr < prev    next >
Text File  |  1988-05-09  |  41KB  |  1 lines

  1.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 \ Load Screen                                    09:18 04/12/88                                                                 : MARKER ;                                                      2 39 THRU 2 39 THRU                                             BSAVE OVERLAY RBVIEW                                            FORGET MARKER                                                   BYE                                                                                                                             2 39 THRU                                                       SCR-INIT                                                        SYSTEM-INIT                                                     0 RBVIEW                                                                                                                                                                                                                                                                                                                        \ Overlay Definition                             16:21 04/13/88                                                                 FORTH DEFINITIONS DECIMAL                                       BSTART OVERLAY                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  \ includes & dictionaries                        09:19 04/12/88 INCLUDE VIEW.DEF                                                INCLUDE FILES.DEF                                               INCLUDE FIELD.DEF                                                                                                               CREATE  W1.BUFF   MAX_REC_SZ ALLOT                              CREATE  W2.BUFF   MAX_REC_SZ ALLOT                              CREATE  W3.BUFF   MAX_REC_SZ ALLOT                              CREATE  ALT.BUFF  MAX_REC_SZ ALLOT                                                                                              DICTIONARY VIEW.DCT TEST.VW                                                                                                     DICTIONARY W1.DAT   NULL                                        DICTIONARY W2.DAT   NULL                                        DICTIONARY W3.DAT   NULL                                        DICTIONARY TITS.DCT NULL                                        \ windows                                        09:35 04/12/88                                                                 0 0 0 0 WINDOW WND1                                             0 0 0 0 WINDOW WND2                                             0 0 0 0 WINDOW WND3                                                                                                                                                                             0 EQU SEL.WND         0 EQU SEL.BUFF                            0 EQU CWINDOW         0 EQU CDETAIL                             0 EQU #SELECTOR       0 EQU #DETAIL                             0 EQU ?FILTER         0 EQU #FILTER                             0 EQU SEL.DAT         0 EQU ANCHOR                                                                                              DICTIONARY REL.DAT    NULL                                      DICTIONARY REL.DCT    NULL                                                                                                      \ constants                                      09:23 04/12/88                                                                 1 CONSTANT VERT                  \ vertical                     2 CONSTANT HORZ                  \ horizontal                   3 CONSTANT RGT                   \ right                        4 CONSTANT LFT                   \ left                         5 CONSTANT UPP                                                  6 CONSTANT DWN                                                  0 CONSTANT SELECTOR                                             1 CONSTANT DETAIL                                                                                                                                                                               CREATE FMT.PAD  200 ALLOT                                                                                                       CREATE  TYPES 0 C, 1 C, 1 C, 1 C, 2 C, 0 C, 3 C, 0 C, 0 C,                                                                      \ arrays                                         09:12 04/13/88                                                                 CREATE WNDS  WND1 , WND2 , WND3 ,                               CREATE BUFFS W1.BUFF , W2.BUFF , W3.BUFF ,                      CREATE DICTS W1.DAT , W2.DAT , W3.DAT ,                                                                                                                                                                                                                         : 'WNDS      ( # --- addr ) 2* WNDS + @  ;                                                                                      : 'BUFFS     ( # --- addr ) 2* BUFFS + @  ;                                                                                     : 'DICTS     ( # --- addr ) 2* DICTS + @  ;                                                                                                                                                                                                                     ( draw-horz                                    11:41 11/18/87 )                                                                 : DRAW-HORZ   VW.BUFF VW.1ST C@                                               HORZ = IF ?XY NIP                                                         79 1 ?DO I OVER FULLW NOR 196 WND-CHAR!                              LOOP DROP EXIT                                          THEN                                                   VW.BUFF VW.2ND C@  ?DUP IF                                      CASE                                                              RGT OF ?XY FULLW NOR 195 ?XY SWAP 78 SWAP    ENDOF              LFT OF ?XY FULLW NOR 180 ?XY SWAP 1          ENDOF            ENDCASE                                                         ?DO I OVER FULLW NOR 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 NOR 179 WND-CHAR!                               LOOP DROP EXIT                                 THEN                                                            VW.BUFF VW.2ND C@ ?DUP IF                                        CASE                                                              DWN OF ?XY FULLW NOR 194 ?XY 1+ 23 SWAP ENDOF                   UPP OF ?XY FULLW NOR 193 ?XY    1       ENDOF                 ENDCASE                                                           ?DO DUP I FULLW NOR 179 WND-CHAR! LOOP DROP                     WND-CHAR!                                                    THEN ;                                                                                                                                                                             \ draw-lines                                     14:08 04/06/88                                                                 : DRAW-LINES  VW.BUFF VW.CCOL C@ VW.BUFF VW.CROW C@ GOTOXY                    VW.BUFF VW.1ST C@                                               CASE                                                              VERT OF DRAW-VERTS DRAW-HORZ ENDOF                              HORZ OF DRAW-HORZ DRAW-VERTS ENDOF                            ENDCASE ;                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         \ vbox                                           11:27 04/13/88                                                                                                                                 : VBOX     OBOX DRAW-LINES ;                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    \ adj-len                                        12:53 04/13/88                                                                                                                                 : ADJ-LEN   ( length --- length )                                           #DETAIL 'WNDB W.#COLS C@                                        CDETAIL #DETAIL 'DETAILS DT.CL C@ - MIN ;                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           \ .date                                          10:38 04/13/88                                                                                                                                 : .DATE   ( cl rw --- )                                                   #DETAIL 'WNDS HIL CDETAIL #DETAIL 'DETAILS                      #DETAIL 'BUFFS SWAP DT.OFFSET @ + 2@                            SWAP 100 /MOD DROP SWAP 256 /MOD 100 * + 100 UM*                ROT 0 D+ <# # # 47 HOLD # # 47 HOLD # # #>                      ADJ-LEN SWAP WND-STR! ;                                                                                               : .YN     ( cl rw --- )                                                   #DETAIL 'WNDS HIL 3 ADJ-LEN CDETAIL #DETAIL 'DETAILS            #DETAIL 'BUFFS SWAP DT.OFFSET @ + C@ 3 *                        " No Yes" 1+ + WND-STR! ;                                                                                                                                                             \ .text                                          09:24 04/13/88                                                                                                                                 : .TEXT    ( cl rw --- )                                                   #DETAIL 'WNDS HIL CDETAIL #DETAIL 'DETAILS                      DUP DT.LEN C@ ADJ-LEN SWAP #DETAIL 'BUFFS SWAP                  DT.OFFSET @ + WND-STR! ;                                                                                                                                                             : .NUM     ( cl rw --- ) PAD 10 BLANK                                      #DETAIL 'WNDS HIL 2OVER 2OVER 10 ADJ-LEN PAD WND-STR!           CDETAIL #DETAIL 'DETAILS                                        #DETAIL 'BUFFS SWAP DT.OFFSET @ + 2@                            CDETAIL #DETAIL 'DETAILS DT.MS/LS @ 256 MOD                     <#NUM#> ADJ-LEN SWAP WND-STR! ;                                                                                      \ .details                                       09:15 04/13/88                                                                                                                                 : .details 15 0 ?DO                                                            I #DETAIL 'DETAILS DT.OFFSET @ IF                               I EQU CDETAIL                                                   CDETAIL #DETAIL 'DETAILS DUP DT.CL C@ SWAP DUP                  DT.RW C@ SWAP DT.TYPE C@ TYPES + C@                             CASE                                                              0 OF .TEXT ENDOF                                                1 OF .NUM  ENDOF                                                2 OF .DATE ENDOF                                                3 OF .YN   ENDOF                                              ENDCASE THEN                                                    LOOP ;                                                                                                           \ .details                                       09:13 04/13/88                                                                                                                                 : .DETAILS  VW.BUFF VW.#WNDS C@ 0                                           ?DO                                                               I 'WNDB W.VTYPE? C@ DETAIL =                                    IF I EQU #DETAIL ANCHOR #DETAIL 'WNDB W.FILE @                      = IF #SELECTOR 'BUFFS #DETAIL 'BUFFS                                 MAX_REC_SZ CMOVE ELSE                                     #DETAIL 'BUFFS SEL.BUFF #DETAIL 'WNDB W.ROFF                    @ + @ #DETAIL 'DICTS DICT-READ THEN                             .details THEN                                              LOOP ;                                                                                                                                                                                                                                              \ .actives                                       16:44 04/25/88                                                                 : .ACTIVES  ( --- ) #SELECTOR 'DICTS DUP D.NA @ SWAP                                D.LST-READ @ 1+ >R                          65 24 FULLW REV R> 0 <# 32 HOLD 102 HOLD 111 HOLD 32 HOLD #S #> DUP >R SWAP WND-STR! R> SWAP >R                                 65 + 24 FULLW REV R> 0 <# 32 HOLD #S #> SWAP WND-STR! ;                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         \ mov-text                                       10:02 04/12/88                                                                                                                                 : MOV-TEXT  ( #off #sel --- len )                                           SWAP FMT.PAD + SWAP DUP SEL.OFF @                               SEL.BUFF + ROT ROT SEL.LEN C@ DUP >R CMOVE                      R> ;                                                                                                                : MOV-NUM ( #off #sel --- len ) DUP SEL.MS/LS @ 256 /MOD SWAP             DUP IF 1+ THEN OVER 3 /MOD SWAP 0= + 0 MAX + + 1+ >R            SWAP R@ + SWAP DUP SEL.OFF @                                    SEL.BUFF + 2@ ROT SEL.MS/LS @ 256 MOD                           <#NUM#> ROT OVER 1- - FMT.PAD + SWAP CMOVE R> ;                                                                                                                                                                                                       \ mov-date                                       12:59 04/12/88                                                                 : MOV-DATE  ( #off 'sel --- len )                                           SWAP FMT.PAD + SWAP SEL.OFF @ SEL.BUFF + 2@                     SWAP 100 /MOD DROP SWAP 256 /MOD 100 * + 100 UM*                ROT 0 D+ <# # # 47 HOLD # # 47 HOLD # # #> ROT                  SWAP DUP >R CMOVE R> ;                                                                                                                                                              : MOV-YN    ( #off 'sel --- len )                                           SWAP FMT.PAD + SWAP SEL.OFF @ SEL.BUFF + C@ 3 *                 " No Yes" 1+ + SWAP 3 CMOVE 3 ;                                                                                                                                                                                                                                                                                     \ fmt-sline                                      10:09 04/12/88                                                                                                                                 : FMT-SLINE  ( cb --- len saddr ) DROP FMT.PAD 200 BLANK                     0 4 0 ?DO I 'SEL SEL.OFF @ 0<>                                  IF DUP I 'SEL DUP SEL.TYPE C@ TYPES + C@                           CASE                                                              0 OF MOV-TEXT  ENDOF                                            1 OF MOV-NUM   ENDOF                                            2 OF MOV-DATE  ENDOF                                            3 OF MOV-YN    ENDOF                                           ENDCASE 2+ +                                                THEN LOOP ( .DETAILS )                                          SEL.WND WINDOW-#COL C@ 2- MIN FMT.PAD ;                                                                                                                                            \ filter support                                 13:19 03/23/88                                                                 INCLUDE FILTER.DEF                                                                                                              CREATE MY.BUFF  SIZEOF FILTER 15 * ALLOT                        MY.BUFF SIZEOF FILTER 15 * ERASE                                                                                                : 'FLT.BUFF     SIZEOF FILTER * MY.BUFF + ;                                                                                     : FLT.CMP-TEXT  #FILTER 'FLT.BUFF DUP >R FLT.HOLD                               R@ FLT.SIZE @ SEL.BUFF R> FLT.OFFSET @ + OVER                   2DUP MAKEUC 2SWAP STRCMP ;                                                                                      : FLT.CMP-DNUM  #FILTER 'FLT.BUFF DUP >R FLT.HOLD 2@                            SEL.BUFF R> FLT.OFFSET @ + 2@ 2SWAP NUMCMP ;                                                                    \ compares                                       13:51 03/23/88                                                                 : LT      ( value --- t/f )                                               -1 = ;                                                : GT      ( value --- t/f )                                               1 = ;                                                 : EQ      ( value --- t/f )                                               0= ;                                                                                                                  CREATE CVECS  ] LT EQ GT [                                                                                                      : FLT.CMP-SNUM  #FILTER 'FLT.BUFF DUP >R FLT.HOLD @ 0                           SEL.BUFF R> FLT.OFFSET @ + @ 0 2SWAP NUMCMP ;                                                                   : FLT.CMP-BYTE  #FILTER 'FLT.BUFF DUP >R FLT.HOLD C@ 0                          SEL.BUFF R> FLT.OFFSET @ + C@ 0 2SWAP NUMCMP ;  \ filter compares                                08:07 03/24/88                                                                 : FLT.CMP-RELAT REL.DAT #FILTER 'FLT.BUFF FLT.RFILE# @                          DUP >R NAME>DAT REL.DCT R> NAME>DCT                             REL.DCT OPEN-DICTIONARY                                            ALT.BUFF #FILTER 'FLT.BUFF FLT.RFLD# @                          REL.DCT DICT-READ                                            REL.DCT CLOSE-DICTIONARY                                        ALT.BUFF FLD.OFFSET @ ALT.BUFF FLD.LENGTH @                     38 MIN REL.DAT OPEN-DICTIONARY                                    ALT.BUFF SEL.BUFF #FILTER 'FLT.BUFF FLT.OFFSET                  @ + @ REL.DAT DICT-READ                                       REL.DAT CLOSE-DICTIONARY                                        #FILTER 'FLT.BUFF FLT.HOLD SWAP ROT                             ALT.BUFF SWAP + OVER 2DUP MAKEUC STRCMP ;                                                                       \ <flt-cmp>                                      09:09 03/24/88                                                                 : <flt-cmp>   #FILTER 'FLT.BUFF FLT.TYPE C@                                   CASE                                                              0 OF FLT.CMP-TEXT    ENDOF                                      1 OF FLT.CMP-DNUM    ENDOF                                      3 OF FLT.CMP-RELAT   ENDOF                                      4 OF FLT.CMP-DNUM    ENDOF                                      6 OF FLT.CMP-BYTE    ENDOF                                    ENDCASE                                                         #FILTER 'FLT.BUFF FLT.OPER C@ 2* CVECS + PERFORM ;                                                                                                                                                                                                                                                                                                                                \ filter-cmp                                     13:54 03/23/88                                                                                                                                 : FILTER-CMP  ?FILTER                                                         IF -1                                                           15 0 DO                                                               I 'FLT.BUFF FLT.OFFSET @                                        IF I EQU #FILTER <flt-cmp> AND THEN                            LOOP                                                       ELSE                                                               NO.COND                                                      THEN ;                                                                                                                                                                                                                                                                                                            \ @filters                                       13:34 04/13/88                                                                 : @FILTERS  TITS.DCT #SELECTOR 'WNDB W.FILE @ NAME>DCT                      TITS.DCT OPEN-DICTIONARY                                        MY.BUFF TITS.DCT ?FILTER " RBEFILT" BRUN RBEFILT                FORGET OVERLAY EQU ?FILTER                                      TITS.DCT CLOSE-DICTIONARY ;                                                                                                                                                         : .FILT     51 24 FULLW REV                                                 ?FILTER                                                         IF " FILTER" ELSE "       " THEN WND-CSTR! ;                                                                                                                                                                                                                                                                        \ ordering stuff                                 09:33 05/05/88                                                                 07 07 08 25 WINDOW SORTW                                                                                                        DICTIONARY WRK.DCT NULL                                                                                                         ' NOOP ' NOOP 0 0 " NULL" INDEX SORT.IDX                                                                                                                                                        : ?INDEX  FLD.BUFF FLD.?IDX C@ ;                                                                                                ' ?INDEX WRK.DCT FLD.BUFF 0 FLD.NAME 20 DCT-CHOICE INDEXC                                                                       ' PCKEY ' FMT-SLINE                                             ' FILTER-CMP 0 0 0 0 DCT-CHOICE SELC                                                                                            \ sorted-order                                   17:07 05/04/88                                                                                                                                 : SORTED-ORDER ( --- )                                                         " Order by" NONE SINGLE SORTW OPEN-WINDOW                       WRK.DCT OPEN-DICTIONARY                                         SORTW INDEXC DCT-CHOOSE                                         WRK.DCT CLOSE-DICTIONARY                                        ?DUP IF 1- SORT.IDX ANCHOR ROT NAME>IDX                                 SORT.IDX 2 FOPEN DROP SORT.IDX                               ELSE SORT.IDX FCLOSE DROP SEL.DAT                               THEN SELC 5 + !                                            SORTW CLOSE-WINDOW ;                                                                                                                                                                                                                             \ do-select                                      10:14 04/12/88                                                                                                                                 : NKEY      .ACTIVES .DETAILS                                               PCKEY ?DUP DROP DUP 62 =                                        IF DROP @FILTERS                                                   ?FILTER 3DROP SEL.WND SELC DCT-SETUP                            .FILT 01 THEN                                                DUP 19 =                                                        IF DROP SORTED-ORDER                                               3DROP SEL.WND SELC DCT-SETUP 01 THEN ;                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           \ do-select                                      09:05 05/05/88                                                                                                                                 : DO-SELECT    ['] NKEY SELC 11 + !                                            SEL.DAT OPEN-DICTIONARY                                         SEL.WND SELC DCT-CHOOSE DROP                                    SEL.DAT CLOSE-DICTIONARY ;                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       \ tits                                           09:24 04/12/88                                                                                                                                                                                                 : TITS       PAD 80 BLANK                                                    0 24 FULLW REV 80 PAD WND-STR!                                  2 24 FULLW REV 30 VW.BUFF VW.DESCR WND-STR!                    40 24 FULLW REV " View"  WND-CSTR!                              60 24 FULLW REV " Item"  WND-CSTR! ;                                                                                                                                                                                                                                                                                                                                                                                                                                                                                \ redo                                       HS  14:43 12/18/87                                                                 : REDO:    20 0 ?DO                                                               FLD.BUFF FLD.NAME 19 I - + C@                                   126 33 ISSET                                                    IF ASCII : FLD.BUFF FLD.NAME 19 I 1- - + C!                        21 I - LEAVE                                                 THEN                                                          LOOP ;                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ( .titles                                      15:28 11/17/87 )                                                                 : .TITLES  TITS.DCT OPEN-DICTIONARY                                        15 0 ?DO                                                          I CDETAIL 'DETAILS DT.OFFSET @ IF                               FLD.BUFF I CDETAIL 'DETAILS DT.FLD# @ TITS.DCT                  DICT-READ                                                       I CDETAIL 'DETAILS DUP DT.CL C@ SWAP DT.RW C@                   CWINDOW NOR REDO: FLD.BUFF FLD.NAME WND-STR!                    FLD.BUFF FLD.NLEN C@ 2+ I CDETAIL 'DETAILS TUCK                 DT.CL C@ + SWAP DT.CL C! THEN                                 LOOP                                                            TITS.DCT CLOSE-DICTIONARY ;                                                                                                                                                                                                                          \ titles                                         14:29 04/18/88                                                                 : .FILES  VW.BUFF VW.#WNDS C@ 0 ?DO                                       FMT.PAD 10 BLANK                                                ASCII [ FMT.PAD C!                                              I 'DICTS HCB>N COUNT -PATH STRPCK -EXT                          COUNT TUCK FMT.PAD 1+ SWAP CMOVE                                DUP 1+ ASCII ] SWAP FMT.PAD + C! 2+                             I 'WNDS WINDOW-COL C@ 2+ SWAP                                   I 'WNDS WINDOW-ROW C@ SWAP                                      FULLW SWAP HIL SWAP FMT.PAD WND-STR! LOOP ;                                                                                                                                                                                                                                                                                                                                           \ details                                        13:46 04/12/88                                                                 : D.SETUP   VW.BUFF VW.#WNDS C@ 0 ?DO                                       I 'WNDB W.VTYPE? C@ DETAIL =                                    IF I 2* WNDS + @ EQU CWINDOW                                       I EQU CDETAIL                                                   TITS.DCT I 'WNDB W.FILE @ NAME>DCT                              I 'DICTS I 'WNDB W.FILE @ NAME>DAT                              .TITLES #SELECTOR 'WNDB W.FILE @ I 'WNDB W.FILE @               <> IF I 'DICTS OPEN-DICTIONARY THEN                          THEN LOOP ;                                                                                                         : VCLOSE   VW.BUFF VW.#WNDS C@ 0 ?DO                                       I 'DICTS HCB>H IF I 'DICTS CLOSE-DICTIONARY                                    THEN LOOP ;                                                                                           \ vw-setup                                       09:48 04/12/88                                                                                                                                 : VW-SETUP  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                      0 3 0 ?DO I 'WNDB W.VTYPE? C@ SELECTOR =                                  IF DROP I LEAVE THEN LOOP DUP                           EQU #SELECTOR DUP 'DICTS EQU SEL.DAT DUP                        SEL.DAT OVER 'WNDB W.FILE @ NAME>DAT                            WRK.DCT OVER 'WNDB W.FILE @ NAME>DCT                            'WNDS EQU SEL.WND                                               'BUFFS EQU SEL.BUFF                                             SEL.BUFF SELC 3 + !                                             SEL.DAT SELC 5 + !                                              SEL.DAT SORT.IDX IDX.'DCB ! ;                       \ @view                                          14:49 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 )                                           VIEW.DCT OPEN-DICTIONARY                                        " Actives Views" LISTL SINGLE VIEWW OPEN-WINDOW                 VIEWW VIEWC DCT-CHOOSE DUP                                      IF DUP VW.BUFF SWAP 1- VIEW.DCT DICT-READ THEN                  VIEW.DCT CLOSE-DICTIONARY                                       VIEWW CLOSE-WINDOW ;                                                                                                                                                                                                                                  \ rbview                                         09:25 04/12/88                                                                 : RBVIEW   ( #file --- ) DUP EQU ANCHOR                                    VIEW.DCT SWAP NAME>VIEW                                         @VIEW IF                                                               VW-SETUP                                                        CLS TITS VBOX -CUR D.SETUP .FILES                               DO-SELECT +CUR                                                  VCLOSE CLS                                                     THEN ;                                                                                                                                                                                                                                                                                                                                                                                                                                         \ Excises                                        16:54 04/13/88                                                                 EXCISE SEL.WND   SEL.BUFF                                       EXCISE CWINDOW   CDETAIL                                        EXCISE #SELECTOR #DETAIL                                        EXCISE ?FILTER   #FILTER                                        EXCISE SEL.DAT   ANCHOR