antoine-source/picnicparanoia/scdocs.apple/FSE.A2
Antoine Vignau 4d4fb6a665 Let's free the code!!
Some old (WIP) disassemblies and my own source code now available online.
2024-07-23 23:38:22 +02:00

1 line
23 KiB
Plaintext

FULL SCREEN EDITOR
for S-C Macro Assembler
With these excellent features:
- Complete Screen Editor
- Co-Resident with S-C Macro Assembler
- Adjustable tab stops and margins
- Automatic renumbering
- 40 or 80 column "window" editing
- Column number guide
- Source code included
- Drivers for VIDEX, STB and Apple IIe 0 column boards
Requires 64k Apple II with Language card and S-C Macro Assembler
Laumer Research
1832 School Road
Carroliton, Texas 75006
(214) 245-3927
---------------------------------------------------------------------
FULL SCREEN EDITOR
for S-C Macro Asseinbier
by Mike Laumer
Laumer Research
1832 School Rd.
Carroliton, TX 75006
(214) 245-3927
Copyright (C) 1983 by Laumer Research
---------------------------------------------------------------------
General Information about the Screen Editor.
This Full Screen Editor was designed to co-exist (piggyback fashion)
with the Language card version of the S-C Macro ler. The editor
requires a minimal patch to the assemb1er to recognize a "/" in
column 1 as a signal to enter the editor. The editor is self
contained, and once started, it requires no routines in the actual
assembler itself. The editor will also work with most of the S-C
Macro cross assemblers (except for 68000 version).
The Screen editor is created via a SYSGEN program to preset useful
parameters to individual needs. There are several video driver
modules currently available. By examining the source code of the
drivers in detail and by using the documentation from your video
board manufacturer you should be able to easily configure a video
driver for any 80 column board not currently supported. The screen
editor uses all 80 columns and all 24 lines of a display. Your board
must be able to write a column 80 character without the display
scrolling up when writing the last line.
If you have performed this conversion to your particular 80 column
board adequately and you are the first to send it to Laumer Research,
Laumer Research will refund you 20 dollars on the purchase of the
Screen Editor (If you give Laumer Research all rights for your driver
module, source and object code.) In ~this mamner most video boards
should be supported within several months. But remember that you
must be the first one to send it in for your particular board and it
must be a reasonable implementation before Laumer Research will send
you a refund.
Note that the video driver is only used by the screen editor and will
not resolve the problems in the assembler which prevent you from
using your video board with it. For this you may look at the two
patch files for the S-C Macro Assembler provided on the disk for the
VIDEX and STB8O 80 column boards. These particular patches are to be
incorporated into future releases of the S-C Macro Assembler.
When the 80 column board versions of the screen editor begin
execution they assume that your 80 column board has already been
turned on and is in use. If you have not done this then type a PR#3
to enable your 80 column video board before using the "/" command to
enter the screen editor.
-1-
---------------------------------------------------------------------
The editor commands are divided into two groups, the Scroll mode
commands and the Edit node commands. The two nodes are toggled with
the use of the Escape key.
The two nodes are denoted~ by different cursor types depending on the
particular video driver. With the standard Apple driver a flashing
"+" indicates the scroll mode and a normal flashingq character
indicates the edit mode.
Because there are no lower case flashing characters in standard Apple
II video, the Apple II video driver will convert a lower case
character into the upper case value when the edit mode cursor is
positioned over a lower case character. This affects only the
display and not the value in the edit line. The editor assumes a
lower case adapter for the Apple II display in order to display lower
case ASCII characters. If however, you do not use lower case or you
have one of the supported 80 column boards then this will not matter
to you.
The screen editor also uses additional memory beyond what the S-C
Macro Assembler does. The memory from $0F00-$0FFF is used to save
the editor working buffer at $0200-$02FF. In addition, some
variables are used at $0380-$03CF. Entering the screen editor will
cause any assembler symbol table to disappear because the editor
requires that area for use as a scroll line stack.
The editor is what is known as a "window" editor. This means that
the screen (either 40 or 80 columns) is a "window" on a much larger
work area. This "window" can be shifted either vertically or
horizontally to display any column from one through 248 and any line
up to your memory limitation. As the cursor moves past the edge of
the "window" it will cause the editor to automatically pull the
"window" so the new cursor position remains in view on the screen.
The "window" will stop automatically when the line or column limits
are encountered. The "window" will always track the cursor position.
In the documentation which follows you will note that all control
characters are denoted by a prefix of "^". For example "^Q" means
control Q.
-2-
---------------------------------------------------------------------
Here is a list of the editor keyboard commands. Note that at any
time you may leave the editor and return to the assembler with the AQ
command to use the COPY or FIND and REplace editing, returning to the
editor when you wish.
The following commands are Scroll Mode commands.
1 - Scroll up. Shows next screen full of source code.
2 - Scroll down. Shows previous screen full of source code.
3 - Toggle line numbers on/off. Line numbers are displayed on the
left. New lines will show blanks as a line number. Any line
number of 0000 will show as blanks.
4 - Toggle compose mode on/off. Affects the carriage return key.
Controls if a new line is inserted after typing the return key.
With this function you can type new lines without writing over the
lines below it.
5 - Toggle form guide on/off. A column position guide can be shown
at the top and bottom of the screen.
! - Scroll up long. Faster way to move through the program code to
the position you want.
" - Scroll down long. Faster way to move through the program code to
the position you want.
/ - Goto line. Type N/2000N and the return key and the editor will
search for line 2000 and page the display starting with that line.
: - Horizontal Scroll left. Moves the window left to lower numbered
columns depending on the amount set by the SYSGEN. Allows editor
to handle lines longer than the screen width without dropping to
the next line.
- - Horizontal Scroll right. Moves the window right to higher
numbered columns depending on the amount set by the SYSGEN. Allows
editor to handle lines longer than the screen width without dropping
to the next line.
B - Move to beginning of file.
E - Move to end of file.
I - Move cursor up 1 line.
J - Move cursor left 1 column.
K - Move cursor right 1 column.
M - Move cursor down 1 line.
^H - Move cursor left 1 column (left arrow).
^J - Move cursor down 1 line.
^K - move cursor up 1 line.
^L - Insert 1 new line.
^M - Goto next line at left margin (Return key).
^P - Insert comment line.
^Q - Quit from editor, return to assembler.
^U - Move cursor right 1 column (right arrow).
^W - Set left margin (Affects carriage return). Useful for setting a
left margin for adding comments to uncomented code or for entering
in a column of data.
^Z - Delete current line.
ESC- Leave Scroll mode and enter Edit mode.
-3-
---------------------------------------------------------------------
The following Scroll mode commands can also be used in the Edit mode
without conflict. They prevent using the ESC key too many tines to
change modes.
^H - Move left 1 column (left arrow key)
^J - Move down 1 line.
^K - Move up 1 line.
^L - Insert blank lime.
^M - Goto next line at left margin (Return key).
^P - Insert comment line.
^Q - Quit from edit, return to assembler.
^U - Move right 1 column (right arrow key).
^W - Set left margin (Affects carriage return).
^Z - Delete current line.
The following commands are Edit node commands.
^@ - Clears to end of line.
^A - Toggle alpha shift lock on/off.
^B - Move to beginning of line.
^C - Copy characters from previous line to next tab.
^D - Delete current character.
^F - Find next key typed. You may type the key over again to find
the next occurence without typing F again.
^I - Insert before current character.
^O - Insert control character before current character. Control
characters will usually be displayed in inverse video depending
on the particular video driver and video q hardware being used.
^N - Move to end of line.
^R - Restore line. Helps correct edit mistakes.
^S - Set/clear a tab stop. Use T to show where the tab positions
are. Up to 21 tab stops are availiable.
^T - Tab to next tab stop. If past last tab stop then T wraps to
the first tab stop.
ESC- Leave Edit mode and enter Scroll mode.
-4-
---------------------------------------------------------------------
The following Edit mode commands can be invoked from the Scroll node
and will pop you into the Edit mode and perform the command. After
the command is executed the Edit node will still be in effect. This
ability prevents using the ESC key too many times to change modes.
^@ - Clear to end of line.
^A - Toggle alpha shift lock on/off.
^B - Move to begining of line.
^C - Copy characters from previous line to next tab.
^D - Delete current character.
^I - Insert before current character.
^F - Find next typed character.
^N - Move to end of line.
^O - Insert control character before current character.
^S - Set/clear tab stop.
^T - Tab to next tab stop.
If you use the shift key modification as required by many popular
word processors and the Shift key mod flag is set via the SYSGEN
program then these additional keyboard capabilities are provided by
the editor.
Shift -> will move down 1 line.
Shift <- will move up 1 line.
Shift I in Scroll mode will Scroll down 1 screen.
Shift M in Scroll mode will Scroll up 1 screen.
If alpha lock is unlocked lower case characters are entered for the
letter keys (A-Z). When the Shift key is pressed and a letter key is
pressed an upper case letter will result. Note that the characters
(^]@) will produce (NMP).
-5-
---------------------------------------------------------------------
About the SYSGEN program.
The SYSGEN program can control the initial settings of many of the
editor parameters. To use the SYSGEN program first get Applesoft up
and running. Then type "RUN SYSGEN".
The program will load and execute and the first thing it does ~ is
load the "B.EDITOR" file into memory. The program will the~ display
a choice of video drivers available. Select by number the driver
desired.
The SYSGEN program then loads the selected video driver into memory.
The next menu displayed allows alteration of particular parameters in
the editor module.
0 - Will accept all the current. parameters and write the "EDITOR"
file to the diskette with the driver selected and all parameters
included as specified.
1 - Allows you to change the short scroll parameter (used by
functions 1,2 in the Scroll mode of the editor).
2 - Allows you to change the long scroll parameter (used by
functions !," in the Scroll mode of the editor).
3 - Allows you to change the Horizontal shift count from one through
the screen width-l. For 80 column boards I recomend leaving this 10
or more because of the length of time it takes to display the whole
screen. I like to set mine to 1/2 the screen width. For the Apple
II video version this can be as low as one with little apparent delay
beacuse of the speed of the screen display routine. ~
4 - Allows you to change the character code used in the P comment
line insert command.
5 - Allows you to change the number of characters in the P comment
line insert command.
6 - Shift key Mod flag. Set to 0 if you do not have it, or 1 if you
do have it.
7 - Allows you to enable/disable the auto renumber feature. Set to 1
to enable, and 0 to disable. I like to set this to 1, it makes life
easier.
8 - Allows you to specify the starting line number for the auto
renumber function. Line numbers greater than 9999 are allowed as
future Assembler releases will allow up to 65535 as a valid
line.number.
9 - Allows you to specify the increment for line numbers for the
auto renumber function.
10 - Allows you to change the right margin. This value must not be
less than the screen width-l and its maximum is 248.
11 - Allows you to specify the left margin. This should be left to 1
since the W command in the editor can change it during runtime of the
editor.
12 - Allows the tab table entries to be changed. By typing a tab
number you can delete the tab if it is already in the table. A new
entry is inserted into the tab table by typing its value. Type a 0
tab value to return to the normal parameter menu level.
-6-
---------------------------------------------------------------------
Files provided on the diskette:
HELLO - Applesoft boot program.
APPLESOFT - Integer boot program.
SYSGEN - An Applesoft program which will allow you to configure the
editor for your system.
ED - An EXEC file to be EXECed from within the language card S-C
Macro Assembler to load the screen editor.
ASMED - An EXEC file which can load the S-C Macro Assembler and
Laumer Reasearch screen editor into your Language card. You should
move the file "S-C.ASM.MACRO.LC" from the assembler disk to this disk
to be able to use this EXEC file.
EDITOR - A binary file created by the SYSGEN program customized to
your particular editor configuration.
The following files are binary files used by the SYSGEN program for
creating a cusomized editor configuration.
B.EDITOR - Screen editor without a driver.
B.DRIVER.AP2STD - Standard Apple II video driver.
B.DRIVER.AP2VIDEX - Videx video driver.
B.DRIVER.AP2STB80 - STB80 video driver.
The following are S-C Macro Assembler 1.0 source code.
S.ACF - Assembly control file for the assembly.
S.PART ONE - Entry point, parameters and tables.
S.PART TWO - Scroll mode command loop.
S.PART THREE - Scroll mode functions.
S.EDIT.LINE - Edit mode functions.
S.SUBMIT - Submits am edited line into the source code.
S.DRIVER.AP2STD - Apple II standard video driver.
S.DRIVER.AP2VIDEX - Videx 80 column board video driver.
S.DRIVER.AP2STB80 - STB80 80 column board video driver.
S.STB80.PATCHES - Patch file for S-C Macro Assembler for the STB 80
column board patches. Read comments in code on how to apply.
S.VIDEX.PATCHES - Patch file for S-C Macro Assembler for the VIDEX 80
column board patches. Read comments in code on how to apply.
-7-
---------------------------------------------------------------------
About the 80 column board patch files.
These patches are based on material printed in the Apple Assembley
Line by S-C Software Corp. They are similar but have several small
problems fixed and more features added. Also you must be aware that
certain procedures in using the assembler ~ are different.
To leave the assembler with FP, INT or MNTR commands you should first
type PR#3 to unhook the assembler from DOS. Then type the command
you wish to leave the assembler with.
To return to the Assembler from the MNTR command or from using a
printer do not use PR#3 to come back. Although at first it appears
the Assembler is working, some of the assembler features will not
work. Instead use the RESET key to leave the monitor or printer.
This will unhook a printer, restart the Assembler and hook the
Assembler back into the DOS I/O hooks.
If you have an Integer Basic motherboard and want to leave the
Language Card Assembler permanently, I would recomend a reboot to
leave the Assembler. This is because the Assembler patches $3D1 to
fix a problem with the Assembler looking like Applesoft at $EOOO but
setting the DOS active Basic flag ($AAB6) to Integer to load and save
type I files. Without that patch the DOS INT command would not exit
from the Assembler. If you do not reboot then the RESET key will
take you back into the Macro assembler in the Language Card.
It is possable to set up an EXEC file to load the assembler, screen
editor and the 80 column board patches in one continuous operation.
Here is a sample EXEC file which can do this.
1000 REM EXEC FILE TO LOAD EVERYTHING.
1010 CALL-151 enter monitor
1020 C081 C081 read ROM, write RAM
1025 F800<F800.FFFFM make sure we have monitor
1030 BLOAD S-C.ASM.MACRO.LC load assembler
1040 BLOAD SCM80 load videx patches
1050 C08B C08B write other 4K bank
1060 BLOAD EDITOR,A$D000 load editor file
1070 C083 C083 read/write RAM
1080 D066:4C E0 F7 editor asm patch
1090 F7E0:C9 22 F0 07 C9 2F F0 06 invoke editor patches
1100 F7E8:4C 6A D0 4C 73 D0 AD 88 C0
1110 F7F1:4C 00 D0 AD 80 C0 4C 03 D0
1120 300:A9 4C CD 00 E0 F0 12 8D 00 E0 make asm test routine
1130 30A:A9 00 8D 0l E0 A9 D0 8D 02 E0 A9 CB 8D Dl 03 60
1135 C081 C081 read ROM, write RAM
1140 300G assembler patches
1150 C080 protect ram
1160 4000G start scm80 patches
-8-
---------------------------------------------------------------------
Screen Editor patches to the S-C Macro Assembler 1.0
The editor is invoked from the S-C Macro Assembler by typing a "/"
character in column one followed by an optional line number. i.e.
"/2000" will start the editor up and move to line 2000 for the first
display screen.
In order to recognize the "/" as a valid command character the
assembler must have a small patch in the code that processes a
command line. That code in the Assembler looks like this:
D066 - C9 22 .1 CMP #'" special printer command
D068 - F0 09 BEQ .3 yes
DOGA - 20 7F D0 JSR NML process numbered line
DO6D - 4C 34 D0 JMP GNL get next command line
D070 - 20 94 DD .2 JSR CHO send character
D073 - 20 35 D2 .3 JSR GNC get next character
D076 - 90 F8 BCC .2 not eol yet
D078 - B0 BA BCS GNL ... always
The editor requires a jump patched over the first two
instructions to $F7E0 where the following code resides.
F7E0 - C9 22 CMP #'" printer command?
F7E2 - F0 07 BEQ PRT yes
F7E4 - C9 2F CMP *'/ editor command?
F7E6 - F0 06 BEQ EDIT yes
F7E8 - 4C 6A D0 JMP $D06A go process numbered lime
F7EB - 4C 73 D0 PRT JMP $D073 process printer command
F7EE - AD 88 C0 EDIT LDA $C088 turn on other 4k bank
F7Fl - 4C OO D0 JMP $D000 enter the screen editor
F7F4 - AD 80 C0 RETN LDA $C080 turn off other 4k bank
F7F7 - 4C 03 D0 JMP SOFT restart assembler
Note that $F7F4 is the return point from the screen editor when the ^Q
command is typed to leave the screen editor.
Thoughout future S-C Macro Assembler upgrades you should be able to
maintain these patches yourself to the assembler with this
information. Note that the patch at $D066 and the addresses at $F7E8
and $F7EB are the only parts affected by a change in the assembler
which might cause the addresses to be slightly off a few bytes.
Of course the assembler must not be too large for these patches to
reside at $F7E0. The Assembler must also not use the alternate 4K
memory bank on the language card. (The 68000 cross assembler does
use it).
-9-
---------------------------------------------------------------------
Full Screen Editor Addendum
S-C Macro Assembler 1.1
The new version of the S-C Macro Assembler is now availiable. This
version has a standard 40 column, Apple lie, VIDEX, and STB 80 column
assembler all on the same diskette.
The patch addresses in the new Macro Assembler however are all
different. The Macro Assember code shown on page 9 of the Screen
Editor manual is shifted up by 5 bytes.
The EXEC file on page 8 would have the following line changes to
accomodate the shift in patch addresses:
1080 D06B:4C E0 F7
1100 F7E8:4C 6F D0 4C 78 D0 AD 88 C0
Note the following addresses change:
D066 --> D06B
D06A --> D06F
D073 --> D078
These changes have already been applied to the current disk files "ED
1.1", and "ASMED 1.1".
New functions added to the Editor.
The keyboard for the Apple II Plus is not the same as that used on
other computers such as the Apple IIe and the Franklin Ace computers.
Some keys chosen for their convenient fingertip location on the Apple
II Plus are not so convenient on other keyboards. Therefore the
following editor key functions have been defined as duplicates.
Franklin &
Apple II Plus Apple IIe Function
------------- --------- ---------------------
Shift 2 (") @ long scroll back
: ' horizontal scroll left
- . horizontal scroll right
Note that the key functions ",." have a nice feature in that the
shift functions are "<>" on all the keyboards. This jogs your
memory about their true function, left and right horizontal scroll.
New Files on disk:
ED 1.1 - An EXEC file to be EXECed from the 1.1 version of the S-C
Macro Assembler which is running in the language card. This EXEC
file will load the Full Screen Editor into the unused 4K bank of
memory on the language card.
ASMED 1.1 - An EXEC file which can load the S-C Macro Assembler
version 1.1 and the Full Screen Editor into your language card and
start the assembler. You should move the file "S-C.ASM.MACRO.D000"
from the Assembler diskette to this Editor diskette to be able to use
this EXEC file. There is a BLOAD command in this EXEC file to load
the Assembler, the file names must be made to match.
B.DRIVER.AP2E - Apple lie 80 column video driver. This is the object
file used by the SYSGEN program to build an Apple lie Full Screen
Editor version.
S.DRIVER.AP2E - Apple lie 80 column board video driver. SYSGEN - This
Applesoft program has been updated to allow the new Apple lie driver
to be one of the selections on the menu.
Note that the Apple IIe driver should only be used with the S-C Macro
Assembler version 1.1 for the Apple IIe. The 40 column driver can
also be used with the Apple IIe but you must always enter the Editor
in 40 column display mode. If you do not have a 80 column card for
your Apple IIe then the 40 column driver must be the driver that you
use.
---------------------------------------------------------------------