ABC80 emulatorn till boken ABC80 inifrånthe emulator for the book ABC80 inifrån
MaskinenThe machine
RESET är som knappen på maskinen: programmet ligger kvar. Starta om tömmer minnet. Den nya ROM:en är den som de flesta maskiner har; den gamla finns med för jämförelsen i band 1.
RESET is like the button on the machine: the program stays in memory. Restart clears memory. The new ROM is the one most machines have; the old one is there for the comparison in volume 1.
BASIC II är ABC 800:s tolk för ABC80, 32 KB med
DOS:en på $6000 och PR: på $7000 (band 2,
kapitlet BASIC II-ROM:en). Vem som gjorde den och hur den satt i en
riktig ABC80 vet vi inte, men den stämmer bättre med Christer Ekmans
lappar i ABC 800-tolken (MikroDatorn 1/1984) än med Libers BASIC
II-kort (band 2, kapitlet ABC 800-serien, avsnittet Ekmans ABC
800-tolk på ABC80). Emulatorn gör som Ekmans utbyggnad till 64
kilobyte, karta 1:
tolken på $0000–$7BFF, bildminnet på
$7C00 och 32 KB RAM ovanför, men skrivskyddar tolken.
FD2 heter här MO0: (DR0: är kort 44), till exempel
SAVE "MO0:PROV". ABC80-BASIC:ens .BAC-filer
går inte att ladda (fel 203), men program som text går med
Skriv in. PR: skriver till Centronics på kort 60, eller till
V24 om det inte finns. En inställning i namnet, som
OPEN "PR:VSA70A99.7" (V24), gäller sedan också för
LIST "PR:" tills maskinen startar om;
LIST "PR:CSA36C70" går till kortet igen. Kretsarna på
$4000, CMOS-minnet, TKN80, CP/M, P40 och kassetten går
inte med BASIC II: ROM:en har ingen CAS:, och LOAD CAS:
ger fel 21. I terminalen: -r roms/basicii80.rom -m 32.
Tangenterna under BASIC II: tolken får ett avbrott när
en tangent trycks ned (PIO:n med $B7, som i Ekmans
lappar) och läser sedan tecknet direkt från porten så länge tangenten
hålls, med egen repetition. Skrivet för hand blir det rätt. Om
tangenten släpps nästan i samma ögonblick som den trycks ned, som när
ett provverktyg eller ett fjärrskrivbord skickar tangenterna, kan ett
tecken komma två gånger (PRINT 12+344); det händer inte
med ABC80:s egna ROM:ar och inte i terminalen. Program som text går
säkrast med Skriv in eller en fil.
BASIC II is the ABC 800's interpreter for the
ABC80, 32 KB with the DOS at $6000 and PR: at
$7000 (volume 2, the chapter on the BASIC II ROM).
Who made it and how it sat in a real ABC80 we do not know, but it
matches Christer Ekman's patches to the ABC 800 interpreter
(MikroDatorn 1/1984) better than Liber's BASIC II card (volume 2,
the chapter on the ABC 800 series, the section on Ekman's ABC 800
interpreter on the ABC80). The emulator does as Ekman's expansion to
64 kilobytes, map 1: the interpreter at
$0000–$7BFF, screen memory at
$7C00 and 32 KB of RAM above, but keeps the interpreter
write-protected. The FD2 is called MO0: here (DR0: is
card 44), for example SAVE "MO0:PROV". ABC80 BASIC's
.BAC files cannot be loaded (error 203), but programs as
text can be typed in with Type in. PR: prints to the Centronics
printer on card 60, or to V24 if there is none. A setting in the
name, like OPEN "PR:VSA70A99.7" (V24), then also holds
for LIST "PR:" until the machine restarts;
LIST "PR:CSA36C70" goes to the card again. The ROMs at $4000, the CMOS memory,
TKN80, CP/M, the P40 and the cassette do not go with BASIC II: the
ROM has no CAS:, and LOAD CAS: gives error 21. In the
terminal:
-r roms/basicii80.rom -m 32.
The keys under BASIC II: the interpreter gets an
interrupt when a key is pressed (the PIO with $B7, as in
Ekman's patches) and then reads the character straight from the port
for as long as the key is held, with its own repeat. Typed by hand it
comes out right. If the key is released almost at the same moment as
it is pressed, as when a test tool or a remote desktop sends the keys,
a character can come twice (PRINT 12+344); this does not
happen with the ABC80's own ROMs or in the terminal. Programs as text
are safest with Type in or a file.
TKN80 är MyAB:s kort för 80 tecken per rad, med
EPROM:en TKN80-III (band 2, kapitlet Skärmen). Maskinen startas om med
kortet i, och det startar i 80-teckensläget. PRINT
INP(3);CHR$(12) byter till 40 tecken och tömmer skärmen,
PRINT INP(4);CHR$(12) tillbaka till 80, som i MyAB:s
bruksanvisning. PEEK(885) är 88 med 80 tecken och 124
med 40. Program som skriver direkt i bildminnet på $7C00,
som Genesis-demot, behöver 40 tecken. I terminalen:
-tkn80.
TKN80 is MyAB's card for 80 characters per line,
with the TKN80-III EPROM (volume 2, the chapter on the screen). The
machine restarts with the card fitted, and the card starts in 80-column
mode. PRINT INP(3);CHR$(12) switches to 40 columns and
clears the screen, PRINT INP(4);CHR$(12) back to 80, as in
MyAB's manual. PEEK(885) is 88 with 80 columns and 124
with 40. Programs that write straight into screen memory at
$7C00, like the Genesis demo, need 40 columns. In the
terminal: -tkn80.
Fast markör gäller TKN80. MyAB:s bruksanvisning
beskriver en bygling på kortet (bryt mellan K6.6 och K6.7) som gör
markören fast: tecken med bit 7 visas då inverterade i stället för
blinkande. Den rekommenderas med CP/M, där till exempel WordStar
använder inverterad text. Utan TKN80 blinkar markören alltid, som på
ABC80. Terminalen och -B visar den alltid fast.
Steady cursor applies to TKN80. MyAB's manual
describes a jumper on the card (cut between K6.6 and K6.7) that makes
the cursor steady: characters with bit 7 set are then shown inverted
instead of blinking. It is recommended with CP/M, where WordStar for
one uses inverted text. Without TKN80 the cursor always blinks, as on
the ABC80. The terminal and -B always show it steady.
Skärmen liknar en vit fosforskärm, som i SDL-fönstret:
punkterna har ett mjukt sken runt sig, och det som släcks klingar av
på omkring 20 ms, så att markören och det som rullar drar en svans
efter sig. Skarp visar punkterna utan sken och
efterlysning, som -skarp i fönstret.
The screen looks like a white phosphor screen, as in
the SDL window: the dots glow softly, and what is switched off fades
over about 20 ms, so the cursor and scrolling text leave a trail.
Sharp shows the dots without glow and afterglow, like
-skarp in the window.
CP/M sätter i MyAB:s kort UNI-80 (band 2, kapitlet CP/M) och startar CP/M 2.2 från en systemskiva i FD2, som när RESET hålls nere på den riktiga maskinen. Allt utom CCP:n, BDOS:en och programmen är eget: start-PROM:en och BIOS:en är skrivna till emulatorn, och MyAB:s kod är inte med. A: är systemskivan med Digital Researchs program (ASM, DDT, DUMP, ED, LOAD, PIP, STAT, SUBMIT och XSUB), B: en skiva med BBC BASIC (Z80) av R. T. Russell, fri under zlib-licensen, C: en RAM-skiva i ABC80:s eget minne (15k), som töms när CP/M startar, och D: en skiva om 640 KB på kort 44 (ABC 832) med Zork I.
CP/M fits MyAB's UNI-80 card (volume 2, the chapter on CP/M) and starts CP/M 2.2 from a system disk in the FD2, as when RESET is held down on the real machine. Everything except the CCP, the BDOS and the programs is our own: the boot PROM and the BIOS are written for the emulator, and none of MyAB's code is included. A: is the system disk with Digital Research's programs (ASM, DDT, DUMP, ED, LOAD, PIP, STAT, SUBMIT and XSUB), B: a disk with BBC BASIC (Z80) by R. T. Russell, free under the zlib licence, C: a RAM disk in the ABC80's own memory (15k), cleared when CP/M starts, and D: a 640 KB disk on card 44 (ABC 832) with Zork I.
BBC BASIC startas med B: och sedan
BBCBASIC: CP/M letar bara på skivan i prompten, så
BBCBASIC vid A> ger bara
BBCBASIC? tillbaka. SAVE "NAMN" sparar på
B: och *BYE går tillbaka till CP/M. CP/M-kartan har
ingen klocka, så TIME går fram när BASIC väntar på en
tangent eller läser den, men inte medan ett program räknar.
BBC BASIC is started with B: and then
BBCBASIC: CP/M only looks on the disk in the prompt, so
BBCBASIC at A> only answers
BBCBASIC?. SAVE "NAME" saves on B: and
*BYE returns to CP/M. The CP/M memory map has no clock,
so TIME advances while BASIC waits for or reads a key,
but not while a program computes.
Zork I (under Disketten) startar Infocoms
Zork I från 1980, som Microsoft har släppt under MIT-licensen, med
ZTOLK D:ZORK1. ZTOLK är vår egen tolk för Z-maskinen
(version 3) på systemskivan, i 40 och 80 tecken. Spelet är på
engelska: open mailbox, north,
take lamp. Översta raden visar poängen och dragen, och
(MER) väntar på en tangent. save och
restore sparar på D: (standard D:ZORK1.SAV),
och quit går tillbaka till CP/M.
Zork I (under Floppy disk) starts
Infocom's Zork I from 1980, released by Microsoft under the MIT
licence, with ZTOLK D:ZORK1. ZTOLK is our own Z-machine
interpreter (version 3) on the system disk, in 40 and 80 columns.
Try open mailbox, north, take
lamp. The top line shows the score and the moves, and
(MER) (Swedish for more) waits for a key.
save and restore use D: (by default
D:ZORK1.SAV), and quit returns to
CP/M.
SKRIV BREV.TXT startar SKRIV, vår egen
editor för hela skärmen, med WordStars tangenter: Ctrl
och E, X, S och D flyttar markören, Y raderar raden, K S sparar,
K X sparar och slutar och K Q slutar utan att spara.
Ctrl+J visar alla tangenter, och
SKRIV SKRIV.TXT visar bruksanvisningen. Webbläsaren tar
själv Ctrl+W, N och T,
så i SKRIV gör Esc och en bokstav samma sak som
Ctrl och bokstaven: Esc K X sparar och
slutar.
SKRIV BREV.TXT starts SKRIV (Swedish for
write), our own full-screen editor with WordStar's keys:
Ctrl and E, X, S and D move the cursor, Y deletes the line,
K S saves, K X saves and exits and K Q exits without saving.
Ctrl+J shows all the keys, and SKRIV
SKRIV.TXT shows the manual; both are in Swedish. The browser
keeps Ctrl+W, N and T to
itself, so in SKRIV Esc and a letter does the same as
Ctrl and the letter: Esc K X saves and
exits.
Prova DIR, STAT, PIP
B:=*.COM och DIR B:. Ett eget program: ED
HEJ.ASM, I, texten, Ctrl+Z
och E, sedan ASM HEJ, LOAD HEJ
och HEJ. Med TKN80 blir skärmen 80 tecken bred.
Ctrl+C först på raden startar om CP/M
(varmstart), och RESET läser in det från skivan igen. Tecknen
är ABC80:s, så $ syns som ¤ och
^ som Ü. Skivorna finns under
Disketten.
Try DIR, STAT, PIP
B:=*.COM and DIR B:. A program of your own:
ED HELLO.ASM, I, the text,
Ctrl+Z and E, then ASM
HELLO, LOAD HELLO and HELLO. With
TKN80 the screen is 80 columns wide. Ctrl+C at
the start of a line restarts CP/M (warm boot), and RESET loads
it from the disk again. The character set is the ABC80's, so
$ shows as ¤ and ^ as
Ü. The disks are under Floppy disk.
I en länk: ?rom=gammal väljer den gamla
ROM:en, ?tkn80=pa sätter i TKN80 och
?fast=pa ger den fast markör. ?skarp=pa
ger skarpa punkter.
?rom=b2 väljer BASIC II.
?skiva=system lägger i systemskivan och
?skiva=demo demoskivan.
?cpm=pa startar CP/M och ?zork=pa Zork I.
In a link: ?rom=gammal selects the old
ROM, ?tkn80=pa fits TKN80 and ?fast=pa gives
it a steady cursor. ?skarp=pa gives sharp dots.
?rom=b2 selects BASIC II.
?skiva=system inserts the system disk and
?skiva=demo the demo disk.
?cpm=pa starts CP/M and ?zork=pa Zork I.
DiskettenFloppy disk
Disketten sitter i FD2 (kort 45) med ABC-DOS. Man stannar
i BASIC: DOS:en lägger bara till enheterna DR0:–DR6:,
så det är LOAD DR0:A.B eller RUN DR0:A.B.
BYE kör CMDINT.SYS från disketten, om den finns där.
BASIC:en kan inte lista katalogen (det gjorde programmet LIB på
systemskivan), så Katalogen visar filerna och hur många
sektorer de tar. Det som sparas med SAVE DR0:NAMN hamnar
bara i sidans minne; Spara disketten laddar ner den som en
.dsk, som går att lägga i igen. En .dsk går
också att dra till sidan.
The disk sits in the FD2 (card 45) with ABC-DOS. You stay
in BASIC: the DOS only adds the devices DR0:–DR6:,
so it is LOAD DR0:A.B or RUN DR0:A.B.
BYE runs CMDINT.SYS from the disk, if it is there. BASIC
cannot list the directory (the program LIB on the system disk did
that), so Directory shows the files and how many sectors they
take. What is saved with SAVE DR0:NAME only ends up in
the page's memory; Save disk downloads it as a
.dsk, which can be inserted again. A .dsk
can also be dropped on the page.
Med CP/M sätter Lägg i diskett… en skiva i B:, eller i A: om den är en systemskiva, och CP/M startar om. En skiva om 640 KB hamnar i D: på kort 44. Katalogen visar filerna på A:, B: och D:, och Spara disketten laddar ner dem (D: när den har ändrats). Slås CP/M av ligger skivorna undan till nästa gång, och ABC-DOS-disketten kommer tillbaka.
With CP/M, Insert disk… puts a disk in B:, or in A: if it is a system disk, and CP/M restarts. A 640 KB disk goes in D: on card 44. Directory shows the files on A:, B: and D:, and Save disk downloads them (D: when it has changed). When CP/M is switched off the disks are put aside until next time, and the ABC-DOS disk comes back.
Exempeldisketten lägger i en diskett med sju
program: RUN DR0:GISSA (gissa talet), RUN
DR0:KURVA (kurvor med SETDOT), RUN
DR0:MUSIK (en orgel från 1981 på tangenterna Z, X, C … med S,
D, G … som de svarta, med Caps Lock eftersom programmet väntar sig
versaler), RUN DR0:AIRFIGHT (spelet från 1981 i
Z80-kod, för två: A, D och X mot J, L och M; laddaren tar en halv
minut, och Ctrl+C går tillbaka till BASIC)
RUN DR0:HR80 (en bild på grafikkortet, se
panelen Grafikkortet), RUN DR0:FONSTER
(textfönster som styrs med koder, som en skrivare: Tab
byter fönster, Ctrl+X stänger och
Ctrl+A öppnar) eller RUN
DR0:FONSTER2 (fönster på grafikkortet, som frågar kortet
efter händelser och ritar om det som behövs; koppla in kortet
under Grafikkortet först, och använd musen på kortets bild: dra i
titelraden, stäng i rutan, klicka i BILD). Samma sju program finns också som band, ett per program, i
exempel/program/kassett/, och som text i
exempel/program/text/ (Skriv in… och
RUN).
Example disk inserts a disk with seven programs
(in Swedish): RUN DR0:GISSA (guess the number),
RUN DR0:KURVA (curves with SETDOT),
RUN DR0:MUSIK (an organ from 1981 on the keys Z, X, C …
with S, D, G … as the black keys, with Caps Lock since the program
expects capitals), RUN DR0:AIRFIGHT (the 1981 game in
Z80 code, for two: A, D and X against J, L and M; the loader takes
half a minute, and Ctrl+C returns to BASIC)
RUN DR0:HR80 (a picture on the graphics card, see
the panel Graphics card), RUN DR0:FONSTER (text
windows controlled by codes, like a printer: Tab switches
window, Ctrl+X closes and
Ctrl+A opens) or RUN
DR0:FONSTER2 (windows on the graphics card, asking the card
for events and redrawing what is needed; connect the card under
Graphics card first, and use the mouse on the card's picture: drag
the title bar, close in the box, click in BILD). The same seven programs are also on tape, one per
program, in exempel/program/kassett/, and as text in
exempel/program/text/ (Type in… and
RUN).
Med BASIC II som ROM lägger Exempeldisketten i en
annan diskett, och byte av ROM byter diskett: RUN
"MO0:GISSA", KURVA och MUSIK rättade
för BASIC II, CHIP8 (en CHIP-8-tolk i BASIC med Mini
Lights Out av tobiasvl, CC0, ur John Earnests CHIP-8 Archive; håll en
tangent tills den tas) och SNAKE3 (orm med A, S, W och
Z), och i Z80-kod CHIP8Z, SNAKE3Z och
AIRFIGHT, som laddas på $9000 och går tillbaka till
BASIC med Ctrl+C, och HR80, som
ritar på grafikkortet med PR: på V24. Disketten har ABC 800:s CMDINT.SYS och
LIB.ABS, så BYE ger DOS:en och
LIB visar filerna. Texterna står i
exempel/program/text_b2/. Ctrl+C
två gånger stoppar ett program.
With BASIC II as the ROM, Example disk inserts a
different disk, and changing the ROM changes the disk: RUN
"MO0:GISSA", KURVA and MUSIK fixed
for BASIC II, CHIP8 (a CHIP-8 interpreter in BASIC with
Mini Lights Out by tobiasvl, CC0, from John Earnest's CHIP-8 Archive;
hold a key until it is taken) and SNAKE3 (a snake with
A, S, W and Z), and in Z80 code CHIP8Z,
SNAKE3Z and AIRFIGHT, which load at $9000
and return to BASIC with Ctrl+C, and
HR80, which draws on the graphics card with
PR: on V24. The disk has the ABC 800's CMDINT.SYS
and LIB.ABS, so BYE gives the DOS and
LIB lists the files. The texts are in
exempel/program/text_b2/. Ctrl+C
twice stops a program.
Systemskivan lägger i Luxors systemskiva ver.
1.0 för ABC80, bevarad i ABC-klubbens samling. RUN
DR0:LIB visar katalogen som på riktigt, och BYE
kör CMDINT.SYS, som tar emot kommandona: LIB,
MAP, SPACE, COPY,
DOSGEN och de andra programmen på skivan. Programmen
beskrivs i band 2, kapitlet DOS:en.
System disk inserts Luxor's system disk ver. 1.0
for the ABC80, preserved in the ABC club's collection (in Swedish).
RUN DR0:LIB shows the directory the real way, and
BYE runs CMDINT.SYS, which takes the commands:
LIB, MAP, SPACE,
COPY, DOSGEN and the other programs on the
disk. The programs are described in volume 2, the chapter on the
DOS.
Demoskivan lägger i Luxors demoskiva till
flexskiveenheten (art.nr 68 00021-31), som butikerna visade den med.
RUN DR0:MENY ger menyn: bokföring, ordbehandling,
adressetiketter, sortering, grafik, styrdatorn och de andra.
RUN DR0:START börjar från början och frågar först om
klockan (svara N).
Demo disk inserts Luxor's demo disk for the
floppy disk unit (art.no 68 00021-31), which the shops showed it
with (in Swedish). RUN DR0:MENY gives the menu:
bookkeeping, word processing, address labels, sorting, graphics,
control and the others. RUN DR0:START starts from the
beginning and first asks about the clock (answer N).
KassettenCassette
Lägg i ett band och skriv LOAD CAS: eller
RUN CAS:. Skriv inget medan blocken läses, det ger ERR 35.
För att spela in: tryck Spela in, skriv SAVE
CAS:NAMN och tryck sedan Spara inspelning. En
.wav går också att dra till sidan.
Insert a tape and type LOAD CAS: or
RUN CAS:. Don't type while the blocks are read, that
gives ERR 35. To record: press Record, type SAVE
CAS:NAME and then press Save recording. A
.wav can also be dropped on the page.
▶ är PLAY: den trycks ned när ett band läggs i, och ett tryck till släpper upp den, så att bandet stannar. Är bandspelaren fjärrstyrd (från början) startar och stoppar ABC80 bandet med motorreläet, så det stannar efter programmet; utan fjärrstyrning går det så länge PLAY är nere. Bandets eget ljud hörs med ljudet på, medan bandet går i vanlig fart.
▶ is PLAY: it goes down when a tape is inserted, and another press releases it, so the tape stops. When the recorder is remote controlled (the default) the ABC80 starts and stops the tape with the motor relay, so it stops after the program; without remote control it runs as long as PLAY is down. The tape's own sound is heard with sound on, while the tape runs at normal speed.
⏪ och ⏩ spolar bandet, tjugo gånger fortare än det
spelar, tills du trycker igen eller bandet tar slut; PLAY släpps upp,
så tryck ▶ igen efteråt, före LOAD CAS: (står bandet ger
ROM:en ERR 21). Räkneverket räknar varv på spolen, som på en
kassettbandspelare: det går fortare i början av bandet än i slutet,
och ett klick nollställer det. Skriv upp var programmen börjar, så
hittar du tillbaka, eller spola tillbaka och försök igen efter ett
läsfel. Under inspelning går det inte att spola.
⏪ and ⏩ wind the tape, twenty times faster than it
plays, until you press again or the tape ends; PLAY is released, so
press ▶ again afterwards, before LOAD CAS: (with the tape
stopped the ROM gives ERR 21). The counter counts turns of the reel,
as on a cassette recorder: it goes faster at the start of the tape
than at the end, and a click resets it. Note where the programs
start, and you can find your way back, or rewind and try again after
a read error. Winding is not possible while recording.
MÅLARE lägger i ett band med Mikael Bonniers
ritprogram från 1982 och skriver RUN CAS:. Svara på
tidsfördröjningen med ett tal (till exempel 10) och RETURN. Markören
flyttas med tangenterna runt F: E, R, T, D, G, C, V och B. Med Caps
Lock på suddar den, och utan Caps Lock ritar den. S tömmer skärmen.
Programmet är fri programvara (GPL-3.0); bandet är gjort i emulatorn
ur källan, och exempel/malare/LASMIG.md berättar var det
kommer ifrån.
MÅLARE (painter) inserts a tape with Mikael
Bonnier's drawing program from 1982 and types RUN CAS:.
Answer the delay question with a number (10, say) and RETURN. The
cursor moves with the keys around F: E, R, T, D, G, C, V and B. With
Caps Lock on it erases, without Caps Lock it draws. S clears the
screen. The program is free software (GPL-3.0); the tape was made in
the emulator from the source, and
exempel/malare/LASMIG.md tells where it comes from.
Program och kretsarPrograms and ROMs
Skriv in… läser en textfil, till exempel ett BASIC-program, och skriver den som tangenter, en rad i taget. Text som klistras in på skärmen eller en fil som dras till sidan skrivs in på samma sätt.
Type in… reads a text file, a BASIC program for example, and types it as keys, one line at a time. Text pasted on the screen or a file dropped on the page is typed in the same way.
Forth-kretsen sätter Forth-tolken från exempel 7
(band 2) i en krets på $4000, där Smartaid satt, och
startar om maskinen. Kretsen kan inte skrivas i, så de egna orden
läggs i RAM från $C000, och BOFA flyttas upp först:
POKE 65052,0,208 och NEW. Sedan startar
Z=CALL(16384,3) tolken: : KV DUP + ; och
7 KV . ger 14. WORDS listar orden, och
@ skrivs É. BYE går tillbaka
till BASIC och Z=CALL(16384,4) fortsätter med de egna
orden kvar. Samma tolk finns som band i bokens kodförråd
(inifran/forth/FORTH.wav), för RAM på
$C000.
Forth ROM puts the Forth interpreter from example
7 (volume 2) in a ROM at $4000, where the Smartaid sat,
and restarts the machine. The ROM cannot be written, so your own words
go in RAM from $C000, and BOFA is moved up first:
POKE 65052,0,208 and NEW. Then
Z=CALL(16384,3) starts the interpreter: : SQ DUP +
; and 7 SQ . give 14. WORDS lists the
words, and @ is typed É. BYE
returns to BASIC and Z=CALL(16384,4) continues with your
words still there. The same interpreter is on tape in the book's code
repository (inifran/forth/FORTH.wav), for RAM at
$C000.
Forth med CMOS är samma tolk, men de egna orden
läggs i CMOS-minnet, och radbufferten också, så ingen
POKE behövs: Z=CALL(16384,3) direkt. Orden
finns kvar när sidan laddas om. EMPTY tömmer
ordlistan.
Forth with CMOS is the same interpreter, but your
own words go in the CMOS memory, and the line buffer too, so no
POKE is needed: Z=CALL(16384,3) at once. The
words remain when the page is reloaded. EMPTY empties the
dictionary.
Forthaid är inte med i boken: en verktygskrets i
stil med Smartaid 3, skriven i Forth på tolken från exempel 7.
Z=CALL(16384,2) kopplar in den, och sedan skrivs
kommandona direkt i BASIC: LIST, FIND,
VAR, REN, CHANGE A,B,
DEL, AUTO, ED,
START, OLD, PEEK,
SYS och HELP. CTRL-W, A, S och Z flyttar
markören, och högerpilen läser tecknet under den. CTRL-C under
körning ger en paus; CTRL-T och CTRL-S kör sedan vidare medan
tangenten hålls ned, med och utan TRACE. FORTH går till
Forth-tolken, där egna kommandon kan skrivas, och EX
kopplar ur kretsen. Manualen står i
utanfor/forthaid/MANUAL.md i bokens kodförråd.
Forthaid is not part of the book: a tool ROM in
the style of Smartaid 3, written in Forth on the interpreter from
example 7. Z=CALL(16384,2) hooks it in, and then the
commands are typed directly in BASIC: LIST,
FIND, VAR, REN, CHANGE
A,B, DEL, AUTO, ED,
START, OLD, PEEK,
SYS and HELP. CTRL-W, A, S and Z move the
cursor, and the right arrow reads the character under it. CTRL-C
while a program runs gives a pause; CTRL-T and CTRL-S then run on
while the key is held down, with and without TRACE. FORTH
goes to the Forth interpreter, where you can write commands of your
own, and EX unhooks the ROM. The manual (in Swedish) is
utanfor/forthaid/MANUAL.md in the book's code
repository.
Forthaid II är Forthaid på ett påhittat kort med
banker, så att den fungerar också med TKN80: en fast del på
$4000 och fem banker à 2 KB i fönstret på
$5000, under TKN80:s bildminne. Kommandona är desamma
och kopplas in på samma sätt, med Z=CALL(16384,2). Med
TKN80 i 80-teckensläget räknar skärmeditorn, ED och
LIST med 80 kolumner. SAVEW namn sparar de
egna Forth-orden på skivan och LOADW namn laddar dem;
det kräver ett skivminne, till exempel Systemskivan. På
Exempeldisketten ligger VERKTYG.FTH med fyra ord
efter Smartaid-kretsarnas kommandon: n CROSS listar de
rader som hoppar till rad n (GOTO, GOSUB,
THEN och ON), n RAM visar
rad n som den ligger i minnet, byte för byte, FIX ger
ett hopp till en rad som inte finns numret på nästa rad, och
PAC tar bort raderna med REM och gör
sedan FIX. Till exempel
LOAD GISSA, FORTH, LOADW
VERKTYG.FTH och 60 CROSS. Manualen
står i utanfor/forthaid2/MANUAL.md i bokens
kodförråd.
Forthaid II is Forthaid on an imagined card with
banks, so that it works with TKN80 too: a fixed part at
$4000 and five banks of 2 KB in the window at
$5000, below the screen memory of TKN80. The commands
are the same and are hooked in the same way, with
Z=CALL(16384,2). With TKN80 in 80-column mode the screen
editor, ED and LIST use 80 columns.
SAVEW name saves your own Forth words on disk and
LOADW name loads them; this needs a disk drive, such as
the System disk. Example disk has
VERKTYG.FTH with four words after the commands of the
Smartaid ROMs: n CROSS lists the lines that jump to line
n (GOTO, GOSUB, THEN and
ON), n RAM shows line n as it lies in
memory, byte by byte, FIX gives a jump to a line that
does not exist the number of the next line, and PAC
removes the lines with REM and then does
FIX. For example LOAD GISSA,
FORTH, LOADW VERKTYG.FTH and 60
CROSS. The manual (in Swedish) is
utanfor/forthaid2/MANUAL.md in the book's code
repository.
COMAL 0,5 är inte med i boken: den gamla ROM:en
(11273) med COMAL:s strukturer, i en krets på $4000 och
23 byte i ROM:en som hoppar dit. Valet byter ROM:en och startar om
maskinen; den gamla eller nya ROM:en i listan ovanför gäller igen när
kretsen tas ur. Det nya är WHILE/ENDWHILE,
REPEAT/UNTIL, IF … THEN
på egen rad med ELIF, ELSE och
ENDIF, PROC/ENDPROC med
parametrar och LOCAL, som anropas med
EXEC, och CASE/WHEN/OTHERWISE/ENDCASE.
LIST drar in raderna i blocken. Till exempel
10 I=1, 20 WHILE I<=5, 30 PRINT
I;, 40 I=I+1, 50 ENDWHILE, sedan
LIST och RUN. Gamla program går som förut.
Mer står i utanfor/comal/LASMIG.md i bokens
kodförråd.
COMAL 0.5 is not part of the book: the old ROM
(11273) with COMAL's structures, in a ROM at $4000 and 23
bytes in the BASIC ROM that jump there. The choice swaps the ROM and
restarts the machine; the old or new ROM in the list above applies
again when the add-on is removed. New are
WHILE/ENDWHILE,
REPEAT/UNTIL, IF …
THEN on a line of its own with ELIF,
ELSE and ENDIF,
PROC/ENDPROC with parameters and
LOCAL, called with EXEC, and
CASE/WHEN/OTHERWISE/ENDCASE.
LIST indents the lines in the blocks. For example
10 I=1, 20 WHILE I<=5, 30 PRINT
I;, 40 I=I+1, 50 ENDWHILE, then
LIST and RUN. Old programs run as before.
More in utanfor/comal/README.md in the book's code
repository.
Exempel 1–6 är programmen i band 2,
kapitlet Egna exempel, i den tänkta kretsen: på $4000,
exempel 4 med två banker där och exempel 5 på $7000,
IEC-kretsens plats. Maskinen startas om med kretsen i, och
meddelanderaden överst säger hur programmet kopplas in, oftast
Z=CALL(16384). Exempel 6 läser det som kommer på V24; en
länk med ?s= sänder en text dit. Medan det är inkopplat
ger tangenterna inget avbrott, som i texttelefonen, så det körs i ett
program som kopplar ur själv med Z=CALL(16387); i
direktläge står maskinen still tills RESET.
Examples 1–6 are the programs in volume 2,
the chapter on examples of your own, in the imagined ROM: at
$4000, example 4 with two banks there and example 5 at
$7000, the place of the IEC ROM. The machine restarts with
the ROM fitted, and the message line at the top says how the program
is hooked in, mostly Z=CALL(16384). Example 6 reads what
arrives on V24; a link with ?s= sends a text there. While
it is hooked in the keys give no interrupt, as in the text telephone,
so it is run in a program that unhooks itself with
Z=CALL(16387); in direct mode the machine stands still
until RESET.
I en länk:
?krets=forth sätter i Forth-kretsen och
?krets=cmos Forth med CMOS.
?krets=e1 till ?krets=e6 sätter i bokens
exempel, och ?s= sänder en text till V24 när
tangenterna är skrivna (som -s).
?k= skriver tangenter efter starten, som på
Kom igång.
In a link:
?krets=forth fits the Forth ROM and
?krets=cmos Forth with CMOS.
?krets=e1 to ?krets=e6 fit the book's
examples, and ?s= sends a text to V24 when the keys have
been typed (like -s).
?k= types keys after the start, as in Getting
started.
SkrivarenThe printer
Skrivaren P40 är nålskrivaren från band 2,
kapitlet Skrivarna, på kort 60, med drivrutinen på
$7800. Den kopplas in och ur medan maskinen går, så
programmet ligger kvar: BASIC letar upp drivrutinen först när
PR: öppnas. Den skriver det som går till
PR:: 10 OPEN "PR:" AS FILE 1, 20
PRINT #1,"HEJ", 30 CLOSE 1, eller LIST
PR:. Papperet kommer fram som en lapp när skrivaren börjar och
försvinner med ett klick utanför eller Esc;
Papperet tar fram det igen, och Spara ger det som en
bild (i terminalen: -CP papper.png). Lappen går att
flytta genom att dra i dess list, och det stället kommer sidan
ihåg.
The P40 printer is the dot matrix printer from
volume 2, the chapter on printers, on card 60, with the driver at
$7800. It is connected and disconnected while the machine
runs, so the program stays: BASIC only looks for the driver when
PR: is opened. It prints what goes to PR::
10 OPEN "PR:" AS FILE 1, 20 PRINT
#1,"HELLO", 30 CLOSE 1, or LIST PR:.
The paper appears as a sheet when the printer starts and goes away
with a click outside or Esc; The paper brings it
back, and Save gives it as an image (in the terminal:
-CP papper.png). The sheet can be moved by dragging its
bar, and the page remembers where.
P40:s mekanik är inte bevarad, så den är antagen:
vagnen går med fast fart, och var punkterna hamnar avgörs bara av
tiden, som på skrivaren. Raderna som skrivs framåt hamnar drygt två
kolumner till vänster om dem som skrivs bakåt;
exempel/p40/LASMIG.md berättar varför (?).
The P40's mechanics are not preserved, so they are
assumed: the carriage moves at a fixed speed, and where the dots land
is decided by timing alone, as on the printer. Lines printed forwards
end up a little more than two columns left of those printed
backwards; exempel/p40/LASMIG.md tells why (?).
Centronics är en skrivare med Centronicssnitt,
som Epsons, på Luxors Centronicskort (kort 60), med Luxors
skrivarkrets 9704 på $7800 (band 2, kapitlen
Skrivarna och Skrivarkretsen 9704). Skrivaren tar emot tecknen som
de är och skriver dem med den svenska teckenuppsättningen, så att
[ \ ] { | } blir Ä Ö Å ä ö å; papperet är text, 80
tecken breda rader, och Spara ger det som en textfil.
Skrivaren förstår Epsons styrkoder (MX-80 och FX-80): fet stil
(ESC E, ESC F), dubbelslag
(ESC G, ESC H), kursiv (ESC 4,
ESC 5), understruken (ESC - 1,
ESC - 0), breda tecken (SO för raden, ESC W
1), smala (SI, DC2 tar bort det), elite (ESC M),
landet (ESC R n, 5 är Sverige) och ESC @
som återställer; grafiken flyttar bara vagnen. Till exempel
PRINT #1,CHR$(27);"E";"FET";CHR$(27);"F". Med
tom inställning, som i LIST PR:, väljer 9704 typen U
efter kortets status, och den skriver till samma port som C; typen C
väljs med OPEN "PR:CSA36C70" AS FILE 1. Skrivaren är
alltid redo, utom när sidan ännu inte har hämtat tecknen (i
terminalen: -l roms/pr9704.rom@7800 -C 00).
Centronics is a printer with a Centronics
interface, like Epson's, on Luxor's Centronics card (card 60), with
Luxor's printer ROM 9704 at $7800 (volume 2, the
chapters on printers and on the printer ROM 9704). The printer takes
the characters as they come and prints them with the Swedish
character set, so that [ \ ] { | } become Ä Ö Å ä ö å;
the paper is text, 80 characters wide, and Save gives it as
a text file. The printer understands Epson's control codes (MX-80
and FX-80): bold (ESC E, ESC F), double
strike (ESC G, ESC H), italic
(ESC 4, ESC 5), underline (ESC -
1, ESC - 0), wide characters (SO for the line,
ESC W 1), condensed (SI, DC2 cancels it), elite
(ESC M), the country (ESC R n, 5 is Sweden)
and ESC @, which resets; graphics only move the
carriage. For example
PRINT #1,CHR$(27);"E";"BOLD";CHR$(27);"F". With an
empty setting, as in LIST PR:, 9704
chooses type U from the card's status, and it writes to the same port
as C; type C is chosen with OPEN "PR:CSA36C70" AS FILE
1. The printer is always ready, except when the page has
not yet fetched the characters (in the terminal: -l
roms/pr9704.rom@7800 -C 00).
I en länk kopplar ?p40=pa in P40 och
?centronics=pa Centronicsskrivaren. Båda sitter på kort
60, så bara en av dem åt gången.
In a link, ?p40=pa connects the P40 and
?centronics=pa the Centronics printer. Both sit on card
60, so only one at a time.
GrafikkortetGraphics card
Grafikkortet står utanför boken. Det är inspirerat av Libers HR-80 från 1984, ett kort med en egen processor och en tolk i EPROM som tog emot kommandon på V24 och ritade i färg på en egen skärm. Manualen till HR-80 är inte funnen, så kommandona här är gjorda efter annonsen och resten är gissat: ett exempel på vad som hade gått att bygga då, inte en avbild av kortet. Bilden är 256 x 256 punkter i fyra av ABC 810:s åtta färger åt gången och visas på en lapp bredvid ABC80:s skärm; Spara ger den som en bild.
The graphics card is outside the book. It is inspired by Liber's HR-80 from 1984, a card with its own processor and an interpreter in EPROM that took commands on V24 and drew in colour on a screen of its own. The HR-80 manual has not been found, so the commands here follow the advertisement and the rest is guessed: an example of what could have been built then, not a copy of the card. The picture is 256 x 256 dots in four of the ABC 810's eight colours at a time and is shown on a sheet beside the ABC80's screen; Save gives it as an image.
Kortet tar emot tecken på V24 i 9600 baud. Några av
kommandona: 12 rensar, 1 f väljer färg, 28 x y sätter
den fasta punkten, 2 x y ritar en punkt, 4 x y en linje
dit, 5 x y fyller från punkten, 18 rad+32 kolumn+32
flyttar markören för text, och ESC 0-3 f väljer de fyra
färgerna bland de åtta; y = 0 är längst ner. ABC80:s egen ROM skriver
inte på V24, så exemplet RUN DR0:HR80 på
Exempeldisketten lägger en liten rutin i maskinkod på
$FF80 och skickar varje tecken med
Z=CALL(65408,T). Med BASIC II går det med
OPEN "PR:VSA70A99.7" AS FILE 1 och PRINT
#1,A$; (RUN "MO0:HR80"). Utan kortet väntar
rutinen; Ctrl+C stoppar. Alla kommandon står i
emulator/karna/hr80.h.
Kortet har också påhittade fönster och en mus. Musen
på bilden är kortets mus: kortet ritar pekaren, lyfter och flyttar
fönster (dra i titelraden) och stänger dem (rutan i hörnet), och
lägger det som hänt i en kö som ABC80 frågar efter med ESC ?.
RUN DR0:FONSTER2 visar det.
The card takes characters on V24 at 9600 baud. Some of
the commands: 12 clears, 1 c chooses the colour, 28 x
y sets the fixed point, 2 x y draws a dot, 4 x y a
line there, 5 x y fills from the point, 18 row+32
column+32 moves the cursor for text, and ESC 0-3 c choose
the four colours among the eight; y = 0 is at the bottom. The
ABC80's own ROM does not print on V24, so the example RUN
DR0:HR80 on the Example disk puts a small machine code
routine at $FF80 and sends each character with
Z=CALL(65408,T). With BASIC II it works with
OPEN "PR:VSA70A99.7" AS FILE 1 and PRINT
#1,A$; (RUN "MO0:HR80"). Without the card the
routine waits; Ctrl+C stops it. All the
commands are in emulator/karna/hr80.h.
The card also has invented windows and a mouse. The
mouse on the picture is the card's mouse: the card draws the
pointer, raises and moves windows (drag the title bar) and closes
them (the box in the corner), and puts what happened in a queue that
the ABC80 asks for with ESC ?. RUN DR0:FONSTER2 shows
it.
Kortet kopplas in och ur medan maskinen går, och bilden
ligger kvar tills Rensa på lappen. I en länk kopplar
?v24=hr80 in det; i terminalen abc80 -H
bild.png, och abc80f -H visar det i ett eget
fönster.
The card is connected and disconnected while the machine
runs, and the picture stays until Clear on the sheet. In a
link, ?v24=hr80 connects it; in the terminal
abc80 -H bild.png, and abc80f -H shows it
in a window of its own.
CMOS-minnetCMOS memory
CMOS-minnet är 2 KB RAM på
$5000–$57FF (20480–22527), som det
batteriförsedda minnet på Super Smartaid. Det som står där sparas i
webbläsaren och finns kvar när sidan laddas om eller maskinen startas
om: POKE 20480,42, ladda om, och PRINT
PEEK(20480) ger 42. Spara och Ladda… flyttar det
som en fil (i terminalen: -M cmos.bin). I en länk slår
?cmos=pa på det.
The CMOS memory is 2 KB RAM at
$5000–$57FF (20480–22527), like the
battery-backed memory on the Super Smartaid. What is there is saved in
the browser and remains when the page is reloaded or the machine
restarted: POKE 20480,42, reload, and PRINT
PEEK(20480) gives 42. Save and Load… move it as
a file (in the terminal: -M cmos.bin). In a link,
?cmos=pa switches it on.
DemotThe demo
Genesis-demot laddar demot från bandet (snabbt) och spelar musiken, som ligger efter programmet på bandet, utan fjärrstyrning; … från disketten startar det med ABC-DOS, utan musik.
Genesis demo loads the demo from tape (fast) and plays the music, which follows the program on the tape, without remote control; … from disk starts it with ABC-DOS, without music.
Kom igång
Det här är en ABC80, Luxors dator från 1978, i webbläsaren. Processorn, skärmen, ljudet, kassetten och disketten är emulerade och kör maskinens egna ROM:ar, så det är samma BASIC som på den riktiga maskinen. Emulatorn hör till boken ABC80 inifrån.
Klicka på den svarta skärmen och skriv. Varje rad avslutas med Enter, som är RETURN. ← och Backsteg backar, → går framåt och Ctrl+C är BREAK. Å, Ä, Ö, É och Ü skrivs som vanligt. Text som klistras in skrivs som tangenter, en rad i taget.
Prova:
PRINT 2+2- Ett program, rad för rad:
10 PRINT "HEJ "; 20 GOTO 10 RUN
Ctrl+C stoppar det,LISTvisar det ochNEWtar bort det. - Exempeldisketten under Disketten, och sedan
RUN DR0:GISSAellerRUN DR0:KURVA. - MÅLARE under Kassetten, ett ritprogram från 1982 på band: svara 10 och RETURN, och rita med E, R, T, D, G, C, V och B.
- Skrivaren: kryssa i P40 eller Centronics under
Skrivaren och skriv
LIST PR:. - CP/M: kryssa i CP/M under Maskinen och skriv
DIR. - Zork I: knappen Zork I under Disketten.
Har maskinen hängt sig: RESET, eller Starta om, som också tömmer minnet. Hjälper inget av dem: Av/på, som hämtar sidan på nytt utan valen, med allt urkopplat och CMOS-minnet tomt. Panelerna fälls ut med ett klick på listen, och i i varje panel berättar mer om det som finns där. Sidan kommer ihåg vilka som är öppna. EN överst visar sidan på engelska.
En liten lampa i listen visar vad som är inkopplat: grön för
disketten, kassetten, kretsen, skrivaren, grafikkortet och
CMOS-minnet, ljusare när maskinen använder dem. Sänder maskinen på
V24 utan grafikkortet blir grafikkortets lampa gul; så syns det om
till exempel PR: går dit i stället för till skrivaren.
Ljudet är på, men webbläsaren släpper inte fram det förrän man har klickat på sidan eller skrivit något.
En länk kan ge tangenter att skriva efter starten, med
\r för RETURN och \w500 för en paus i ms:
abc80.html?k=10 PRINT "HEJ"\r20 GOTO 10\rRUN\r.
?ljud=av startar utan ljud och ?sprak=en
på engelska; resten står under i i panelerna. Den här rutan
visas av sig själv första gången, men inte med ?k=.
Getting started
This is an ABC80, Luxor's computer from 1978, in the browser. The processor, screen, sound, cassette and floppy disk are emulated and run the machine's own ROMs, so it is the same BASIC as on the real machine. The emulator belongs to the book ABC80 inifrån (the ABC80 from the inside), which is in Swedish.
Click the black screen and type. Every line ends with Enter, which is RETURN. ← and Backspace go back, → goes forward and Ctrl+C is BREAK. The machine has a Swedish keyboard: Å, Ä, Ö, É and Ü are typed as usual. BASIC's messages are in English, but the example programs are in Swedish. Pasted text is typed as keys, one line at a time.
Try:
PRINT 2+2- A program, line by line:
10 PRINT "HELLO "; 20 GOTO 10 RUN
Ctrl+C stops it,LISTshows it andNEWremoves it. - Example disk under Floppy disk, and then
RUN DR0:GISSAorRUN DR0:KURVA. - MÅLARE under Cassette, a drawing program from 1982 on tape: answer 10 and RETURN, and draw with E, R, T, D, G, C, V and B.
- The printer: tick P40 or Centronics under
The printer and type
LIST PR:. - CP/M: tick CP/M under The machine and type
DIR. - Zork I: the Zork I button under Floppy disk.
If the machine has hung: RESET, or Restart, which also clears memory. If neither helps: Off/on, which fetches the page again without the choices, with everything disconnected and the CMOS memory empty. The panels open with a click on their bar, and i in each panel tells more about what is in it. The page remembers which are open. SV at the top shows the page in Swedish.
A small lamp in the bar shows what is connected: green for the
floppy disk, the cassette, the ROM, the printer, the graphics card
and the CMOS memory, brighter when the machine uses them. If the
machine sends on V24 without the graphics card, the graphics card's
lamp turns yellow; that shows if, for example, PR: goes
there instead of to the printer.
Sound is on, but the browser lets it through only after you have clicked on the page or typed something.
A link can give keys to type after the start, with
\r for RETURN and \w500 for a pause in ms:
abc80.html?k=10 PRINT "HELLO"\r20 GOTO 10\rRUN\r.
?ljud=av starts without sound and ?sprak=sv
in Swedish; the rest is under i in the panels. This box appears
by itself the first time, but not with ?k=.