mirror of
https://github.com/forth-ev/VolksForth.git
synced 2024-11-26 17:49:18 +00:00
511 lines
33 KiB
Plaintext
511 lines
33 KiB
Plaintext
Screen 0 not modified
|
||
0 \\ *** Printer-Interface *** 10oct86we
|
||
1
|
||
2 Dieses File enth„lt das Printer-Interface. Die Definitionen f<>r
|
||
3 die Druckersteuerung m<>ssen ggf. an Ihren Drucker angepažt wer-
|
||
4 den.
|
||
5
|
||
6 PRINT lenkt alle Ausgabeworte auf den Drucker um, mit DISPLAY
|
||
7 wird wieder auf dem Bildschirm ausgegeben.
|
||
8
|
||
9 Zum Ausdrucken der Quelltexte gibt es die Worte
|
||
10
|
||
11 pthru ( from to -- ) druckt Screen from bis to
|
||
12 document ( from to -- ) wie pthru, aber mit Shadow-Screens
|
||
13 printall ( -- ) wie pthru, aber druckt das ganze File
|
||
14 listing ( -- ) wie document, aber f<>r das ganze File
|
||
15
|
||
Screen 1 not modified
|
||
0 \ Printer Interface Epson RX80\FX80 21oct86we
|
||
1
|
||
2 Onlyforth
|
||
3
|
||
4 \needs file? ' noop | Alias file?
|
||
5 \needs capacity ' blk/drv Alias capacity
|
||
6
|
||
7 Vocabulary Printer Printer definitions also
|
||
8
|
||
9 1 &13 +thru
|
||
10
|
||
11 Onlyforth \ clear
|
||
12
|
||
13
|
||
14
|
||
15
|
||
Screen 2 not modified
|
||
0 \ Printer p! and controls 18nov86we
|
||
1
|
||
2 ' bcostat | Alias ready? ' 0 | Alias printer
|
||
3
|
||
4 : p! ( n -- )
|
||
5 BEGIN pause printer ready? UNTIL printer bconout ;
|
||
6
|
||
7
|
||
8 | : ctrl: ( 8b -- ) Create c, does> ( -- ) c@ p! ;
|
||
9
|
||
10 07 ctrl: BEL $7F | ctrl: DEL $0D | ctrl: RET
|
||
11 $1B | ctrl: ESC $0A ctrl: LF $0C ctrl: FF
|
||
12
|
||
13
|
||
14
|
||
15
|
||
Screen 3 not modified
|
||
0 \ Printer controls 09sep86re
|
||
1
|
||
2 | : esc: ( 8b -- ) Create c, does> ( -- ) ESC c@ p! ;
|
||
3
|
||
4 | : esc2 ( 8b0 8b1 -- ) ESC p! p! ;
|
||
5
|
||
6 | : on: ( 8b -- ) Create c, does> ( -- ) ESC c@ p! 1 p! ;
|
||
7
|
||
8 | : off: ( 8b -- ) Create c, does> ( -- ) ESC c@ p! 0 p! ;
|
||
9
|
||
10
|
||
11
|
||
12
|
||
13
|
||
14
|
||
15
|
||
Screen 4 not modified
|
||
0 \ Printer Escapes Epson RX-80/FX-80 12sep86re
|
||
1
|
||
2 $0F | ctrl: (+17cpi $12 | ctrl: (-17cpi
|
||
3
|
||
4 Ascii P | esc: (+10cpi Ascii M | esc: (+12cpi
|
||
5 Ascii 0 esc: 1/8" Ascii 1 esc: 1/10"
|
||
6 Ascii 2 esc: 1/6" Ascii T esc: suoff
|
||
7 Ascii N esc: +jump Ascii O esc: -jump
|
||
8 Ascii G esc: +dark Ascii H esc: -dark
|
||
9 \ Ascii 4 esc: +cursive Ascii 5 esc: -cursive
|
||
10
|
||
11 Ascii W on: +wide Ascii W off: -wide
|
||
12 Ascii - on: +under Ascii - off: -under
|
||
13 Ascii S on: sub Ascii S off: super
|
||
14
|
||
15
|
||
Screen 5 not modified
|
||
0 \ Printer Escapes Epson RX-80/FX-80 12sep86re
|
||
1
|
||
2 : 10cpi (-17cpi (+10cpi ; ' 10cpi Alias pica
|
||
3 : 12cpi (-17cpi (+12cpi ; ' 12cpi Alias elite
|
||
4 : 17cpi (+10cpi (+17cpi ; ' 17cpi Alias small
|
||
5
|
||
6 : lines ( #.of.lines -- ) Ascii C esc2 ;
|
||
7
|
||
8 : "long ( inches -- ) 0 lines p! ;
|
||
9
|
||
10 : american 0 Ascii R esc2 ;
|
||
11
|
||
12 : german 2 Ascii R esc2 ;
|
||
13
|
||
14 : normal 10cpi american suoff 1/6" &12 "long RET ;
|
||
15
|
||
Screen 6 not modified
|
||
0 \ Umlaute 14oct86we
|
||
1
|
||
2 | Create DIN
|
||
3 Ascii „ c, Ascii ” c, Ascii <20> c, Ascii ž c,
|
||
4 Ascii Ž c, Ascii ™ c, Ascii š c, Ascii Ý c,
|
||
5
|
||
6 | Create AMI
|
||
7 Ascii { c, Ascii | c, Ascii } c, Ascii ~ c,
|
||
8 Ascii [ c, Ascii \ c, Ascii ] c, Ascii @ c,
|
||
9
|
||
10 here AMI - | Constant tablen
|
||
11
|
||
12 | : p! ( char -- ) dup $80 < IF p! exit THEN
|
||
13 tablen 0 DO dup I DIN + c@ =
|
||
14 IF drop I AMI + c@ LEAVE THEN LOOP
|
||
15 german p! american ;
|
||
Screen 7 not modified
|
||
0 \ Printer Output 12sep86re
|
||
1
|
||
2 | Variable pcol pcol off | Variable prow prow off
|
||
3
|
||
4 | : pemit ( 8b -- ) p! 1 pcol +! ;
|
||
5 | : pcr ( -- ) RET LF 1 prow +! pcol off ;
|
||
6 | : pdel ( -- ) DEL pcol @ 1- 0 max pcol ! ;
|
||
7 | : ppage ( -- ) FF prow off pcol off ;
|
||
8 | : pat ( row col -- ) over prow @ < IF ppage THEN
|
||
9 swap prow @ - 0 ?DO pcr LOOP
|
||
10 dup pcol @ < IF RET pcol off THEN pcol @ - spaces ;
|
||
11 | : pat? ( -- row col ) prow @ pcol @ ;
|
||
12 | : ptype ( adr len -- )
|
||
13 dup pcol +! bounds ?DO I c@ p! LOOP ;
|
||
14
|
||
15
|
||
Screen 8 not modified
|
||
0 \ Printer output 18nov86we
|
||
1
|
||
2 Output: >printer pemit pcr ptype pdel ppage pat pat? ;
|
||
3
|
||
4 Forth definitions
|
||
5
|
||
6 : print >printer normal ;
|
||
7
|
||
8
|
||
9
|
||
10
|
||
11
|
||
12
|
||
13
|
||
14
|
||
15
|
||
Screen 9 not modified
|
||
0 \ Variables and Setup bp 12oct86
|
||
1
|
||
2 Printer definitions
|
||
3
|
||
4 ' 0 | Alias logo
|
||
5
|
||
6 | : header ( pageno -- )
|
||
7 12cpi +dark ." volksFORTH-83 FORTH-Gesellschaft eV "
|
||
8 -dark 17cpi ." (c) 1985/86 we/bp/re/ks " 12cpi +dark
|
||
9 file? -dark 17cpi ." Seite " . ;
|
||
10
|
||
11
|
||
12
|
||
13
|
||
14
|
||
15
|
||
Screen 10 not modified
|
||
0 \ Print 2 screens across on a page 26oct86we
|
||
1
|
||
2 | : 2lines ( scr#1 scr#2 line# -- )
|
||
3 cr dup 2 .r space c/l * >r
|
||
4 pad c/l 2* 1+ bl fill swap
|
||
5 block r@ + pad c/l cmove
|
||
6 block r> + pad c/l + 1+ c/l cmove
|
||
7 pad c/l 2* 1+ -trailing type ;
|
||
8
|
||
9 | : 2screens ( scr#1 scr#2 -- )
|
||
10 cr cr &30 spaces
|
||
11 +wide +dark over 4 .r &28 spaces dup 4 .r -wide -dark
|
||
12 cr l/s 0 DO 2dup I 2lines LOOP 2drop ;
|
||
13
|
||
14
|
||
15
|
||
Screen 11 not modified
|
||
0 \ print 6 screens on a page 18sep86we
|
||
1
|
||
2 | : pageprint ( last+1 first pageno -- )
|
||
3 header 2dup - 1+ 2/ dup 0
|
||
4 ?DO >r 2dup under r@ + >
|
||
5 IF dup r@ + ELSE logo THEN 2screens 1+ r> LOOP
|
||
6 drop 2drop page ;
|
||
7
|
||
8 | : >shadow ( n1 -- n2 )
|
||
9 capacity 2/ 2dup < IF + ELSE - THEN ;
|
||
10
|
||
11 | : shadowprint ( last+1 first pageno -- )
|
||
12 header 2dup - 0
|
||
13 ?DO dup dup >shadow 2screens 1+ LOOP
|
||
14 2drop page ;
|
||
15
|
||
Screen 12 not modified
|
||
0 \ Printing without Shadows b11nov86we
|
||
1
|
||
2 Forth definitions also
|
||
3
|
||
4 | Variable printersem 0 printersem ! \ for multitasking
|
||
5
|
||
6 : pthru ( first last -- ) 2 arguments
|
||
7 printersem lock output push print
|
||
8 1+ capacity umin swap 2dup - 6 /mod swap 0<> - 0
|
||
9 ?DO 2dup 6 + min over I 1+ pageprint 6 + LOOP
|
||
10 2drop printersem unlock ;
|
||
11
|
||
12 : printall ( -- ) 0 capacity 1- pthru ;
|
||
13
|
||
14
|
||
15
|
||
Screen 13 not modified
|
||
0 \ Printing with Shadows bp 12oct86
|
||
1
|
||
2 : document ( first last -- )
|
||
3 printersem lock output push print
|
||
4 1+ capacity 2/ umin swap 2dup - 3 /mod swap 0<> - 0
|
||
5 ?DO 2dup 3+ min over I 1+ shadowprint 3+ LOOP
|
||
6 2drop printersem unlock ;
|
||
7
|
||
8 : listing ( -- ) 0 capacity 2/ 1- document ;
|
||
9
|
||
10
|
||
11
|
||
12
|
||
13
|
||
14
|
||
15
|
||
Screen 14 not modified
|
||
0 \ Printerspool 14oct86we
|
||
1
|
||
2 \needs Task \\
|
||
3
|
||
4 $100 $200 Task spooler
|
||
5
|
||
6 : spool' ( -- ) \ reads word
|
||
7 ' isfile@ offset @ base @ spooler depth 1- 6 min pass
|
||
8 base ! offset ! isfile ! execute
|
||
9 true abort" SPOOL' ready for next job!" stop ;
|
||
10
|
||
11
|
||
12
|
||
13
|
||
14
|
||
15
|
||
Screen 15 not modified
|
||
0 \\ *** Printer-Interface *** 13oct86we
|
||
1
|
||
2 Eingestellt ist das Druckerinterface auf Epson und kompatible
|
||
3 Drucker. Die Steuersequenzen auf den Screens 2, 4 und 5 m<>ssen
|
||
4 gegebenenfalls auf Ihren Drucker angepažt werden. Bei uns gab
|
||
5 es mit verschiedenen Druckern allerdings keine Probleme, da
|
||
6 sich inzwischen die meisten Druckerhersteller an die Epson-
|
||
7 Steuercodes halten.
|
||
8
|
||
9 Arbeiten Sie mit einem IBM-kompatiblen Drucker, muž die Umlaut-
|
||
10 wandlung auf Screen 6 wegkommentiert werden.
|
||
11
|
||
12 Zus„tzliche 'exotische' Steuersequenzen k”nnen nach dem Muster
|
||
13 auf den Screens 4 und 5 jederzeit eingebaut werden.
|
||
14
|
||
15
|
||
Screen 16 not modified
|
||
0 \ Printer Interface Epson RX80 13oct86we
|
||
1
|
||
2 setzt order auf FORTH FORTH ONLY FORTH
|
||
3
|
||
4 falls das Fileinterface nicht im System ist, werden die ent-
|
||
5 sprechenden Worte ersetzt.
|
||
6
|
||
7 Printer-Worte erhalten ein eigenes Vocabulary.
|
||
8
|
||
9
|
||
10
|
||
11
|
||
12
|
||
13
|
||
14
|
||
15
|
||
Screen 17 not modified
|
||
0 \ Printer p! and controls 10oct86we
|
||
1
|
||
2 nur aus stilistischen Gr<47>nden. Das Folgende liest sich besser.
|
||
3
|
||
4 Hauptausgabewort; gibt ein Zeichen auf den Drucker aus. Es wird
|
||
5 gewartet, bis der Drucker bereit ist. (PAUSE f<>r Multitasking)
|
||
6
|
||
7
|
||
8 gibt Steuerzeichen an Drucker
|
||
9
|
||
10 Steuerzeichen f<>r Drucker. Gegebenenfalls anpassen!
|
||
11
|
||
12
|
||
13
|
||
14
|
||
15
|
||
Screen 18 not modified
|
||
0 \ Printer controls 10oct86we
|
||
1
|
||
2 gibt Escape-Sequenzen an den Drucker aus.
|
||
3
|
||
4 gibt Escape und zwei Zeichen aus.
|
||
5
|
||
6 gibt Escape, ein Zeichen und eine 1 an den Drucker aus.
|
||
7
|
||
8 gibt Escape, ein Zeichen und eine 0 an den Drucker aus.
|
||
9
|
||
10
|
||
11
|
||
12
|
||
13
|
||
14
|
||
15
|
||
Screen 19 not modified
|
||
0 \ Printer Escapes Epson RX-80/FX-80 10oct86we
|
||
1
|
||
2 setzt bzw. l”scht Ausgabe komprimierter Schrift.
|
||
3
|
||
4 setzt Zeichenbreite auf 10 bzw. 12 cpi.
|
||
5 Zeilenabstand in Zoll.
|
||
6 schaltet Super- und Subscript ab
|
||
7 Perforation <20>berspringen ein- und ausschalten.
|
||
8 Es folgen die Steuercodes f<>r Fettdruck, Kursivschrift, Breit-
|
||
9 schrift, Unterstreichen, Subscript und Superscript.
|
||
10 Diese m<>ssen ggf. an Ihren Drucker angepažt werden.
|
||
11 Selbstverst„ndlich k”nnen auch weitere F„higkeiten Ihres Druk-
|
||
12 kers genutzt werden wie Proportionalschrift, NLQ etc.
|
||
13
|
||
14
|
||
15
|
||
Screen 20 not modified
|
||
0 \ Printer Escapes Epson RX-80/FX-80 13oct86we
|
||
1
|
||
2 Hier wird die Zeichenbreite eingestellt. Dazu kann man sowohl
|
||
3 Worte mit der Anzahl der characters per inch (cpi) als auch
|
||
4 pica, elite und small benutzen.
|
||
5
|
||
6 setzt Anzahl der Zeilen pro Seite; Einstellung:
|
||
7 &66 lines oder &12 "long
|
||
8
|
||
9
|
||
10 schaltet auf amerikanischen Zeichensatz.
|
||
11
|
||
12 schaltet auf deutschen Zeichensatz.
|
||
13
|
||
14 Voreinstellung des Druckers auf 'normale' Werte; wird beim
|
||
15 Einschalten mit PRINT ausgef<65>hrt.
|
||
Screen 21 not modified
|
||
0 \ Umlaute bp 12oct86
|
||
1
|
||
2 Auf diesem Screen werden die Umlaute aus dem IBM-(ATARI)-Zeichen
|
||
3 satz in DIN-Umlaute aus dem deutschen Zeichensatz gewandelt.
|
||
4
|
||
5 Wenn Sie einen IBM-kompatiblen Drucker benutzen, kann dieser
|
||
6 Screen mit \\ in der ersten Zeile wegkommentiert werden.
|
||
7
|
||
8
|
||
9
|
||
10
|
||
11
|
||
12 p! wird neu definiert. Daher brauchen die folgenden Worte p!
|
||
13 nicht zu „ndern, egal, ob mit oder ohne Umlautwandlung gearbei-
|
||
14 tet wird.
|
||
15
|
||
Screen 22 not modified
|
||
0 \ Printer Output 10oct86we
|
||
1
|
||
2 aktuelle Druckerzeile und -spalte.
|
||
3 Routinen zur Druckerausgabe entspricht Befehl
|
||
4 ein Zeichen auf Drucker emit
|
||
5 CR und LF auf Drucker cr
|
||
6 ein Zeichen l”schen (?!) del
|
||
7 neue Seite page
|
||
8 Drucker auf Zeile und Spalte at
|
||
9 positionieren; wenn n”tig,
|
||
10 neue Seite.
|
||
11 Position feststellen at?
|
||
12 Zeichenkette ausgeben type
|
||
13
|
||
14 Damit sind die Worte f<>r eine eigene Output-Struktur vorhanden.
|
||
15
|
||
Screen 23 not modified
|
||
0 \ Printer output 10oct86we
|
||
1
|
||
2 erzeugt die Output-Tabelle >printer.
|
||
3
|
||
4 Die folgenden Worte sind von FORTH aus zug„nglich.
|
||
5
|
||
6 schaltet Ausgabe auf Printer um. (Zur<75>ckschalten mit DISPLAY)
|
||
7
|
||
8
|
||
9
|
||
10
|
||
11
|
||
12
|
||
13
|
||
14
|
||
15
|
||
Screen 24 not modified
|
||
0 \ Variables and Setup 10oct86we
|
||
1
|
||
2 Diese Worte sind nur im Printer-Vokabular enthalten.
|
||
3
|
||
4 Dieser Screen wird gedruckt, wenn es nichts besseres gibt.
|
||
5
|
||
6 Druckt die šberschrift der Seite pageno.
|
||
7
|
||
8
|
||
9
|
||
10
|
||
11
|
||
12
|
||
13
|
||
14
|
||
15
|
||
Screen 25 not modified
|
||
0 \ Print 2 screens across on a page 10oct86we
|
||
1
|
||
2 druckt nebeneinander die Zeilen line# der beiden Screens.
|
||
3 Die komplette Druck-Zeile wird erst in PAD aufbereitet.
|
||
4
|
||
5
|
||
6
|
||
7
|
||
8
|
||
9 formatierte Ausgabe der beiden Screens nebeneinander
|
||
10 mit fettgedruckten Screennummern. Druck erfolgt mit 17cpi, also
|
||
11 in komprimierter Schrift.
|
||
12
|
||
13
|
||
14
|
||
15
|
||
Screen 26 not modified
|
||
0 \ print 6 screens on a page 10oct86we
|
||
1
|
||
2 gibt eine Seite aus. Anordnung der Screens auf der Seite: 1 4
|
||
3 Wenn weniger als 6 Screens vorhanden sind, werden 2 5
|
||
4 L<>cken auf der rechten Seite mit dem Logo-Screen (0) 3 6
|
||
5 aufgef<65>llt.
|
||
6
|
||
7
|
||
8 berechnet zu Screen n1 den Shadowscreen n2 (Kommentarscreen wie
|
||
9 dieser hier).
|
||
10
|
||
11 wie pageprint, aber anstelle der Screens 4, 5 und 6 werden die
|
||
12 Shadowscreens zu 1, 2 und 3 gedruckt.
|
||
13
|
||
14
|
||
15
|
||
Screen 27 not modified
|
||
0 \ Printing without Shadows b22oct86we
|
||
1
|
||
2 Die folgenden Definitionen stellen das Benutzer-Interface dar.
|
||
3 Daher sollen sie in FORTH gefunden werden.
|
||
4
|
||
5 PRINTERSEM ist ein Semaphor f<>r das Multitasking, der den Zugang
|
||
6 auf den Drucker f<>r die einzelnen Tasks regelt.
|
||
7
|
||
8 PTHRU gibt die Screens von from bis to aus.
|
||
9 Ausgabeger„t merken und Drucker einschalten. Multitasking wird,
|
||
10 sofern es den Drucker betrifft, gesperrt.
|
||
11 Die Screens werden mit pageprint ausgegeben.
|
||
12
|
||
13
|
||
14 wie oben, jedoch wird das komplette File gedruckt.
|
||
15
|
||
Screen 28 not modified
|
||
0 \ Printing with Shadows 10oct86we
|
||
1
|
||
2 wie pthru, aber mit Shadowscreens.
|
||
3
|
||
4
|
||
5
|
||
6
|
||
7
|
||
8 wie printall, aber mit Shadowscreens.
|
||
9
|
||
10
|
||
11
|
||
12
|
||
13
|
||
14
|
||
15
|
||
Screen 29 not modified
|
||
0 \ Printerspool 10oct86we
|
||
1
|
||
2 Falls der Multitasker nicht vorhanden ist, wird abgebrochen.
|
||
3
|
||
4 Der Arbeitsbereich der Task wird erzeugt.
|
||
5
|
||
6 Mit diesem Wort wird das Drucken im Hintergrund gestartet.
|
||
7 Aufruf mit :
|
||
8 spool' listing
|
||
9 spool' printall
|
||
10 from to spool' pthru
|
||
11 from to spool' document
|
||
12 Vor (oder auch nach) dem Aufruf von spool' muž der Multitasker
|
||
13 mit multitask eingeschaltet werden.
|
||
14
|
||
15
|