Home » CEEFAX disks » telesoftware3.adl » 27_11_87/INFO

27_11_87/INFO

This website contains an archive of files for the Acorn Electron, BBC Micro, Acorn Archimedes, Commodore 16 and Commodore 64 computers, which Dominic Ford has rescued from his private collection of floppy disks and cassettes.

Some of these files were originally commercial releases in the 1980s and 1990s, but they are now widely available online. I assume that copyright over them is no longer being asserted. If you own the copyright and would like files to be removed, please contact me.

Tape/disk: Home » CEEFAX disks » telesoftware3.adl
Filename: 27_11_87/INFO
Read OK:
File size: 28E7 bytes
Load address: 0000
Exec address: 0000
File contents
Softscreen Text Editor - Instructions  by Gavin Haines 25th March 1987

History

This package was originally written using an Acorn Electron, and the idea
was to provide a cheap RAM text editor for those who could not afford VIEW
etc. The programmer was a computer science graduate who undertook the
project as something to do while he was looking for employment.  When the
package was nearly finished, he talked all about it to someone from a
local electronics firm who the n offered him a job.

Rather than let the whole thing go to waste, I decided to modify it for
use as an assembly language source file editor.  It can also be used to
write letters etc., if you do do not have VIEW.  However, the main idea is
to demonstrate how you can go about creating a large assembly language
program.  It is is 6502 machine code throughout.

The idea of Softscreen is that you can enter and edit text without having
to worry about formatting.  No matter how you insert, delete, or move
text, the screen is always kept completely up to date.  Unlike VIEW, any
text deleted by accident can be recovered.  The design philosophy has been
to keep it all extremely simple and easy to use.

The source code consists of a number of text files which can be assembled
in any order.

T.INSTR is this file.
T.SAMPLE is some sample text for testing out your printer etc.

I have assembled the following object files for the sake of convenience.

OBJ4B60     loads at &4B60 on the 32k BBC Micro
OBJE300     loads at &E300 on the 6502 Second Processor
OBJ8000     loads at &8000 on the BBC Micro (Paged RAM area)

All these versions are the same except in the size of text file which may
be loaded.  (You can *RENAME this files to more more memorable
designations, such as EDITOR).

To use on the BBC Micro, you would type: 

*OBJ4B60

It is forced into MODE 6 on a plain BBC Micro.  MODE 7 is not used because
the Electron does not have it.  You can use 80 columns on the other
systems with more memory.

To use on the 6502 Second Processor, you would type:

*OBJE300

With the Second Processor, it will start up in whatever MODE was
previously active.  If the system is in MODE7, MODE6 will be selected. 
This is so that you can use it on the Electron.

If your system has more than 32k, you can change MODE by going to the
Enter OS Command option and typing.

*FX255,251   (MODE3)
*FX255,254   (MODE6)

Then press the BREAK key.  Changing MODE alters the amount of available
RAM on some systems, so any text in memory is cleared.

Entering Operating System (Star) Commands

You can enter any command that you could enter from BASIC, but do not
execute a command (such as *BASIC) that will take you out of Softscreen as
this will (obviously) lose any text that you happen to have in memory.  To
exit to BASIC, select this option from the Main Menu.  Obviously you
should not enter any command which could crash Softscreen.  It is not
necessary to type the star * when entering system commands.

Typing CTRL-BREAK will get you out of Softscreen

Loading and saving of files from the Filer Menu is self-explanatory. 
Saved files are automatically locked to prevent accidental deletion.  To
use the same filename, unlock the file first.

IF you select the "Save workfile" option from the Editor menu, the system
will use the last used filename:  You will get an error if no file has
been previously loaded, locked or unlocked.  

You can use cassettes by selecting *TAPE

Cursor movement

Arrow keys move by character: up down left right

CTRL-T  Top of page
CTRL-V  Vertical - bottom of page
CTRL-S  forwards one word
CTRL-A  backwards one word

CTRL-S  Start of Text
CTRL-E  End of Text
CTRL-C  Cut - define block         
CTRL-C  Cut - define end of block 
CTRL-P  Paste (having previously moved cursor below the block just
        defined)

You cannot paste with the cursor above the block.  To move text up, use
the DELETE and COPY keys.

CTRL-Z  Zap  delete the block

CTRL-O  Overtype/insert toggle

CTRL-D  Delete character in front of the cursor
The DELETE key deletes text behind the cursor

The COPY key undeletes

You can move words and lines by using the DELETE key, moving the cursor and then using the COPY key.

CTRL-L  Deletes the end of the Line
CTRL-K  (Kill) deletes the line back to the end of the previous line.
CTRL-Q  deletes a word backwords
CTRL-W  deletes a word forwards
CTRL-N  allows you to insert control characters into the file.

Printout:

You can number lines of automatically by selecting this option from the
Printout menu.   Line numbering will remain in effect until you cancel
it.

The printer package is set up for standard 66 lines fanfold or A4 cut
sheet.

It is advisable to test print before trying to get hard copy, in case you
have inadvertently loaded the wrong file.

If you need to stop sending text to the printer (for example to change the
ribbon),  press the SPACE bar.  Press the ESC key to abandon printing
altogether.

Technical Information.

(You need some knowledge of assembly language if you are going to
understand what follows - it is not intended for the novice).

The following files of source code exist:

T.START2    - sets up assembler variables
T.HEADER   - ROM header code and error trapping
T.COMMON   - Routines common to the whole package
T.CURSOR   - Routines which deal with the cursor
T.SCREEN   - Routines dealing with screen
T.TEXT     - Shift text about in memory
T.EDITOR   - Execute editor commands
T.FILER    - load and save
T.PRINTER  - hard copy options
T.MAIN     - Menu options


To assemble the source using the Alan Phillips ADE compatible assembler,
you would type eg:

*ASSEMBLE T.START2 -OOBJ -W

The files can be assembled in any order

Memory usage: 

Page zero:  &70 -&8F 
Page &900  
Page &A00  

Softscreen does not over write any areas used by BASIC.  Softscreen
subroutines can therefore be called from BASIC.

Subroutines

Shiftb  - Shift block of memory starting at address in "origin" and ending
with the byte whose address is given by XA -1.  New start address of block
is in "dest", which must be below "origin".

origin = address of first byte in block
XY     = address of last byte in block
offset = distance to move block
offset < 0 means shift down
offset > 0 means shift up

exits if offset =0 or origin <XY

local: dest, ptra, ptrb (zero page)

on exit: origin and offset unchanged.  A,X,Y,C undefined.

In order that the execution time be as short as possible, indexed
addressing is used with bases addresses poked into the program during
execution (this subroutine must run in RAM).

The piece of code which does the actual shifting is arranged so that on
entry X contains the number of pages to be shifted (including any
incomplete page), and Y contains the two's complement of the number of
bytes in the complete page.

The code previous to this calculates X and Y and sets up the initial base
addresses.

Sheot - same as shiftb with XY automatically set to eot (end of text).

Update - update address table

Any addresses greater than origin have offset added to them.
table starts at cur
number of entries = tabsiz -1

on exit: origin and offset unchanged.  A,X,Y,C undefined

Curpos - check if cursor inside block.  On exit: C =1 if sob < cur =< eob. 
On exit: A,X,Y undefined

Block  - checks valid block.  On exit: C set if either sob or eob is
undefined or if sob > eob.  On exit: A,X,Y undefined

Room - checks enough room for text in section: on exit C set if eot +
offset < EOW.  On exit: A,X,Y undefined

Getv - find in which line on the screen a certain position in the text
occurs.
       enter with address in YA.
       exits with line in X; Y unchanged; A, C undefined.
       if X = &FF then below screen (in memory)
       if X = bottom then above screen
       local: temp

Getlin - find lenght of a line and address of start of next line
       enter with address of line in ptr
       if ptr > eot then len = 0
       length of line returned in len
       address of start of next line returned in YA
       on exit: X,C undefined.

Putcsr - place cursor at point given by Y,X
       on exit: X,Y unchanged, A,C, undefined.

Csrsol  place cursor at start of line X
       on exit Y = 0, X unchanged, A,C, undefined.

Prline   Print a line, filling up to the end of line with spaces.
       CR characters are converted.
       Enter with: address of line in ptr
                   position of line on screen in vpos
                   length of line in len
       On exit: vpos, ptr, len unchanged. A,X,Y,C undefined.

Scrolu  - scroll screen up by one line - checks for eot
Scrold  - scroll screen down by one line - checks for sot.

Text is maintained in memory as one long string.  The cursor position
always corresponds to a character in text (hence at least always one
character in text).  As much text is displayed on the screen without
splitting words across a line.  The screen is always kept totally up to
date.  As little of the screen is reprinted as possible.

Low level word processor routines.

dsable - osbyte called with X = 1, Y = 0
enable - osbyte called with X = 0, Y = 0
csron  - switch cursor on
csroff - switch cursor off
wrch -   write character, converting cr to back arrow


Operation of menu options.

Each string has a corresponding entry in a table of addresses.  When you
select a particular option, it looks up the address of the subroutine in
the table, then the subroutine entry address (minus 1) is pushed onto the
stack, high order byte first.  A 6502 RTS (Return from Subroutine) is used
to pop the address off the stack and into the 6502 program counter (after
incrementing by 1).  When is an RTS not an RTS?  Answer: when it is a JSR! 

Filer options

When you call LOAD SAVE LOCK UNLOCK, it asks you for a filename which it
stored in oldstr.  It sets up an OSFILE control block as documented in the
User Guides.

Converting this source code to BBC BASIC in-line assembler format:

Standard 6502          BBC BASIC

DFB 136                OPT FNEQUB (136)
DFB <label             OPT FNEQUB (label-1)  \high byte
label                  .label
STR"String"            OPT FNS ("String")
label EQU &FFFF        label = &FFFF
label >label2           .label OPT FNB(label2 MOD256)
LDY #<label            LDY #label DIV 256     \high byte
LDA #>label            LDA #label MOD 256     \low byte
label DS 2             label = FNW (2)
ORG &FFFF              P%=&FFFF
DSECT                  W%=&900
 ORG &900
DSEND                  
00000000  53 6f 66 74 73 63 72 65  65 6e 20 54 65 78 74 20  |Softscreen Text |
00000010  45 64 69 74 6f 72 20 2d  20 49 6e 73 74 72 75 63  |Editor - Instruc|
00000020  74 69 6f 6e 73 20 20 62  79 20 47 61 76 69 6e 20  |tions  by Gavin |
00000030  48 61 69 6e 65 73 20 32  35 74 68 20 4d 61 72 63  |Haines 25th Marc|
00000040  68 20 31 39 38 37 0d 0d  48 69 73 74 6f 72 79 0d  |h 1987..History.|
00000050  0d 54 68 69 73 20 70 61  63 6b 61 67 65 20 77 61  |.This package wa|
00000060  73 20 6f 72 69 67 69 6e  61 6c 6c 79 20 77 72 69  |s originally wri|
00000070  74 74 65 6e 20 75 73 69  6e 67 20 61 6e 20 41 63  |tten using an Ac|
00000080  6f 72 6e 20 45 6c 65 63  74 72 6f 6e 2c 20 61 6e  |orn Electron, an|
00000090  64 20 74 68 65 20 69 64  65 61 0d 77 61 73 20 74  |d the idea.was t|
000000a0  6f 20 70 72 6f 76 69 64  65 20 61 20 63 68 65 61  |o provide a chea|
000000b0  70 20 52 41 4d 20 74 65  78 74 20 65 64 69 74 6f  |p RAM text edito|
000000c0  72 20 66 6f 72 20 74 68  6f 73 65 20 77 68 6f 20  |r for those who |
000000d0  63 6f 75 6c 64 20 6e 6f  74 20 61 66 66 6f 72 64  |could not afford|
000000e0  20 56 49 45 57 0d 65 74  63 2e 20 54 68 65 20 70  | VIEW.etc. The p|
000000f0  72 6f 67 72 61 6d 6d 65  72 20 77 61 73 20 61 20  |rogrammer was a |
00000100  63 6f 6d 70 75 74 65 72  20 73 63 69 65 6e 63 65  |computer science|
00000110  20 67 72 61 64 75 61 74  65 20 77 68 6f 20 75 6e  | graduate who un|
00000120  64 65 72 74 6f 6f 6b 20  74 68 65 0d 70 72 6f 6a  |dertook the.proj|
00000130  65 63 74 20 61 73 20 73  6f 6d 65 74 68 69 6e 67  |ect as something|
00000140  20 74 6f 20 64 6f 20 77  68 69 6c 65 20 68 65 20  | to do while he |
00000150  77 61 73 20 6c 6f 6f 6b  69 6e 67 20 66 6f 72 20  |was looking for |
00000160  65 6d 70 6c 6f 79 6d 65  6e 74 2e 20 20 57 68 65  |employment.  Whe|
00000170  6e 20 74 68 65 0d 70 61  63 6b 61 67 65 20 77 61  |n the.package wa|
00000180  73 20 6e 65 61 72 6c 79  20 66 69 6e 69 73 68 65  |s nearly finishe|
00000190  64 2c 20 68 65 20 74 61  6c 6b 65 64 20 61 6c 6c  |d, he talked all|
000001a0  20 61 62 6f 75 74 20 69  74 20 74 6f 20 73 6f 6d  | about it to som|
000001b0  65 6f 6e 65 20 66 72 6f  6d 20 61 0d 6c 6f 63 61  |eone from a.loca|
000001c0  6c 20 65 6c 65 63 74 72  6f 6e 69 63 73 20 66 69  |l electronics fi|
000001d0  72 6d 20 77 68 6f 20 74  68 65 20 6e 20 6f 66 66  |rm who the n off|
000001e0  65 72 65 64 20 68 69 6d  20 61 20 6a 6f 62 2e 0d  |ered him a job..|
000001f0  0d 52 61 74 68 65 72 20  74 68 61 6e 20 6c 65 74  |.Rather than let|
00000200  20 74 68 65 20 77 68 6f  6c 65 20 74 68 69 6e 67  | the whole thing|
00000210  20 67 6f 20 74 6f 20 77  61 73 74 65 2c 20 49 20  | go to waste, I |
00000220  64 65 63 69 64 65 64 20  74 6f 20 6d 6f 64 69 66  |decided to modif|
00000230  79 20 69 74 20 66 6f 72  0d 75 73 65 20 61 73 20  |y it for.use as |
00000240  61 6e 20 61 73 73 65 6d  62 6c 79 20 6c 61 6e 67  |an assembly lang|
00000250  75 61 67 65 20 73 6f 75  72 63 65 20 66 69 6c 65  |uage source file|
00000260  20 65 64 69 74 6f 72 2e  20 20 49 74 20 63 61 6e  | editor.  It can|
00000270  20 61 6c 73 6f 20 62 65  20 75 73 65 64 20 74 6f  | also be used to|
00000280  0d 77 72 69 74 65 20 6c  65 74 74 65 72 73 20 65  |.write letters e|
00000290  74 63 2e 2c 20 69 66 20  79 6f 75 20 64 6f 20 64  |tc., if you do d|
000002a0  6f 20 6e 6f 74 20 68 61  76 65 20 56 49 45 57 2e  |o not have VIEW.|
000002b0  20 20 48 6f 77 65 76 65  72 2c 20 74 68 65 20 6d  |  However, the m|
000002c0  61 69 6e 20 69 64 65 61  20 69 73 0d 74 6f 20 64  |ain idea is.to d|
000002d0  65 6d 6f 6e 73 74 72 61  74 65 20 68 6f 77 20 79  |emonstrate how y|
000002e0  6f 75 20 63 61 6e 20 67  6f 20 61 62 6f 75 74 20  |ou can go about |
000002f0  63 72 65 61 74 69 6e 67  20 61 20 6c 61 72 67 65  |creating a large|
00000300  20 61 73 73 65 6d 62 6c  79 20 6c 61 6e 67 75 61  | assembly langua|
00000310  67 65 0d 70 72 6f 67 72  61 6d 2e 20 20 49 74 20  |ge.program.  It |
00000320  69 73 20 69 73 20 36 35  30 32 20 6d 61 63 68 69  |is is 6502 machi|
00000330  6e 65 20 63 6f 64 65 20  74 68 72 6f 75 67 68 6f  |ne code througho|
00000340  75 74 2e 0d 0d 54 68 65  20 69 64 65 61 20 6f 66  |ut...The idea of|
00000350  20 53 6f 66 74 73 63 72  65 65 6e 20 69 73 20 74  | Softscreen is t|
00000360  68 61 74 20 79 6f 75 20  63 61 6e 20 65 6e 74 65  |hat you can ente|
00000370  72 20 61 6e 64 20 65 64  69 74 20 74 65 78 74 20  |r and edit text |
00000380  77 69 74 68 6f 75 74 20  68 61 76 69 6e 67 0d 74  |without having.t|
00000390  6f 20 77 6f 72 72 79 20  61 62 6f 75 74 20 66 6f  |o worry about fo|
000003a0  72 6d 61 74 74 69 6e 67  2e 20 20 4e 6f 20 6d 61  |rmatting.  No ma|
000003b0  74 74 65 72 20 68 6f 77  20 79 6f 75 20 69 6e 73  |tter how you ins|
000003c0  65 72 74 2c 20 64 65 6c  65 74 65 2c 20 6f 72 20  |ert, delete, or |
000003d0  6d 6f 76 65 0d 74 65 78  74 2c 20 74 68 65 20 73  |move.text, the s|
000003e0  63 72 65 65 6e 20 69 73  20 61 6c 77 61 79 73 20  |creen is always |
000003f0  6b 65 70 74 20 63 6f 6d  70 6c 65 74 65 6c 79 20  |kept completely |
00000400  75 70 20 74 6f 20 64 61  74 65 2e 20 20 55 6e 6c  |up to date.  Unl|
00000410  69 6b 65 20 56 49 45 57  2c 20 61 6e 79 0d 74 65  |ike VIEW, any.te|
00000420  78 74 20 64 65 6c 65 74  65 64 20 62 79 20 61 63  |xt deleted by ac|
00000430  63 69 64 65 6e 74 20 63  61 6e 20 62 65 20 72 65  |cident can be re|
00000440  63 6f 76 65 72 65 64 2e  20 20 54 68 65 20 64 65  |covered.  The de|
00000450  73 69 67 6e 20 70 68 69  6c 6f 73 6f 70 68 79 20  |sign philosophy |
00000460  68 61 73 20 62 65 65 6e  0d 74 6f 20 6b 65 65 70  |has been.to keep|
00000470  20 69 74 20 61 6c 6c 20  65 78 74 72 65 6d 65 6c  | it all extremel|
00000480  79 20 73 69 6d 70 6c 65  20 61 6e 64 20 65 61 73  |y simple and eas|
00000490  79 20 74 6f 20 75 73 65  2e 0d 0d 54 68 65 20 73  |y to use...The s|
000004a0  6f 75 72 63 65 20 63 6f  64 65 20 63 6f 6e 73 69  |ource code consi|
000004b0  73 74 73 20 6f 66 20 61  20 6e 75 6d 62 65 72 20  |sts of a number |
000004c0  6f 66 20 74 65 78 74 20  66 69 6c 65 73 20 77 68  |of text files wh|
000004d0  69 63 68 20 63 61 6e 20  62 65 20 61 73 73 65 6d  |ich can be assem|
000004e0  62 6c 65 64 0d 69 6e 20  61 6e 79 20 6f 72 64 65  |bled.in any orde|
000004f0  72 2e 0d 0d 54 2e 49 4e  53 54 52 20 69 73 20 74  |r...T.INSTR is t|
00000500  68 69 73 20 66 69 6c 65  2e 0d 54 2e 53 41 4d 50  |his file..T.SAMP|
00000510  4c 45 20 69 73 20 73 6f  6d 65 20 73 61 6d 70 6c  |LE is some sampl|
00000520  65 20 74 65 78 74 20 66  6f 72 20 74 65 73 74 69  |e text for testi|
00000530  6e 67 20 6f 75 74 20 79  6f 75 72 20 70 72 69 6e  |ng out your prin|
00000540  74 65 72 20 65 74 63 2e  0d 0d 49 20 68 61 76 65  |ter etc...I have|
00000550  20 61 73 73 65 6d 62 6c  65 64 20 74 68 65 20 66  | assembled the f|
00000560  6f 6c 6c 6f 77 69 6e 67  20 6f 62 6a 65 63 74 20  |ollowing object |
00000570  66 69 6c 65 73 20 66 6f  72 20 74 68 65 20 73 61  |files for the sa|
00000580  6b 65 20 6f 66 20 63 6f  6e 76 65 6e 69 65 6e 63  |ke of convenienc|
00000590  65 2e 0d 0d 4f 42 4a 34  42 36 30 20 20 20 20 20  |e...OBJ4B60     |
000005a0  6c 6f 61 64 73 20 61 74  20 26 34 42 36 30 20 6f  |loads at &4B60 o|
000005b0  6e 20 74 68 65 20 33 32  6b 20 42 42 43 20 4d 69  |n the 32k BBC Mi|
000005c0  63 72 6f 0d 4f 42 4a 45  33 30 30 20 20 20 20 20  |cro.OBJE300     |
000005d0  6c 6f 61 64 73 20 61 74  20 26 45 33 30 30 20 6f  |loads at &E300 o|
000005e0  6e 20 74 68 65 20 36 35  30 32 20 53 65 63 6f 6e  |n the 6502 Secon|
000005f0  64 20 50 72 6f 63 65 73  73 6f 72 0d 4f 42 4a 38  |d Processor.OBJ8|
00000600  30 30 30 20 20 20 20 20  6c 6f 61 64 73 20 61 74  |000     loads at|
00000610  20 26 38 30 30 30 20 6f  6e 20 74 68 65 20 42 42  | &8000 on the BB|
00000620  43 20 4d 69 63 72 6f 20  28 50 61 67 65 64 20 52  |C Micro (Paged R|
00000630  41 4d 20 61 72 65 61 29  0d 0d 41 6c 6c 20 74 68  |AM area)..All th|
00000640  65 73 65 20 76 65 72 73  69 6f 6e 73 20 61 72 65  |ese versions are|
00000650  20 74 68 65 20 73 61 6d  65 20 65 78 63 65 70 74  | the same except|
00000660  20 69 6e 20 74 68 65 20  73 69 7a 65 20 6f 66 20  | in the size of |
00000670  74 65 78 74 20 66 69 6c  65 20 77 68 69 63 68 20  |text file which |
00000680  6d 61 79 0d 62 65 20 6c  6f 61 64 65 64 2e 20 20  |may.be loaded.  |
00000690  28 59 6f 75 20 63 61 6e  20 2a 52 45 4e 41 4d 45  |(You can *RENAME|
000006a0  20 74 68 69 73 20 66 69  6c 65 73 20 74 6f 20 6d  | this files to m|
000006b0  6f 72 65 20 6d 6f 72 65  20 6d 65 6d 6f 72 61 62  |ore more memorab|
000006c0  6c 65 0d 64 65 73 69 67  6e 61 74 69 6f 6e 73 2c  |le.designations,|
000006d0  20 73 75 63 68 20 61 73  20 45 44 49 54 4f 52 29  | such as EDITOR)|
000006e0  2e 0d 0d 54 6f 20 75 73  65 20 6f 6e 20 74 68 65  |...To use on the|
000006f0  20 42 42 43 20 4d 69 63  72 6f 2c 20 79 6f 75 20  | BBC Micro, you |
00000700  77 6f 75 6c 64 20 74 79  70 65 3a 20 0d 0d 2a 4f  |would type: ..*O|
00000710  42 4a 34 42 36 30 0d 0d  49 74 20 69 73 20 66 6f  |BJ4B60..It is fo|
00000720  72 63 65 64 20 69 6e 74  6f 20 4d 4f 44 45 20 36  |rced into MODE 6|
00000730  20 6f 6e 20 61 20 70 6c  61 69 6e 20 42 42 43 20  | on a plain BBC |
00000740  4d 69 63 72 6f 2e 20 20  4d 4f 44 45 20 37 20 69  |Micro.  MODE 7 i|
00000750  73 20 6e 6f 74 20 75 73  65 64 20 62 65 63 61 75  |s not used becau|
00000760  73 65 0d 74 68 65 20 45  6c 65 63 74 72 6f 6e 20  |se.the Electron |
00000770  64 6f 65 73 20 6e 6f 74  20 68 61 76 65 20 69 74  |does not have it|
00000780  2e 20 20 59 6f 75 20 63  61 6e 20 75 73 65 20 38  |.  You can use 8|
00000790  30 20 63 6f 6c 75 6d 6e  73 20 6f 6e 20 74 68 65  |0 columns on the|
000007a0  20 6f 74 68 65 72 0d 73  79 73 74 65 6d 73 20 77  | other.systems w|
000007b0  69 74 68 20 6d 6f 72 65  20 6d 65 6d 6f 72 79 2e  |ith more memory.|
000007c0  0d 0d 54 6f 20 75 73 65  20 6f 6e 20 74 68 65 20  |..To use on the |
000007d0  36 35 30 32 20 53 65 63  6f 6e 64 20 50 72 6f 63  |6502 Second Proc|
000007e0  65 73 73 6f 72 2c 20 79  6f 75 20 77 6f 75 6c 64  |essor, you would|
000007f0  20 74 79 70 65 3a 0d 0d  2a 4f 42 4a 45 33 30 30  | type:..*OBJE300|
00000800  0d 0d 57 69 74 68 20 74  68 65 20 53 65 63 6f 6e  |..With the Secon|
00000810  64 20 50 72 6f 63 65 73  73 6f 72 2c 20 69 74 20  |d Processor, it |
00000820  77 69 6c 6c 20 73 74 61  72 74 20 75 70 20 69 6e  |will start up in|
00000830  20 77 68 61 74 65 76 65  72 20 4d 4f 44 45 20 77  | whatever MODE w|
00000840  61 73 0d 70 72 65 76 69  6f 75 73 6c 79 20 61 63  |as.previously ac|
00000850  74 69 76 65 2e 20 20 49  66 20 74 68 65 20 73 79  |tive.  If the sy|
00000860  73 74 65 6d 20 69 73 20  69 6e 20 4d 4f 44 45 37  |stem is in MODE7|
00000870  2c 20 4d 4f 44 45 36 20  77 69 6c 6c 20 62 65 20  |, MODE6 will be |
00000880  73 65 6c 65 63 74 65 64  2e 20 0d 54 68 69 73 20  |selected. .This |
00000890  69 73 20 73 6f 20 74 68  61 74 20 79 6f 75 20 63  |is so that you c|
000008a0  61 6e 20 75 73 65 20 69  74 20 6f 6e 20 74 68 65  |an use it on the|
000008b0  20 45 6c 65 63 74 72 6f  6e 2e 0d 0d 49 66 20 79  | Electron...If y|
000008c0  6f 75 72 20 73 79 73 74  65 6d 20 68 61 73 20 6d  |our system has m|
000008d0  6f 72 65 20 74 68 61 6e  20 33 32 6b 2c 20 79 6f  |ore than 32k, yo|
000008e0  75 20 63 61 6e 20 63 68  61 6e 67 65 20 4d 4f 44  |u can change MOD|
000008f0  45 20 62 79 20 67 6f 69  6e 67 20 74 6f 20 74 68  |E by going to th|
00000900  65 0d 45 6e 74 65 72 20  4f 53 20 43 6f 6d 6d 61  |e.Enter OS Comma|
00000910  6e 64 20 6f 70 74 69 6f  6e 20 61 6e 64 20 74 79  |nd option and ty|
00000920  70 69 6e 67 2e 0d 0d 2a  46 58 32 35 35 2c 32 35  |ping...*FX255,25|
00000930  31 20 20 20 28 4d 4f 44  45 33 29 0d 2a 46 58 32  |1   (MODE3).*FX2|
00000940  35 35 2c 32 35 34 20 20  20 28 4d 4f 44 45 36 29  |55,254   (MODE6)|
00000950  0d 0d 54 68 65 6e 20 70  72 65 73 73 20 74 68 65  |..Then press the|
00000960  20 42 52 45 41 4b 20 6b  65 79 2e 20 20 43 68 61  | BREAK key.  Cha|
00000970  6e 67 69 6e 67 20 4d 4f  44 45 20 61 6c 74 65 72  |nging MODE alter|
00000980  73 20 74 68 65 20 61 6d  6f 75 6e 74 20 6f 66 20  |s the amount of |
00000990  61 76 61 69 6c 61 62 6c  65 0d 52 41 4d 20 6f 6e  |available.RAM on|
000009a0  20 73 6f 6d 65 20 73 79  73 74 65 6d 73 2c 20 73  | some systems, s|
000009b0  6f 20 61 6e 79 20 74 65  78 74 20 69 6e 20 6d 65  |o any text in me|
000009c0  6d 6f 72 79 20 69 73 20  63 6c 65 61 72 65 64 2e  |mory is cleared.|
000009d0  0d 0d 45 6e 74 65 72 69  6e 67 20 4f 70 65 72 61  |..Entering Opera|
000009e0  74 69 6e 67 20 53 79 73  74 65 6d 20 28 53 74 61  |ting System (Sta|
000009f0  72 29 20 43 6f 6d 6d 61  6e 64 73 0d 0d 59 6f 75  |r) Commands..You|
00000a00  20 63 61 6e 20 65 6e 74  65 72 20 61 6e 79 20 63  | can enter any c|
00000a10  6f 6d 6d 61 6e 64 20 74  68 61 74 20 79 6f 75 20  |ommand that you |
00000a20  63 6f 75 6c 64 20 65 6e  74 65 72 20 66 72 6f 6d  |could enter from|
00000a30  20 42 41 53 49 43 2c 20  62 75 74 20 64 6f 20 6e  | BASIC, but do n|
00000a40  6f 74 0d 65 78 65 63 75  74 65 20 61 20 63 6f 6d  |ot.execute a com|
00000a50  6d 61 6e 64 20 28 73 75  63 68 20 61 73 20 2a 42  |mand (such as *B|
00000a60  41 53 49 43 29 20 74 68  61 74 20 77 69 6c 6c 20  |ASIC) that will |
00000a70  74 61 6b 65 20 79 6f 75  20 6f 75 74 20 6f 66 20  |take you out of |
00000a80  53 6f 66 74 73 63 72 65  65 6e 20 61 73 0d 74 68  |Softscreen as.th|
00000a90  69 73 20 77 69 6c 6c 20  28 6f 62 76 69 6f 75 73  |is will (obvious|
00000aa0  6c 79 29 20 6c 6f 73 65  20 61 6e 79 20 74 65 78  |ly) lose any tex|
00000ab0  74 20 74 68 61 74 20 79  6f 75 20 68 61 70 70 65  |t that you happe|
00000ac0  6e 20 74 6f 20 68 61 76  65 20 69 6e 20 6d 65 6d  |n to have in mem|
00000ad0  6f 72 79 2e 20 20 54 6f  0d 65 78 69 74 20 74 6f  |ory.  To.exit to|
00000ae0  20 42 41 53 49 43 2c 20  73 65 6c 65 63 74 20 74  | BASIC, select t|
00000af0  68 69 73 20 6f 70 74 69  6f 6e 20 66 72 6f 6d 20  |his option from |
00000b00  74 68 65 20 4d 61 69 6e  20 4d 65 6e 75 2e 20 20  |the Main Menu.  |
00000b10  4f 62 76 69 6f 75 73 6c  79 20 79 6f 75 0d 73 68  |Obviously you.sh|
00000b20  6f 75 6c 64 20 6e 6f 74  20 65 6e 74 65 72 20 61  |ould not enter a|
00000b30  6e 79 20 63 6f 6d 6d 61  6e 64 20 77 68 69 63 68  |ny command which|
00000b40  20 63 6f 75 6c 64 20 63  72 61 73 68 20 53 6f 66  | could crash Sof|
00000b50  74 73 63 72 65 65 6e 2e  20 20 49 74 20 69 73 20  |tscreen.  It is |
00000b60  6e 6f 74 0d 6e 65 63 65  73 73 61 72 79 20 74 6f  |not.necessary to|
00000b70  20 74 79 70 65 20 74 68  65 20 73 74 61 72 20 2a  | type the star *|
00000b80  20 77 68 65 6e 20 65 6e  74 65 72 69 6e 67 20 73  | when entering s|
00000b90  79 73 74 65 6d 20 63 6f  6d 6d 61 6e 64 73 2e 0d  |ystem commands..|
00000ba0  0d 54 79 70 69 6e 67 20  43 54 52 4c 2d 42 52 45  |.Typing CTRL-BRE|
00000bb0  41 4b 20 77 69 6c 6c 20  67 65 74 20 79 6f 75 20  |AK will get you |
00000bc0  6f 75 74 20 6f 66 20 53  6f 66 74 73 63 72 65 65  |out of Softscree|
00000bd0  6e 0d 0d 4c 6f 61 64 69  6e 67 20 61 6e 64 20 73  |n..Loading and s|
00000be0  61 76 69 6e 67 20 6f 66  20 66 69 6c 65 73 20 66  |aving of files f|
00000bf0  72 6f 6d 20 74 68 65 20  46 69 6c 65 72 20 4d 65  |rom the Filer Me|
00000c00  6e 75 20 69 73 20 73 65  6c 66 2d 65 78 70 6c 61  |nu is self-expla|
00000c10  6e 61 74 6f 72 79 2e 20  0d 53 61 76 65 64 20 66  |natory. .Saved f|
00000c20  69 6c 65 73 20 61 72 65  20 61 75 74 6f 6d 61 74  |iles are automat|
00000c30  69 63 61 6c 6c 79 20 6c  6f 63 6b 65 64 20 74 6f  |ically locked to|
00000c40  20 70 72 65 76 65 6e 74  20 61 63 63 69 64 65 6e  | prevent acciden|
00000c50  74 61 6c 20 64 65 6c 65  74 69 6f 6e 2e 20 20 54  |tal deletion.  T|
00000c60  6f 0d 75 73 65 20 74 68  65 20 73 61 6d 65 20 66  |o.use the same f|
00000c70  69 6c 65 6e 61 6d 65 2c  20 75 6e 6c 6f 63 6b 20  |ilename, unlock |
00000c80  74 68 65 20 66 69 6c 65  20 66 69 72 73 74 2e 0d  |the file first..|
00000c90  0d 49 46 20 79 6f 75 20  73 65 6c 65 63 74 20 74  |.IF you select t|
00000ca0  68 65 20 22 53 61 76 65  20 77 6f 72 6b 66 69 6c  |he "Save workfil|
00000cb0  65 22 20 6f 70 74 69 6f  6e 20 66 72 6f 6d 20 74  |e" option from t|
00000cc0  68 65 20 45 64 69 74 6f  72 20 6d 65 6e 75 2c 20  |he Editor menu, |
00000cd0  74 68 65 20 73 79 73 74  65 6d 0d 77 69 6c 6c 20  |the system.will |
00000ce0  75 73 65 20 74 68 65 20  6c 61 73 74 20 75 73 65  |use the last use|
00000cf0  64 20 66 69 6c 65 6e 61  6d 65 3a 20 20 59 6f 75  |d filename:  You|
00000d00  20 77 69 6c 6c 20 67 65  74 20 61 6e 20 65 72 72  | will get an err|
00000d10  6f 72 20 69 66 20 6e 6f  20 66 69 6c 65 20 68 61  |or if no file ha|
00000d20  73 0d 62 65 65 6e 20 70  72 65 76 69 6f 75 73 6c  |s.been previousl|
00000d30  79 20 6c 6f 61 64 65 64  2c 20 6c 6f 63 6b 65 64  |y loaded, locked|
00000d40  20 6f 72 20 75 6e 6c 6f  63 6b 65 64 2e 20 20 0d  | or unlocked.  .|
00000d50  0d 59 6f 75 20 63 61 6e  20 75 73 65 20 63 61 73  |.You can use cas|
00000d60  73 65 74 74 65 73 20 62  79 20 73 65 6c 65 63 74  |settes by select|
00000d70  69 6e 67 20 2a 54 41 50  45 0d 0d 43 75 72 73 6f  |ing *TAPE..Curso|
00000d80  72 20 6d 6f 76 65 6d 65  6e 74 0d 0d 41 72 72 6f  |r movement..Arro|
00000d90  77 20 6b 65 79 73 20 6d  6f 76 65 20 62 79 20 63  |w keys move by c|
00000da0  68 61 72 61 63 74 65 72  3a 20 75 70 20 64 6f 77  |haracter: up dow|
00000db0  6e 20 6c 65 66 74 20 72  69 67 68 74 0d 0d 43 54  |n left right..CT|
00000dc0  52 4c 2d 54 20 20 54 6f  70 20 6f 66 20 70 61 67  |RL-T  Top of pag|
00000dd0  65 0d 43 54 52 4c 2d 56  20 20 56 65 72 74 69 63  |e.CTRL-V  Vertic|
00000de0  61 6c 20 2d 20 62 6f 74  74 6f 6d 20 6f 66 20 70  |al - bottom of p|
00000df0  61 67 65 0d 43 54 52 4c  2d 53 20 20 66 6f 72 77  |age.CTRL-S  forw|
00000e00  61 72 64 73 20 6f 6e 65  20 77 6f 72 64 0d 43 54  |ards one word.CT|
00000e10  52 4c 2d 41 20 20 62 61  63 6b 77 61 72 64 73 20  |RL-A  backwards |
00000e20  6f 6e 65 20 77 6f 72 64  0d 0d 43 54 52 4c 2d 53  |one word..CTRL-S|
00000e30  20 20 53 74 61 72 74 20  6f 66 20 54 65 78 74 0d  |  Start of Text.|
00000e40  43 54 52 4c 2d 45 20 20  45 6e 64 20 6f 66 20 54  |CTRL-E  End of T|
00000e50  65 78 74 0d 43 54 52 4c  2d 43 20 20 43 75 74 20  |ext.CTRL-C  Cut |
00000e60  2d 20 64 65 66 69 6e 65  20 62 6c 6f 63 6b 20 20  |- define block  |
00000e70  20 20 20 20 20 20 20 0d  43 54 52 4c 2d 43 20 20  |       .CTRL-C  |
00000e80  43 75 74 20 2d 20 64 65  66 69 6e 65 20 65 6e 64  |Cut - define end|
00000e90  20 6f 66 20 62 6c 6f 63  6b 20 0d 43 54 52 4c 2d  | of block .CTRL-|
00000ea0  50 20 20 50 61 73 74 65  20 28 68 61 76 69 6e 67  |P  Paste (having|
00000eb0  20 70 72 65 76 69 6f 75  73 6c 79 20 6d 6f 76 65  | previously move|
00000ec0  64 20 63 75 72 73 6f 72  20 62 65 6c 6f 77 20 74  |d cursor below t|
00000ed0  68 65 20 62 6c 6f 63 6b  20 6a 75 73 74 0d 20 20  |he block just.  |
00000ee0  20 20 20 20 20 20 64 65  66 69 6e 65 64 29 0d 0d  |      defined)..|
00000ef0  59 6f 75 20 63 61 6e 6e  6f 74 20 70 61 73 74 65  |You cannot paste|
00000f00  20 77 69 74 68 20 74 68  65 20 63 75 72 73 6f 72  | with the cursor|
00000f10  20 61 62 6f 76 65 20 74  68 65 20 62 6c 6f 63 6b  | above the block|
00000f20  2e 20 20 54 6f 20 6d 6f  76 65 20 74 65 78 74 20  |.  To move text |
00000f30  75 70 2c 20 75 73 65 0d  74 68 65 20 44 45 4c 45  |up, use.the DELE|
00000f40  54 45 20 61 6e 64 20 43  4f 50 59 20 6b 65 79 73  |TE and COPY keys|
00000f50  2e 0d 0d 43 54 52 4c 2d  5a 20 20 5a 61 70 20 20  |...CTRL-Z  Zap  |
00000f60  64 65 6c 65 74 65 20 74  68 65 20 62 6c 6f 63 6b  |delete the block|
00000f70  0d 0d 43 54 52 4c 2d 4f  20 20 4f 76 65 72 74 79  |..CTRL-O  Overty|
00000f80  70 65 2f 69 6e 73 65 72  74 20 74 6f 67 67 6c 65  |pe/insert toggle|
00000f90  0d 0d 43 54 52 4c 2d 44  20 20 44 65 6c 65 74 65  |..CTRL-D  Delete|
00000fa0  20 63 68 61 72 61 63 74  65 72 20 69 6e 20 66 72  | character in fr|
00000fb0  6f 6e 74 20 6f 66 20 74  68 65 20 63 75 72 73 6f  |ont of the curso|
00000fc0  72 0d 54 68 65 20 44 45  4c 45 54 45 20 6b 65 79  |r.The DELETE key|
00000fd0  20 64 65 6c 65 74 65 73  20 74 65 78 74 20 62 65  | deletes text be|
00000fe0  68 69 6e 64 20 74 68 65  20 63 75 72 73 6f 72 0d  |hind the cursor.|
00000ff0  0d 54 68 65 20 43 4f 50  59 20 6b 65 79 20 75 6e  |.The COPY key un|
00001000  64 65 6c 65 74 65 73 0d  0d 59 6f 75 20 63 61 6e  |deletes..You can|
00001010  20 6d 6f 76 65 20 77 6f  72 64 73 20 61 6e 64 20  | move words and |
00001020  6c 69 6e 65 73 20 62 79  20 75 73 69 6e 67 20 74  |lines by using t|
00001030  68 65 20 44 45 4c 45 54  45 20 6b 65 79 2c 20 6d  |he DELETE key, m|
00001040  6f 76 69 6e 67 20 74 68  65 20 63 75 72 73 6f 72  |oving the cursor|
00001050  20 61 6e 64 20 74 68 65  6e 20 75 73 69 6e 67 20  | and then using |
00001060  74 68 65 20 43 4f 50 59  20 6b 65 79 2e 0d 0d 43  |the COPY key...C|
00001070  54 52 4c 2d 4c 20 20 44  65 6c 65 74 65 73 20 74  |TRL-L  Deletes t|
00001080  68 65 20 65 6e 64 20 6f  66 20 74 68 65 20 4c 69  |he end of the Li|
00001090  6e 65 0d 43 54 52 4c 2d  4b 20 20 28 4b 69 6c 6c  |ne.CTRL-K  (Kill|
000010a0  29 20 64 65 6c 65 74 65  73 20 74 68 65 20 6c 69  |) deletes the li|
000010b0  6e 65 20 62 61 63 6b 20  74 6f 20 74 68 65 20 65  |ne back to the e|
000010c0  6e 64 20 6f 66 20 74 68  65 20 70 72 65 76 69 6f  |nd of the previo|
000010d0  75 73 20 6c 69 6e 65 2e  0d 43 54 52 4c 2d 51 20  |us line..CTRL-Q |
000010e0  20 64 65 6c 65 74 65 73  20 61 20 77 6f 72 64 20  | deletes a word |
000010f0  62 61 63 6b 77 6f 72 64  73 0d 43 54 52 4c 2d 57  |backwords.CTRL-W|
00001100  20 20 64 65 6c 65 74 65  73 20 61 20 77 6f 72 64  |  deletes a word|
00001110  20 66 6f 72 77 61 72 64  73 0d 43 54 52 4c 2d 4e  | forwards.CTRL-N|
00001120  20 20 61 6c 6c 6f 77 73  20 79 6f 75 20 74 6f 20  |  allows you to |
00001130  69 6e 73 65 72 74 20 63  6f 6e 74 72 6f 6c 20 63  |insert control c|
00001140  68 61 72 61 63 74 65 72  73 20 69 6e 74 6f 20 74  |haracters into t|
00001150  68 65 20 66 69 6c 65 2e  0d 0d 50 72 69 6e 74 6f  |he file...Printo|
00001160  75 74 3a 0d 0d 59 6f 75  20 63 61 6e 20 6e 75 6d  |ut:..You can num|
00001170  62 65 72 20 6c 69 6e 65  73 20 6f 66 20 61 75 74  |ber lines of aut|
00001180  6f 6d 61 74 69 63 61 6c  6c 79 20 62 79 20 73 65  |omatically by se|
00001190  6c 65 63 74 69 6e 67 20  74 68 69 73 20 6f 70 74  |lecting this opt|
000011a0  69 6f 6e 20 66 72 6f 6d  20 74 68 65 0d 50 72 69  |ion from the.Pri|
000011b0  6e 74 6f 75 74 20 6d 65  6e 75 2e 20 20 20 4c 69  |ntout menu.   Li|
000011c0  6e 65 20 6e 75 6d 62 65  72 69 6e 67 20 77 69 6c  |ne numbering wil|
000011d0  6c 20 72 65 6d 61 69 6e  20 69 6e 20 65 66 66 65  |l remain in effe|
000011e0  63 74 20 75 6e 74 69 6c  20 79 6f 75 20 63 61 6e  |ct until you can|
000011f0  63 65 6c 0d 69 74 2e 0d  0d 54 68 65 20 70 72 69  |cel.it...The pri|
00001200  6e 74 65 72 20 70 61 63  6b 61 67 65 20 69 73 20  |nter package is |
00001210  73 65 74 20 75 70 20 66  6f 72 20 73 74 61 6e 64  |set up for stand|
00001220  61 72 64 20 36 36 20 6c  69 6e 65 73 20 66 61 6e  |ard 66 lines fan|
00001230  66 6f 6c 64 20 6f 72 20  41 34 20 63 75 74 0d 73  |fold or A4 cut.s|
00001240  68 65 65 74 2e 0d 0d 49  74 20 69 73 20 61 64 76  |heet...It is adv|
00001250  69 73 61 62 6c 65 20 74  6f 20 74 65 73 74 20 70  |isable to test p|
00001260  72 69 6e 74 20 62 65 66  6f 72 65 20 74 72 79 69  |rint before tryi|
00001270  6e 67 20 74 6f 20 67 65  74 20 68 61 72 64 20 63  |ng to get hard c|
00001280  6f 70 79 2c 20 69 6e 20  63 61 73 65 20 79 6f 75  |opy, in case you|
00001290  0d 68 61 76 65 20 69 6e  61 64 76 65 72 74 65 6e  |.have inadverten|
000012a0  74 6c 79 20 6c 6f 61 64  65 64 20 74 68 65 20 77  |tly loaded the w|
000012b0  72 6f 6e 67 20 66 69 6c  65 2e 0d 0d 49 66 20 79  |rong file...If y|
000012c0  6f 75 20 6e 65 65 64 20  74 6f 20 73 74 6f 70 20  |ou need to stop |
000012d0  73 65 6e 64 69 6e 67 20  74 65 78 74 20 74 6f 20  |sending text to |
000012e0  74 68 65 20 70 72 69 6e  74 65 72 20 28 66 6f 72  |the printer (for|
000012f0  20 65 78 61 6d 70 6c 65  20 74 6f 20 63 68 61 6e  | example to chan|
00001300  67 65 20 74 68 65 0d 72  69 62 62 6f 6e 29 2c 20  |ge the.ribbon), |
00001310  20 70 72 65 73 73 20 74  68 65 20 53 50 41 43 45  | press the SPACE|
00001320  20 62 61 72 2e 20 20 50  72 65 73 73 20 74 68 65  | bar.  Press the|
00001330  20 45 53 43 20 6b 65 79  20 74 6f 20 61 62 61 6e  | ESC key to aban|
00001340  64 6f 6e 20 70 72 69 6e  74 69 6e 67 0d 61 6c 74  |don printing.alt|
00001350  6f 67 65 74 68 65 72 2e  0d 0d 54 65 63 68 6e 69  |ogether...Techni|
00001360  63 61 6c 20 49 6e 66 6f  72 6d 61 74 69 6f 6e 2e  |cal Information.|
00001370  0d 0d 28 59 6f 75 20 6e  65 65 64 20 73 6f 6d 65  |..(You need some|
00001380  20 6b 6e 6f 77 6c 65 64  67 65 20 6f 66 20 61 73  | knowledge of as|
00001390  73 65 6d 62 6c 79 20 6c  61 6e 67 75 61 67 65 20  |sembly language |
000013a0  69 66 20 79 6f 75 20 61  72 65 20 67 6f 69 6e 67  |if you are going|
000013b0  20 74 6f 0d 75 6e 64 65  72 73 74 61 6e 64 20 77  | to.understand w|
000013c0  68 61 74 20 66 6f 6c 6c  6f 77 73 20 2d 20 69 74  |hat follows - it|
000013d0  20 69 73 20 6e 6f 74 20  69 6e 74 65 6e 64 65 64  | is not intended|
000013e0  20 66 6f 72 20 74 68 65  20 6e 6f 76 69 63 65 29  | for the novice)|
000013f0  2e 0d 0d 54 68 65 20 66  6f 6c 6c 6f 77 69 6e 67  |...The following|
00001400  20 66 69 6c 65 73 20 6f  66 20 73 6f 75 72 63 65  | files of source|
00001410  20 63 6f 64 65 20 65 78  69 73 74 3a 0d 0d 54 2e  | code exist:..T.|
00001420  53 54 41 52 54 32 20 20  20 20 2d 20 73 65 74 73  |START2    - sets|
00001430  20 75 70 20 61 73 73 65  6d 62 6c 65 72 20 76 61  | up assembler va|
00001440  72 69 61 62 6c 65 73 0d  54 2e 48 45 41 44 45 52  |riables.T.HEADER|
00001450  20 20 20 2d 20 52 4f 4d  20 68 65 61 64 65 72 20  |   - ROM header |
00001460  63 6f 64 65 20 61 6e 64  20 65 72 72 6f 72 20 74  |code and error t|
00001470  72 61 70 70 69 6e 67 0d  54 2e 43 4f 4d 4d 4f 4e  |rapping.T.COMMON|
00001480  20 20 20 2d 20 52 6f 75  74 69 6e 65 73 20 63 6f  |   - Routines co|
00001490  6d 6d 6f 6e 20 74 6f 20  74 68 65 20 77 68 6f 6c  |mmon to the whol|
000014a0  65 20 70 61 63 6b 61 67  65 0d 54 2e 43 55 52 53  |e package.T.CURS|
000014b0  4f 52 20 20 20 2d 20 52  6f 75 74 69 6e 65 73 20  |OR   - Routines |
000014c0  77 68 69 63 68 20 64 65  61 6c 20 77 69 74 68 20  |which deal with |
000014d0  74 68 65 20 63 75 72 73  6f 72 0d 54 2e 53 43 52  |the cursor.T.SCR|
000014e0  45 45 4e 20 20 20 2d 20  52 6f 75 74 69 6e 65 73  |EEN   - Routines|
000014f0  20 64 65 61 6c 69 6e 67  20 77 69 74 68 20 73 63  | dealing with sc|
00001500  72 65 65 6e 0d 54 2e 54  45 58 54 20 20 20 20 20  |reen.T.TEXT     |
00001510  2d 20 53 68 69 66 74 20  74 65 78 74 20 61 62 6f  |- Shift text abo|
00001520  75 74 20 69 6e 20 6d 65  6d 6f 72 79 0d 54 2e 45  |ut in memory.T.E|
00001530  44 49 54 4f 52 20 20 20  2d 20 45 78 65 63 75 74  |DITOR   - Execut|
00001540  65 20 65 64 69 74 6f 72  20 63 6f 6d 6d 61 6e 64  |e editor command|
00001550  73 0d 54 2e 46 49 4c 45  52 20 20 20 20 2d 20 6c  |s.T.FILER    - l|
00001560  6f 61 64 20 61 6e 64 20  73 61 76 65 0d 54 2e 50  |oad and save.T.P|
00001570  52 49 4e 54 45 52 20 20  2d 20 68 61 72 64 20 63  |RINTER  - hard c|
00001580  6f 70 79 20 6f 70 74 69  6f 6e 73 0d 54 2e 4d 41  |opy options.T.MA|
00001590  49 4e 20 20 20 20 20 2d  20 4d 65 6e 75 20 6f 70  |IN     - Menu op|
000015a0  74 69 6f 6e 73 0d 0d 0d  54 6f 20 61 73 73 65 6d  |tions...To assem|
000015b0  62 6c 65 20 74 68 65 20  73 6f 75 72 63 65 20 75  |ble the source u|
000015c0  73 69 6e 67 20 74 68 65  20 41 6c 61 6e 20 50 68  |sing the Alan Ph|
000015d0  69 6c 6c 69 70 73 20 41  44 45 20 63 6f 6d 70 61  |illips ADE compa|
000015e0  74 69 62 6c 65 20 61 73  73 65 6d 62 6c 65 72 2c  |tible assembler,|
000015f0  0d 79 6f 75 20 77 6f 75  6c 64 20 74 79 70 65 20  |.you would type |
00001600  65 67 3a 0d 0d 2a 41 53  53 45 4d 42 4c 45 20 54  |eg:..*ASSEMBLE T|
00001610  2e 53 54 41 52 54 32 20  2d 4f 4f 42 4a 20 2d 57  |.START2 -OOBJ -W|
00001620  0d 0d 54 68 65 20 66 69  6c 65 73 20 63 61 6e 20  |..The files can |
00001630  62 65 20 61 73 73 65 6d  62 6c 65 64 20 69 6e 20  |be assembled in |
00001640  61 6e 79 20 6f 72 64 65  72 0d 0d 4d 65 6d 6f 72  |any order..Memor|
00001650  79 20 75 73 61 67 65 3a  20 0d 0d 50 61 67 65 20  |y usage: ..Page |
00001660  7a 65 72 6f 3a 20 20 26  37 30 20 2d 26 38 46 20  |zero:  &70 -&8F |
00001670  0d 50 61 67 65 20 26 39  30 30 20 20 0d 50 61 67  |.Page &900  .Pag|
00001680  65 20 26 41 30 30 20 20  0d 0d 53 6f 66 74 73 63  |e &A00  ..Softsc|
00001690  72 65 65 6e 20 64 6f 65  73 20 6e 6f 74 20 6f 76  |reen does not ov|
000016a0  65 72 20 77 72 69 74 65  20 61 6e 79 20 61 72 65  |er write any are|
000016b0  61 73 20 75 73 65 64 20  62 79 20 42 41 53 49 43  |as used by BASIC|
000016c0  2e 20 20 53 6f 66 74 73  63 72 65 65 6e 0d 73 75  |.  Softscreen.su|
000016d0  62 72 6f 75 74 69 6e 65  73 20 63 61 6e 20 74 68  |broutines can th|
000016e0  65 72 65 66 6f 72 65 20  62 65 20 63 61 6c 6c 65  |erefore be calle|
000016f0  64 20 66 72 6f 6d 20 42  41 53 49 43 2e 0d 0d 53  |d from BASIC...S|
00001700  75 62 72 6f 75 74 69 6e  65 73 0d 0d 53 68 69 66  |ubroutines..Shif|
00001710  74 62 20 20 2d 20 53 68  69 66 74 20 62 6c 6f 63  |tb  - Shift bloc|
00001720  6b 20 6f 66 20 6d 65 6d  6f 72 79 20 73 74 61 72  |k of memory star|
00001730  74 69 6e 67 20 61 74 20  61 64 64 72 65 73 73 20  |ting at address |
00001740  69 6e 20 22 6f 72 69 67  69 6e 22 20 61 6e 64 20  |in "origin" and |
00001750  65 6e 64 69 6e 67 0d 77  69 74 68 20 74 68 65 20  |ending.with the |
00001760  62 79 74 65 20 77 68 6f  73 65 20 61 64 64 72 65  |byte whose addre|
00001770  73 73 20 69 73 20 67 69  76 65 6e 20 62 79 20 58  |ss is given by X|
00001780  41 20 2d 31 2e 20 20 4e  65 77 20 73 74 61 72 74  |A -1.  New start|
00001790  20 61 64 64 72 65 73 73  20 6f 66 20 62 6c 6f 63  | address of bloc|
000017a0  6b 0d 69 73 20 69 6e 20  22 64 65 73 74 22 2c 20  |k.is in "dest", |
000017b0  77 68 69 63 68 20 6d 75  73 74 20 62 65 20 62 65  |which must be be|
000017c0  6c 6f 77 20 22 6f 72 69  67 69 6e 22 2e 0d 0d 6f  |low "origin"...o|
000017d0  72 69 67 69 6e 20 3d 20  61 64 64 72 65 73 73 20  |rigin = address |
000017e0  6f 66 20 66 69 72 73 74  20 62 79 74 65 20 69 6e  |of first byte in|
000017f0  20 62 6c 6f 63 6b 0d 58  59 20 20 20 20 20 3d 20  | block.XY     = |
00001800  61 64 64 72 65 73 73 20  6f 66 20 6c 61 73 74 20  |address of last |
00001810  62 79 74 65 20 69 6e 20  62 6c 6f 63 6b 0d 6f 66  |byte in block.of|
00001820  66 73 65 74 20 3d 20 64  69 73 74 61 6e 63 65 20  |fset = distance |
00001830  74 6f 20 6d 6f 76 65 20  62 6c 6f 63 6b 0d 6f 66  |to move block.of|
00001840  66 73 65 74 20 3c 20 30  20 6d 65 61 6e 73 20 73  |fset < 0 means s|
00001850  68 69 66 74 20 64 6f 77  6e 0d 6f 66 66 73 65 74  |hift down.offset|
00001860  20 3e 20 30 20 6d 65 61  6e 73 20 73 68 69 66 74  | > 0 means shift|
00001870  20 75 70 0d 0d 65 78 69  74 73 20 69 66 20 6f 66  | up..exits if of|
00001880  66 73 65 74 20 3d 30 20  6f 72 20 6f 72 69 67 69  |fset =0 or origi|
00001890  6e 20 3c 58 59 0d 0d 6c  6f 63 61 6c 3a 20 64 65  |n <XY..local: de|
000018a0  73 74 2c 20 70 74 72 61  2c 20 70 74 72 62 20 28  |st, ptra, ptrb (|
000018b0  7a 65 72 6f 20 70 61 67  65 29 0d 0d 6f 6e 20 65  |zero page)..on e|
000018c0  78 69 74 3a 20 6f 72 69  67 69 6e 20 61 6e 64 20  |xit: origin and |
000018d0  6f 66 66 73 65 74 20 75  6e 63 68 61 6e 67 65 64  |offset unchanged|
000018e0  2e 20 20 41 2c 58 2c 59  2c 43 20 75 6e 64 65 66  |.  A,X,Y,C undef|
000018f0  69 6e 65 64 2e 0d 0d 49  6e 20 6f 72 64 65 72 20  |ined...In order |
00001900  74 68 61 74 20 74 68 65  20 65 78 65 63 75 74 69  |that the executi|
00001910  6f 6e 20 74 69 6d 65 20  62 65 20 61 73 20 73 68  |on time be as sh|
00001920  6f 72 74 20 61 73 20 70  6f 73 73 69 62 6c 65 2c  |ort as possible,|
00001930  20 69 6e 64 65 78 65 64  0d 61 64 64 72 65 73 73  | indexed.address|
00001940  69 6e 67 20 69 73 20 75  73 65 64 20 77 69 74 68  |ing is used with|
00001950  20 62 61 73 65 73 20 61  64 64 72 65 73 73 65 73  | bases addresses|
00001960  20 70 6f 6b 65 64 20 69  6e 74 6f 20 74 68 65 20  | poked into the |
00001970  70 72 6f 67 72 61 6d 20  64 75 72 69 6e 67 0d 65  |program during.e|
00001980  78 65 63 75 74 69 6f 6e  20 28 74 68 69 73 20 73  |xecution (this s|
00001990  75 62 72 6f 75 74 69 6e  65 20 6d 75 73 74 20 72  |ubroutine must r|
000019a0  75 6e 20 69 6e 20 52 41  4d 29 2e 0d 0d 54 68 65  |un in RAM)...The|
000019b0  20 70 69 65 63 65 20 6f  66 20 63 6f 64 65 20 77  | piece of code w|
000019c0  68 69 63 68 20 64 6f 65  73 20 74 68 65 20 61 63  |hich does the ac|
000019d0  74 75 61 6c 20 73 68 69  66 74 69 6e 67 20 69 73  |tual shifting is|
000019e0  20 61 72 72 61 6e 67 65  64 20 73 6f 20 74 68 61  | arranged so tha|
000019f0  74 20 6f 6e 0d 65 6e 74  72 79 20 58 20 63 6f 6e  |t on.entry X con|
00001a00  74 61 69 6e 73 20 74 68  65 20 6e 75 6d 62 65 72  |tains the number|
00001a10  20 6f 66 20 70 61 67 65  73 20 74 6f 20 62 65 20  | of pages to be |
00001a20  73 68 69 66 74 65 64 20  28 69 6e 63 6c 75 64 69  |shifted (includi|
00001a30  6e 67 20 61 6e 79 0d 69  6e 63 6f 6d 70 6c 65 74  |ng any.incomplet|
00001a40  65 20 70 61 67 65 29 2c  20 61 6e 64 20 59 20 63  |e page), and Y c|
00001a50  6f 6e 74 61 69 6e 73 20  74 68 65 20 74 77 6f 27  |ontains the two'|
00001a60  73 20 63 6f 6d 70 6c 65  6d 65 6e 74 20 6f 66 20  |s complement of |
00001a70  74 68 65 20 6e 75 6d 62  65 72 20 6f 66 0d 62 79  |the number of.by|
00001a80  74 65 73 20 69 6e 20 74  68 65 20 63 6f 6d 70 6c  |tes in the compl|
00001a90  65 74 65 20 70 61 67 65  2e 0d 0d 54 68 65 20 63  |ete page...The c|
00001aa0  6f 64 65 20 70 72 65 76  69 6f 75 73 20 74 6f 20  |ode previous to |
00001ab0  74 68 69 73 20 63 61 6c  63 75 6c 61 74 65 73 20  |this calculates |
00001ac0  58 20 61 6e 64 20 59 20  61 6e 64 20 73 65 74 73  |X and Y and sets|
00001ad0  20 75 70 20 74 68 65 20  69 6e 69 74 69 61 6c 20  | up the initial |
00001ae0  62 61 73 65 0d 61 64 64  72 65 73 73 65 73 2e 0d  |base.addresses..|
00001af0  0d 53 68 65 6f 74 20 2d  20 73 61 6d 65 20 61 73  |.Sheot - same as|
00001b00  20 73 68 69 66 74 62 20  77 69 74 68 20 58 59 20  | shiftb with XY |
00001b10  61 75 74 6f 6d 61 74 69  63 61 6c 6c 79 20 73 65  |automatically se|
00001b20  74 20 74 6f 20 65 6f 74  20 28 65 6e 64 20 6f 66  |t to eot (end of|
00001b30  20 74 65 78 74 29 2e 0d  0d 55 70 64 61 74 65 20  | text)...Update |
00001b40  2d 20 75 70 64 61 74 65  20 61 64 64 72 65 73 73  |- update address|
00001b50  20 74 61 62 6c 65 0d 0d  41 6e 79 20 61 64 64 72  | table..Any addr|
00001b60  65 73 73 65 73 20 67 72  65 61 74 65 72 20 74 68  |esses greater th|
00001b70  61 6e 20 6f 72 69 67 69  6e 20 68 61 76 65 20 6f  |an origin have o|
00001b80  66 66 73 65 74 20 61 64  64 65 64 20 74 6f 20 74  |ffset added to t|
00001b90  68 65 6d 2e 0d 74 61 62  6c 65 20 73 74 61 72 74  |hem..table start|
00001ba0  73 20 61 74 20 63 75 72  0d 6e 75 6d 62 65 72 20  |s at cur.number |
00001bb0  6f 66 20 65 6e 74 72 69  65 73 20 3d 20 74 61 62  |of entries = tab|
00001bc0  73 69 7a 20 2d 31 0d 0d  6f 6e 20 65 78 69 74 3a  |siz -1..on exit:|
00001bd0  20 6f 72 69 67 69 6e 20  61 6e 64 20 6f 66 66 73  | origin and offs|
00001be0  65 74 20 75 6e 63 68 61  6e 67 65 64 2e 20 20 41  |et unchanged.  A|
00001bf0  2c 58 2c 59 2c 43 20 75  6e 64 65 66 69 6e 65 64  |,X,Y,C undefined|
00001c00  0d 0d 43 75 72 70 6f 73  20 2d 20 63 68 65 63 6b  |..Curpos - check|
00001c10  20 69 66 20 63 75 72 73  6f 72 20 69 6e 73 69 64  | if cursor insid|
00001c20  65 20 62 6c 6f 63 6b 2e  20 20 4f 6e 20 65 78 69  |e block.  On exi|
00001c30  74 3a 20 43 20 3d 31 20  69 66 20 73 6f 62 20 3c  |t: C =1 if sob <|
00001c40  20 63 75 72 20 3d 3c 20  65 6f 62 2e 20 0d 4f 6e  | cur =< eob. .On|
00001c50  20 65 78 69 74 3a 20 41  2c 58 2c 59 20 75 6e 64  | exit: A,X,Y und|
00001c60  65 66 69 6e 65 64 0d 0d  42 6c 6f 63 6b 20 20 2d  |efined..Block  -|
00001c70  20 63 68 65 63 6b 73 20  76 61 6c 69 64 20 62 6c  | checks valid bl|
00001c80  6f 63 6b 2e 20 20 4f 6e  20 65 78 69 74 3a 20 43  |ock.  On exit: C|
00001c90  20 73 65 74 20 69 66 20  65 69 74 68 65 72 20 73  | set if either s|
00001ca0  6f 62 20 6f 72 20 65 6f  62 20 69 73 0d 75 6e 64  |ob or eob is.und|
00001cb0  65 66 69 6e 65 64 20 6f  72 20 69 66 20 73 6f 62  |efined or if sob|
00001cc0  20 3e 20 65 6f 62 2e 20  20 4f 6e 20 65 78 69 74  | > eob.  On exit|
00001cd0  3a 20 41 2c 58 2c 59 20  75 6e 64 65 66 69 6e 65  |: A,X,Y undefine|
00001ce0  64 0d 0d 52 6f 6f 6d 20  2d 20 63 68 65 63 6b 73  |d..Room - checks|
00001cf0  20 65 6e 6f 75 67 68 20  72 6f 6f 6d 20 66 6f 72  | enough room for|
00001d00  20 74 65 78 74 20 69 6e  20 73 65 63 74 69 6f 6e  | text in section|
00001d10  3a 20 6f 6e 20 65 78 69  74 20 43 20 73 65 74 20  |: on exit C set |
00001d20  69 66 20 65 6f 74 20 2b  0d 6f 66 66 73 65 74 20  |if eot +.offset |
00001d30  3c 20 45 4f 57 2e 20 20  4f 6e 20 65 78 69 74 3a  |< EOW.  On exit:|
00001d40  20 41 2c 58 2c 59 20 75  6e 64 65 66 69 6e 65 64  | A,X,Y undefined|
00001d50  0d 0d 47 65 74 76 20 2d  20 66 69 6e 64 20 69 6e  |..Getv - find in|
00001d60  20 77 68 69 63 68 20 6c  69 6e 65 20 6f 6e 20 74  | which line on t|
00001d70  68 65 20 73 63 72 65 65  6e 20 61 20 63 65 72 74  |he screen a cert|
00001d80  61 69 6e 20 70 6f 73 69  74 69 6f 6e 20 69 6e 20  |ain position in |
00001d90  74 68 65 20 74 65 78 74  0d 6f 63 63 75 72 73 2e  |the text.occurs.|
00001da0  0d 20 20 20 20 20 20 20  65 6e 74 65 72 20 77 69  |.       enter wi|
00001db0  74 68 20 61 64 64 72 65  73 73 20 69 6e 20 59 41  |th address in YA|
00001dc0  2e 0d 20 20 20 20 20 20  20 65 78 69 74 73 20 77  |..       exits w|
00001dd0  69 74 68 20 6c 69 6e 65  20 69 6e 20 58 3b 20 59  |ith line in X; Y|
00001de0  20 75 6e 63 68 61 6e 67  65 64 3b 20 41 2c 20 43  | unchanged; A, C|
00001df0  20 75 6e 64 65 66 69 6e  65 64 2e 0d 20 20 20 20  | undefined..    |
00001e00  20 20 20 69 66 20 58 20  3d 20 26 46 46 20 74 68  |   if X = &FF th|
00001e10  65 6e 20 62 65 6c 6f 77  20 73 63 72 65 65 6e 20  |en below screen |
00001e20  28 69 6e 20 6d 65 6d 6f  72 79 29 0d 20 20 20 20  |(in memory).    |
00001e30  20 20 20 69 66 20 58 20  3d 20 62 6f 74 74 6f 6d  |   if X = bottom|
00001e40  20 74 68 65 6e 20 61 62  6f 76 65 20 73 63 72 65  | then above scre|
00001e50  65 6e 0d 20 20 20 20 20  20 20 6c 6f 63 61 6c 3a  |en.       local:|
00001e60  20 74 65 6d 70 0d 0d 47  65 74 6c 69 6e 20 2d 20  | temp..Getlin - |
00001e70  66 69 6e 64 20 6c 65 6e  67 68 74 20 6f 66 20 61  |find lenght of a|
00001e80  20 6c 69 6e 65 20 61 6e  64 20 61 64 64 72 65 73  | line and addres|
00001e90  73 20 6f 66 20 73 74 61  72 74 20 6f 66 20 6e 65  |s of start of ne|
00001ea0  78 74 20 6c 69 6e 65 0d  20 20 20 20 20 20 20 65  |xt line.       e|
00001eb0  6e 74 65 72 20 77 69 74  68 20 61 64 64 72 65 73  |nter with addres|
00001ec0  73 20 6f 66 20 6c 69 6e  65 20 69 6e 20 70 74 72  |s of line in ptr|
00001ed0  0d 20 20 20 20 20 20 20  69 66 20 70 74 72 20 3e  |.       if ptr >|
00001ee0  20 65 6f 74 20 74 68 65  6e 20 6c 65 6e 20 3d 20  | eot then len = |
00001ef0  30 0d 20 20 20 20 20 20  20 6c 65 6e 67 74 68 20  |0.       length |
00001f00  6f 66 20 6c 69 6e 65 20  72 65 74 75 72 6e 65 64  |of line returned|
00001f10  20 69 6e 20 6c 65 6e 0d  20 20 20 20 20 20 20 61  | in len.       a|
00001f20  64 64 72 65 73 73 20 6f  66 20 73 74 61 72 74 20  |ddress of start |
00001f30  6f 66 20 6e 65 78 74 20  6c 69 6e 65 20 72 65 74  |of next line ret|
00001f40  75 72 6e 65 64 20 69 6e  20 59 41 0d 20 20 20 20  |urned in YA.    |
00001f50  20 20 20 6f 6e 20 65 78  69 74 3a 20 58 2c 43 20  |   on exit: X,C |
00001f60  75 6e 64 65 66 69 6e 65  64 2e 0d 0d 50 75 74 63  |undefined...Putc|
00001f70  73 72 20 2d 20 70 6c 61  63 65 20 63 75 72 73 6f  |sr - place curso|
00001f80  72 20 61 74 20 70 6f 69  6e 74 20 67 69 76 65 6e  |r at point given|
00001f90  20 62 79 20 59 2c 58 0d  20 20 20 20 20 20 20 6f  | by Y,X.       o|
00001fa0  6e 20 65 78 69 74 3a 20  58 2c 59 20 75 6e 63 68  |n exit: X,Y unch|
00001fb0  61 6e 67 65 64 2c 20 41  2c 43 2c 20 75 6e 64 65  |anged, A,C, unde|
00001fc0  66 69 6e 65 64 2e 0d 0d  43 73 72 73 6f 6c 20 20  |fined...Csrsol  |
00001fd0  70 6c 61 63 65 20 63 75  72 73 6f 72 20 61 74 20  |place cursor at |
00001fe0  73 74 61 72 74 20 6f 66  20 6c 69 6e 65 20 58 0d  |start of line X.|
00001ff0  20 20 20 20 20 20 20 6f  6e 20 65 78 69 74 20 59  |       on exit Y|
00002000  20 3d 20 30 2c 20 58 20  75 6e 63 68 61 6e 67 65  | = 0, X unchange|
00002010  64 2c 20 41 2c 43 2c 20  75 6e 64 65 66 69 6e 65  |d, A,C, undefine|
00002020  64 2e 0d 0d 50 72 6c 69  6e 65 20 20 20 50 72 69  |d...Prline   Pri|
00002030  6e 74 20 61 20 6c 69 6e  65 2c 20 66 69 6c 6c 69  |nt a line, filli|
00002040  6e 67 20 75 70 20 74 6f  20 74 68 65 20 65 6e 64  |ng up to the end|
00002050  20 6f 66 20 6c 69 6e 65  20 77 69 74 68 20 73 70  | of line with sp|
00002060  61 63 65 73 2e 0d 20 20  20 20 20 20 20 43 52 20  |aces..       CR |
00002070  63 68 61 72 61 63 74 65  72 73 20 61 72 65 20 63  |characters are c|
00002080  6f 6e 76 65 72 74 65 64  2e 0d 20 20 20 20 20 20  |onverted..      |
00002090  20 45 6e 74 65 72 20 77  69 74 68 3a 20 61 64 64  | Enter with: add|
000020a0  72 65 73 73 20 6f 66 20  6c 69 6e 65 20 69 6e 20  |ress of line in |
000020b0  70 74 72 0d 20 20 20 20  20 20 20 20 20 20 20 20  |ptr.            |
000020c0  20 20 20 20 20 20 20 70  6f 73 69 74 69 6f 6e 20  |       position |
000020d0  6f 66 20 6c 69 6e 65 20  6f 6e 20 73 63 72 65 65  |of line on scree|
000020e0  6e 20 69 6e 20 76 70 6f  73 0d 20 20 20 20 20 20  |n in vpos.      |
000020f0  20 20 20 20 20 20 20 20  20 20 20 20 20 6c 65 6e  |             len|
00002100  67 74 68 20 6f 66 20 6c  69 6e 65 20 69 6e 20 6c  |gth of line in l|
00002110  65 6e 0d 20 20 20 20 20  20 20 4f 6e 20 65 78 69  |en.       On exi|
00002120  74 3a 20 76 70 6f 73 2c  20 70 74 72 2c 20 6c 65  |t: vpos, ptr, le|
00002130  6e 20 75 6e 63 68 61 6e  67 65 64 2e 20 41 2c 58  |n unchanged. A,X|
00002140  2c 59 2c 43 20 75 6e 64  65 66 69 6e 65 64 2e 0d  |,Y,C undefined..|
00002150  0d 53 63 72 6f 6c 75 20  20 2d 20 73 63 72 6f 6c  |.Scrolu  - scrol|
00002160  6c 20 73 63 72 65 65 6e  20 75 70 20 62 79 20 6f  |l screen up by o|
00002170  6e 65 20 6c 69 6e 65 20  2d 20 63 68 65 63 6b 73  |ne line - checks|
00002180  20 66 6f 72 20 65 6f 74  0d 53 63 72 6f 6c 64 20  | for eot.Scrold |
00002190  20 2d 20 73 63 72 6f 6c  6c 20 73 63 72 65 65 6e  | - scroll screen|
000021a0  20 64 6f 77 6e 20 62 79  20 6f 6e 65 20 6c 69 6e  | down by one lin|
000021b0  65 20 2d 20 63 68 65 63  6b 73 20 66 6f 72 20 73  |e - checks for s|
000021c0  6f 74 2e 0d 0d 54 65 78  74 20 69 73 20 6d 61 69  |ot...Text is mai|
000021d0  6e 74 61 69 6e 65 64 20  69 6e 20 6d 65 6d 6f 72  |ntained in memor|
000021e0  79 20 61 73 20 6f 6e 65  20 6c 6f 6e 67 20 73 74  |y as one long st|
000021f0  72 69 6e 67 2e 20 20 54  68 65 20 63 75 72 73 6f  |ring.  The curso|
00002200  72 20 70 6f 73 69 74 69  6f 6e 0d 61 6c 77 61 79  |r position.alway|
00002210  73 20 63 6f 72 72 65 73  70 6f 6e 64 73 20 74 6f  |s corresponds to|
00002220  20 61 20 63 68 61 72 61  63 74 65 72 20 69 6e 20  | a character in |
00002230  74 65 78 74 20 28 68 65  6e 63 65 20 61 74 20 6c  |text (hence at l|
00002240  65 61 73 74 20 61 6c 77  61 79 73 20 6f 6e 65 0d  |east always one.|
00002250  63 68 61 72 61 63 74 65  72 20 69 6e 20 74 65 78  |character in tex|
00002260  74 29 2e 20 20 41 73 20  6d 75 63 68 20 74 65 78  |t).  As much tex|
00002270  74 20 69 73 20 64 69 73  70 6c 61 79 65 64 20 6f  |t is displayed o|
00002280  6e 20 74 68 65 20 73 63  72 65 65 6e 20 77 69 74  |n the screen wit|
00002290  68 6f 75 74 0d 73 70 6c  69 74 74 69 6e 67 20 77  |hout.splitting w|
000022a0  6f 72 64 73 20 61 63 72  6f 73 73 20 61 20 6c 69  |ords across a li|
000022b0  6e 65 2e 20 20 54 68 65  20 73 63 72 65 65 6e 20  |ne.  The screen |
000022c0  69 73 20 61 6c 77 61 79  73 20 6b 65 70 74 20 74  |is always kept t|
000022d0  6f 74 61 6c 6c 79 20 75  70 20 74 6f 0d 64 61 74  |otally up to.dat|
000022e0  65 2e 20 20 41 73 20 6c  69 74 74 6c 65 20 6f 66  |e.  As little of|
000022f0  20 74 68 65 20 73 63 72  65 65 6e 20 69 73 20 72  | the screen is r|
00002300  65 70 72 69 6e 74 65 64  20 61 73 20 70 6f 73 73  |eprinted as poss|
00002310  69 62 6c 65 2e 0d 0d 4c  6f 77 20 6c 65 76 65 6c  |ible...Low level|
00002320  20 77 6f 72 64 20 70 72  6f 63 65 73 73 6f 72 20  | word processor |
00002330  72 6f 75 74 69 6e 65 73  2e 0d 0d 64 73 61 62 6c  |routines...dsabl|
00002340  65 20 2d 20 6f 73 62 79  74 65 20 63 61 6c 6c 65  |e - osbyte calle|
00002350  64 20 77 69 74 68 20 58  20 3d 20 31 2c 20 59 20  |d with X = 1, Y |
00002360  3d 20 30 0d 65 6e 61 62  6c 65 20 2d 20 6f 73 62  |= 0.enable - osb|
00002370  79 74 65 20 63 61 6c 6c  65 64 20 77 69 74 68 20  |yte called with |
00002380  58 20 3d 20 30 2c 20 59  20 3d 20 30 0d 63 73 72  |X = 0, Y = 0.csr|
00002390  6f 6e 20 20 2d 20 73 77  69 74 63 68 20 63 75 72  |on  - switch cur|
000023a0  73 6f 72 20 6f 6e 0d 63  73 72 6f 66 66 20 2d 20  |sor on.csroff - |
000023b0  73 77 69 74 63 68 20 63  75 72 73 6f 72 20 6f 66  |switch cursor of|
000023c0  66 0d 77 72 63 68 20 2d  20 20 20 77 72 69 74 65  |f.wrch -   write|
000023d0  20 63 68 61 72 61 63 74  65 72 2c 20 63 6f 6e 76  | character, conv|
000023e0  65 72 74 69 6e 67 20 63  72 20 74 6f 20 62 61 63  |erting cr to bac|
000023f0  6b 20 61 72 72 6f 77 0d  0d 0d 4f 70 65 72 61 74  |k arrow...Operat|
00002400  69 6f 6e 20 6f 66 20 6d  65 6e 75 20 6f 70 74 69  |ion of menu opti|
00002410  6f 6e 73 2e 0d 0d 45 61  63 68 20 73 74 72 69 6e  |ons...Each strin|
00002420  67 20 68 61 73 20 61 20  63 6f 72 72 65 73 70 6f  |g has a correspo|
00002430  6e 64 69 6e 67 20 65 6e  74 72 79 20 69 6e 20 61  |nding entry in a|
00002440  20 74 61 62 6c 65 20 6f  66 20 61 64 64 72 65 73  | table of addres|
00002450  73 65 73 2e 20 20 57 68  65 6e 20 79 6f 75 0d 73  |ses.  When you.s|
00002460  65 6c 65 63 74 20 61 20  70 61 72 74 69 63 75 6c  |elect a particul|
00002470  61 72 20 6f 70 74 69 6f  6e 2c 20 69 74 20 6c 6f  |ar option, it lo|
00002480  6f 6b 73 20 75 70 20 74  68 65 20 61 64 64 72 65  |oks up the addre|
00002490  73 73 20 6f 66 20 74 68  65 20 73 75 62 72 6f 75  |ss of the subrou|
000024a0  74 69 6e 65 20 69 6e 0d  74 68 65 20 74 61 62 6c  |tine in.the tabl|
000024b0  65 2c 20 74 68 65 6e 20  74 68 65 20 73 75 62 72  |e, then the subr|
000024c0  6f 75 74 69 6e 65 20 65  6e 74 72 79 20 61 64 64  |outine entry add|
000024d0  72 65 73 73 20 28 6d 69  6e 75 73 20 31 29 20 69  |ress (minus 1) i|
000024e0  73 20 70 75 73 68 65 64  20 6f 6e 74 6f 20 74 68  |s pushed onto th|
000024f0  65 0d 73 74 61 63 6b 2c  20 68 69 67 68 20 6f 72  |e.stack, high or|
00002500  64 65 72 20 62 79 74 65  20 66 69 72 73 74 2e 20  |der byte first. |
00002510  20 41 20 36 35 30 32 20  52 54 53 20 28 52 65 74  | A 6502 RTS (Ret|
00002520  75 72 6e 20 66 72 6f 6d  20 53 75 62 72 6f 75 74  |urn from Subrout|
00002530  69 6e 65 29 20 69 73 20  75 73 65 64 0d 74 6f 20  |ine) is used.to |
00002540  70 6f 70 20 74 68 65 20  61 64 64 72 65 73 73 20  |pop the address |
00002550  6f 66 66 20 74 68 65 20  73 74 61 63 6b 20 61 6e  |off the stack an|
00002560  64 20 69 6e 74 6f 20 74  68 65 20 36 35 30 32 20  |d into the 6502 |
00002570  70 72 6f 67 72 61 6d 20  63 6f 75 6e 74 65 72 20  |program counter |
00002580  28 61 66 74 65 72 0d 69  6e 63 72 65 6d 65 6e 74  |(after.increment|
00002590  69 6e 67 20 62 79 20 31  29 2e 20 20 57 68 65 6e  |ing by 1).  When|
000025a0  20 69 73 20 61 6e 20 52  54 53 20 6e 6f 74 20 61  | is an RTS not a|
000025b0  6e 20 52 54 53 3f 20 20  41 6e 73 77 65 72 3a 20  |n RTS?  Answer: |
000025c0  77 68 65 6e 20 69 74 20  69 73 20 61 20 4a 53 52  |when it is a JSR|
000025d0  21 20 0d 0d 46 69 6c 65  72 20 6f 70 74 69 6f 6e  |! ..Filer option|
000025e0  73 0d 0d 57 68 65 6e 20  79 6f 75 20 63 61 6c 6c  |s..When you call|
000025f0  20 4c 4f 41 44 20 53 41  56 45 20 4c 4f 43 4b 20  | LOAD SAVE LOCK |
00002600  55 4e 4c 4f 43 4b 2c 20  69 74 20 61 73 6b 73 20  |UNLOCK, it asks |
00002610  79 6f 75 20 66 6f 72 20  61 20 66 69 6c 65 6e 61  |you for a filena|
00002620  6d 65 20 77 68 69 63 68  20 69 74 0d 73 74 6f 72  |me which it.stor|
00002630  65 64 20 69 6e 20 6f 6c  64 73 74 72 2e 20 20 49  |ed in oldstr.  I|
00002640  74 20 73 65 74 73 20 75  70 20 61 6e 20 4f 53 46  |t sets up an OSF|
00002650  49 4c 45 20 63 6f 6e 74  72 6f 6c 20 62 6c 6f 63  |ILE control bloc|
00002660  6b 20 61 73 20 64 6f 63  75 6d 65 6e 74 65 64 20  |k as documented |
00002670  69 6e 20 74 68 65 0d 55  73 65 72 20 47 75 69 64  |in the.User Guid|
00002680  65 73 2e 0d 0d 43 6f 6e  76 65 72 74 69 6e 67 20  |es...Converting |
00002690  74 68 69 73 20 73 6f 75  72 63 65 20 63 6f 64 65  |this source code|
000026a0  20 74 6f 20 42 42 43 20  42 41 53 49 43 20 69 6e  | to BBC BASIC in|
000026b0  2d 6c 69 6e 65 20 61 73  73 65 6d 62 6c 65 72 20  |-line assembler |
000026c0  66 6f 72 6d 61 74 3a 0d  0d 53 74 61 6e 64 61 72  |format:..Standar|
000026d0  64 20 36 35 30 32 20 20  20 20 20 20 20 20 20 20  |d 6502          |
000026e0  42 42 43 20 42 41 53 49  43 0d 0d 44 46 42 20 31  |BBC BASIC..DFB 1|
000026f0  33 36 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |36              |
00002700  20 20 4f 50 54 20 46 4e  45 51 55 42 20 28 31 33  |  OPT FNEQUB (13|
00002710  36 29 0d 44 46 42 20 3c  6c 61 62 65 6c 20 20 20  |6).DFB <label   |
00002720  20 20 20 20 20 20 20 20  20 20 4f 50 54 20 46 4e  |          OPT FN|
00002730  45 51 55 42 20 28 6c 61  62 65 6c 2d 31 29 20 20  |EQUB (label-1)  |
00002740  5c 68 69 67 68 20 62 79  74 65 0d 6c 61 62 65 6c  |\high byte.label|
00002750  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00002760  20 20 2e 6c 61 62 65 6c  0d 53 54 52 22 53 74 72  |  .label.STR"Str|
00002770  69 6e 67 22 20 20 20 20  20 20 20 20 20 20 20 20  |ing"            |
00002780  4f 50 54 20 46 4e 53 20  28 22 53 74 72 69 6e 67  |OPT FNS ("String|
00002790  22 29 0d 6c 61 62 65 6c  20 45 51 55 20 26 46 46  |").label EQU &FF|
000027a0  46 46 20 20 20 20 20 20  20 20 6c 61 62 65 6c 20  |FF        label |
000027b0  3d 20 26 46 46 46 46 0d  6c 61 62 65 6c 20 3e 6c  |= &FFFF.label >l|
000027c0  61 62 65 6c 32 20 20 20  20 20 20 20 20 20 20 20  |abel2           |
000027d0  2e 6c 61 62 65 6c 20 4f  50 54 20 46 4e 42 28 6c  |.label OPT FNB(l|
000027e0  61 62 65 6c 32 20 4d 4f  44 32 35 36 29 0d 4c 44  |abel2 MOD256).LD|
000027f0  59 20 23 3c 6c 61 62 65  6c 20 20 20 20 20 20 20  |Y #<label       |
00002800  20 20 20 20 20 4c 44 59  20 23 6c 61 62 65 6c 20  |     LDY #label |
00002810  44 49 56 20 32 35 36 20  20 20 20 20 5c 68 69 67  |DIV 256     \hig|
00002820  68 20 62 79 74 65 0d 4c  44 41 20 23 3e 6c 61 62  |h byte.LDA #>lab|
00002830  65 6c 20 20 20 20 20 20  20 20 20 20 20 20 4c 44  |el            LD|
00002840  41 20 23 6c 61 62 65 6c  20 4d 4f 44 20 32 35 36  |A #label MOD 256|
00002850  20 20 20 20 20 5c 6c 6f  77 20 62 79 74 65 0d 6c  |     \low byte.l|
00002860  61 62 65 6c 20 44 53 20  32 20 20 20 20 20 20 20  |abel DS 2       |
00002870  20 20 20 20 20 20 6c 61  62 65 6c 20 3d 20 46 4e  |      label = FN|
00002880  57 20 28 32 29 0d 4f 52  47 20 26 46 46 46 46 20  |W (2).ORG &FFFF |
00002890  20 20 20 20 20 20 20 20  20 20 20 20 20 50 25 3d  |             P%=|
000028a0  26 46 46 46 46 0d 44 53  45 43 54 20 20 20 20 20  |&FFFF.DSECT     |
000028b0  20 20 20 20 20 20 20 20  20 20 20 20 20 57 25 3d  |             W%=|
000028c0  26 39 30 30 0d 20 4f 52  47 20 26 39 30 30 0d 44  |&900. ORG &900.D|
000028d0  53 45 4e 44 20 20 20 20  20 20 20 20 20 20 20 20  |SEND            |
000028e0  20 20 20 20 20 20 0d                              |      .|
000028e7
27_11_87/INFO.m0
27_11_87/INFO.m1
27_11_87/INFO.m2
27_11_87/INFO.m4
27_11_87/INFO.m5