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