Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Manual for OLD FIG-FORTH editor, anyone?

146 views
Skip to first unread message

n...@eta.chalmers.se

unread,
Nov 23, 2008, 7:33:59 AM11/23/08
to
Hi,
Just for fun, I've downloaded one public available Forth for PDP-11, I
run it in an emulator for the moment...

Below, I include the first part of the assembler source for the
interpreter, dated Jan 1980.

I've got FORTH "up and running", quite easilly, using an RSX11M-PLUS
operating system in the SIMH emulator.

But when I try to edit some screens, I realize the included editor
does not confirm to the editor of "Starting Forth". I've printed out
the 4 screens that define the editor (and also attached them to this
question), and started to "reverse engineer" it, but as I'm NOT an
experienced Forth programmer, it takes it's time, and is more close to
guessing than to really reading the code and realizing... To get it
running, I've found out that I need to start with: 7 LOAD 8 LOAD 9
LOAD 10 LOAD to get the editor into the dictionary, thereafter I can
edit a screen by, for example, 65 EDIT. I guess leaving the editor
would be with the command EX, that would save the edited page. I've
not located any "quit"-command...

Is there anyone that can point to a manual of this dinosaur? Or is
there possibly anyone that could make such a manual or instructions
available? I could make it publically available, along with the source
itslef, if I get one mailed and You find publication apropriate, or I
could keep the information for myself (but most likely will I later be
writing some documentation to publish "by myself", anyhow.)

Btw, I've asked for a copy of some "freeware CD's" that should,
amongst all, include a slightly newer version of a FIG-Forth for these
systems, but until that arrives here, I'll try to play a little with
this toy. Hopefully, I'll be able to pick up some knowledge from it.

Her's first the "source header", there it comes the 4 screens of
editor code.

All thanks in advance /Göran
================================================================
.TITLE F.I.G.
; ****************************************************************
;
; PDP-11 FORTH INTRODUCTION PDP-11 FORTH
;
; ****************************************************************
;
;
;
; PDP-11 FORTH RT-11, RSX-11M, AND STAND-ALONE JANUARY 1980
;
;
;
; DEVELOPED BY THE
; FORTH INTEREST GROUP / FORTH IMPLEMENTATION TEAM
; P.O. BOX 1105
; SAN CARLOS, CA. 94070
;
;
; IMPLEMENTED BY
; JOHN S. JAMES
; P.O. BOX 348
; BERKELEY, CA. 94701
;
;
; THIS SYSTEM IS IN THE PUBLIC DOMAIN AND CAN BE USED
; WITHOUT RESTRICTION. PLEASE CREDIT THE FORTH INTEREST
; GROUP IF YOU REPUBLISH SUBSTANTIAL PORTIONS.
;
;
; THE FORTH INTEREST GROUP / FORTH IMPLEMENTATION TEAM
; ALSO HAS DEVELOPED NEARLY IDENTICAL VERSIONS OF THIS
; SYSTEM FOR THE
; 8080
; 6800
; 6502
; 9900
; PACE
;
;
; FOR MORE INFORMATION, WRITE:
;
; JOHN S. JAMES
; P.O. BOX 348
; BERKELEY, CA. 94701
;
; OR
;
; FORTH INTEREST GROUP
; P.O. BOX 1105
; SAN CARLOS, CA. 94070
;
;
; 'PDP' AND 'RSX' ARE TRADEMARKS OF DIGITAL EQUIPMENT CORPORATION.
.PAGE
; THIS FORTH SYSTEM HAS
; - FULL LENGTH NAMES
; - EXTENSIVE COMPILE-TIME CHECKS AND ERROR MESSAGES
; - DOUBLE INTEGER I/O
; - A FORTH ASSEMBLER, PERMITTING STRUCTURED, INTERACTIVE
; DEVELOPMENT OF DEVICE HANDLERS, SPEED-CRITICAL
; ROUTINES, AND LINKAGE TO OPERATING SYSTEMS OR TO
; SUBROUTINE PACKAGES WRITTEN IN OTHER LANGUAGES.
; - STRING-HANDLING ROUTINES
; - A STRING-SEARCH EDITOR
; - LINKED VOCABULARIES
; - HOOKS FOR MULTITASKING/MULTIUSER (CURRENTLY SINGLE TASK)
; - AND AS CURRENTLY CONFIGURED IT RUNS IN A 24K BYTE
; TASK IMAGE (THIS INCLUDES BUFFERS, OPERATING-SYSTEM
; AREA, AND ROOM FOR SUBSTANTIAL ADDITIONAL FORTH
; PROGRAMMING) ON ANY PDP-11 OR LSI-11 CPU, WITH OR
; WITHOUT HARDWARE MULTIPLY/DIVIDE. THIS DISKETTE
; WILL BOOT AND RUN STAND-ALONE; ALSO IT CONTAINS A
; SOURCE PROGRAM WHICH CAN BE ASSEMBLED TO RUN
; UNDER RT-11, RSX-11M, OR STAND-ALONE. THIS SYSTEM
; CAN BE MODIFIED TO INTERFACE WITH ANY OTHER OPERATING
; SYSTEM WHICH SUPPORTS READ AND WRITE A CHARACTER,
; DETECT A CHARACTER (OPTIONAL), AND READ AND WRITE
; A DISK BLOCK.
;
;
; IT IS ALIGNED WITH THE 1978 STANDARD OF THE FORTH INTERNATIONAL
; STANDARDS TEAM.
;
;
;
; RECOMMENDED DOCUMENTATION:
; - A FORTH LANGUAGE MANUAL. WE PARTICULARLY RECOMMEND EITHER
; (A) 'USING FORTH', BY FORTH, INC.
; OR
; (B) 'A FORTH PRIMER', BY W. RICHARD STEVENS, KITT
; PEAK NATIONAL OBSERVATORY.
; EITHER IS AVAILABLE THROUGH THE FORTH INTEREST GROUP,
; P.O. BOX 1105, SAN CARLOS, CA. 94070.
; - PDP-11 FORTH USER'S GUIDE, AVAILABLE FROM JOHN S. JAMES,
; ADDRESS ABOVE.
; - FORTH REFERENCE CARD FOR THE FORTH IMPLEMENTATION TEAM
; COMMON MODEL, AVAILABLE FROM FIG.
; - 'FIG-FORTH INSTALLATION MANUAL', ALSO FROM FIG.
;
;
;
; ACKNOWLEDGMENTS:
; THIS FORTH SYSTEM (IN 'FORTH.MAC') IS A GROUP PRODUCT
; OF THE FORTH IMPLEMENTATION TEAM OF THE FORTH INTEREST
; GROUP (P.O. BOX 1105, SAN CARLOS CA. 94070). THE IMPLEMENTER
; IS RESPONSIBLE FOR THIS PDP-11 VERSION OF THE MODEL, AND FOR
; THE SOFTWARE ON SCREENS IN 'FORTH.DAT'. ALTHOUGH THE LATTER
; IS NOT AN OFFICIAL RELEASE OF THE F.I.G., THE CONTRIBUTIONS
; FROM MEMBERS OF THE GROUP ARE TOO NUMEROUS TO CITE
; INDIVIDUALLY.
; IN ADDITION WE APPRECIATE THE PDP-11 CODING
; IMPROVEMENTS SUGGESTED BY STUART R. DOLE, DOLE & FARMER,
; PO BOX 142, PETALUMA, CA. 94952; BY PAUL EDELSTEIN;
; BY RICK STEVENS OF KITT PEAK; AND OTHERS.
================================================================
7 list

SCR # 7
0 ( EDITOR - SET-UP)
1 VOCABULARY EDITOR IMMEDIATE 0 VARIABLE ESCR DECIMAL
2 0 VARIABLE CURSOR 0 VARIABLE STACKPTR : STK SP@ STACKPTR ! ;
3 : #ARGS ( ->N ) SP@ STACKPTR @ SWAP - 2 / 0 MAX ;
4 : E ESCR @ BLOCK DROP [COMPILE] EDITOR STK ;
5 : EDIT -DUP IF ESCR ! 0 CURSOR ! E ELSE ." ERR 0 ARG" ENDIF ;
6 EDITOR DEFINITIONS
7 : EX FLUSH [COMPILE] FORTH ;
8 ( THE FOLLOWING ARE UTILITY ROUTINES FOR LATER DEFINITIONS.)
9 : GETWORD ( -> ) 1 WORD HERE 1+ C@ 0= IF 0 HERE C! ENDIF ;
10 : GETPAD ( -> ) GETWORD HERE PAD 65 CMOVE ;
11 : RANGE ( -> ) CURSOR @ 0 MAX 1023 MIN CURSOR ! ;
12 : CURSADDR ( -> ADDR ) ESCR @ BLOCK UPDATE CURSOR @ + ;
13 : CLINE ( -> POSITION ) CURSOR @ 64 MOD ;
14 : LINEADDR ( -> ADDR ) CURSADDR CLINE - ;
15 : NLINE ( -> LINE# ) CURSOR @ 64 / ;
OK
8 list

SCR # 8
0 ( EDITOR - OPERATIONS)
1 : LDEFAULT ( N? -> N ) #ARGS IF 64 * CURSOR ! RANGE ENDIF ;
2 : 1DEFAULT ( N? -> N ) #ARGS 0= IF 1 ENDIF ;
3 : NEW LDEFAULT 16 NLINE DO CR QUERY GETPAD PAD 1+ C@ 32 <
4 IF LEAVE ELSE LINEADDR 64 BLANKS PAD 1+ LINEADDR PAD C@
5 64 MIN CMOVE 64 CURSOR +! RANGE ENDIF LOOP STK ;
6 : T LDEFAULT CR LINEADDR PAD 64 CMOVE CURSADDR PAD CLINE + 1+
7 64 CLINE - CMOVE 95 PAD CLINE + C! NLINE 3 .R SPACE
8 PAD 65 TYPE STK ;
9 : R LDEFAULT GETPAD PAD 1+ CURSADDR PAD C@
10 64 MIN CMOVE PAD C@ CURSOR +! RANGE T STK ;
11 : L ESCR @ FORTH LIST EDITOR CR T STK ;
12 : M 1DEFAULT CURSOR +! RANGE T STK ;
13 : TRADE ( M,N---) 2 0 DO 64 * CURSOR ! RANGE LINEADDR SWAP LOOP
14 DUP PAD 64 CMOVE OVER SWAP 64 CMOVE PAD SWAP 64 CMOVE STK ;
15
OK
9 list

SCR # 9
0 ( EDITOR, SCREEN 3)
1 : D-+ONLY DUP CURSADDR + CURSADDR 64 CLINE - CMOVE
2 LINEADDR 64 + OVER - SWAP BLANKS T ;
3 : D ( ADJUST ARG IF NEG, DEFAULT, OUT OF LINE) 1DEFAULT DUP 0<
4 IF ( NEGATIVE ARG) CLINE MINUS MAX DUP CURSOR +! ABS
5 ELSE 64 CLINE - MIN ENDIF -DUP IF D-+ONLY ENDIF STK ;
6 : I LDEFAULT CURSADDR PAD 64 CMOVE GETWORD HERE 1+ CURSADDR
7 HERE C@ CMOVE PAD CURSADDR HERE C@ + LINEADDR 64 + OVER -
8 0 MAX CMOVE HERE C@ CURSOR +! RANGE T STK ;
9 : COMP ( ADDR ADDR LEN -> BOOL. TEST FOR STRINGS EQUAL)
10 OVER + SWAP DO DUP C@ FORTH I C@ -
11 IF ( UNEQUAL) DROP 0 LEAVE ELSE 1+ ENDIF LOOP ;
12 : SEARCH ( ADDR LEN -> ADDR-OR-0 ) HERE C@ - 1 MAX
13 OVER + SWAP 0 ROT ROT DO FORTH I HERE 1+ HERE C@ COMP
14 IF DROP FORTH I LEAVE ENDIF LOOP ;
15
OK
10 list

SCR # 10
0 ( EDITOR, SCREEN 4)
1 0 VARIABLE SAVESTRING 64 ALLOT ( TO STORE SEARCH STRING)
2 : SAVEARG ( ->. SAVE OR RESTORE SEARCH STRING ARGUMENT)
3 HERE 1+ C@ IF ( NOT NULL) HERE SAVESTRING HERE C@ 1+ CMOVE
4 ELSE ( NULL) SAVESTRING HERE SAVESTRING C@ 1+ CMOVE ENDIF ;
5 : S ( -> ) LDEFAULT 1 WORD SAVEARG CURSADDR 1024 CURSOR @
6 - SEARCH -DUP IF CURSADDR - HERE C@ + CURSOR +! RANGE ENDIF
7 T STK ;
8 : -R SAVESTRING C@ MINUS D I ;
9 : SCRATCH EMPTY-BUFFERS EX ;
10 : SPREAD ( N -> ) LDEFAULT NLINE DUP 14 > IF ." CAN'T SPREAD"
11 CR ELSE 0 MAX DUP 1 - 14 DO FORTH I EDITOR DUP 1+ TRADE
12 -1 +LOOP 64 * ESCR @ BLOCK + 64 BLANKS ENDIF ;
13 FORTH DEFINITIONS
14 : SCREENMOVE ( FROM TO -> ) FLUSH SWAP BLOCK SWAP
15 BLOCK UPDATE 1024 CMOVE ;
OK

================================================================

Andrew Haley

unread,
Nov 23, 2008, 7:45:20 AM11/23/08
to
n...@eta.chalmers.se <n...@eta.chalmers.se> wrote:

> Is there anyone that can point to a manual of this dinosaur? Or is
> there possibly anyone that could make such a manual or instructions
> available? I could make it publically available, along with the
> source itslef, if I get one mailed and You find publication
> apropriate, or I could keep the information for myself (but most
> likely will I later be writing some documentation to publish "by
> myself", anyhow.)

I have a paper copy of the fig-FORTH Editor User Manual, written by
Bill Stoddart. If you can't find it elsewhere I can scan it.

Andrew.

Run...@gmail.com

unread,
Nov 23, 2008, 8:03:38 AM11/23/08
to
On 23 Nov, 13:45, Andrew Haley <andre...@littlepinkcloud.invalid>
wrote:

Hi,
If no other ansers will come, a scan would be perfect!

Let's wait a day or two to see if someone else allready has the manual
digitized.

Many thanks in advance,
Göran

Andrew Haley

unread,
Nov 23, 2008, 8:32:27 AM11/23/08
to
n...@eta.chalmers.se <Run...@gmail.com> wrote:
> On 23 Nov, 13:45, Andrew Haley <andre...@littlepinkcloud.invalid>
> wrote:
> > n...@eta.chalmers.se <n...@eta.chalmers.se> wrote:
> > > Is there anyone that can point to a manual of this dinosaur? Or is
> > > there possibly anyone that could make such a manual or instructions
> > > available? I could make it publically available, along with the
> > > source itslef, if I get one mailed and You find publication
> > > apropriate, or I could keep the information for myself (but most
> > > likely will I later be writing some documentation to publish "by
> > > myself", anyhow.)
> >
> > I have a paper copy of the fig-FORTH Editor User Manual, written by
> > Bill Stoddart. ?If you can't find it elsewhere I can scan it.

> If no other ansers will come, a scan would be perfect!

> Let's wait a day or two to see if someone else allready has the
> manual digitized.

OK. If I scan it maybe someone will volunteer to put it on a Forth
web site somewhere.

Andrew.

Ed

unread,
Nov 23, 2008, 8:48:20 AM11/23/08
to
> ...

The original FIG editor and instructions is here:
ftp.taygeta.com/pub/Archive/docs/FIGINST.ZIP

The PDP Forth editor seems to be a variant but there may be enough
similarity to get you going.

The FIG editor was likely a cut-down version of Forth Inc's line editor
(as described in "Starting Forth"). Forth Dimensions published a
'clone' of the Forth Inc editor for FIG systems:
www.forth.org/fd/FD-V03N3.pdf

Andrew Haley

unread,
Dec 8, 2008, 7:41:20 AM12/8/08
to
0 new messages