Rovsing 11002378

Fra DDHFwiki
Spring til navigation Spring til søgning

Bit arkæologi på 11002378 CR80 Disc Pack ( MINICAMPS )

https://datamuseum.dk/aa//cr80/b8/b8af24a88.html

01.03.2024/Holger

(udvides løbende ....)

Generelt

Minicamps er en bootbar SMD disk, der formentligt har været anvendt til test af et "mini" CAMPS netværk. Den indeholder utilities til udvikling af programmer i PASCAL, SWELL og Assembler. Desuden er der værktøjer til generering af boot moduler. Hvis den kan bootes op på Datamuseums CR80, er vi "godt" kørende. Der er dog ingen debug værktøjer til egentlig programudvikling (bortset fra DISASM og PATCH).

System filer

BFD#0x0000 BFD (Basic File Directory)

BFD#0x0001 MD (mother directory ????)

BFD#0x0002 BM (sector bit map)

BFD#0x0003 ASF (måske Alternative Sector File??).

ASF er på 8 sektorer (fyldt med data) på Minicamps, men 1 (tom) sektor på alle andre, floppier inklusive.

Boot moduler

Disken indeholder 3(4) boot moduler:

BFD#0x0007 FILE_BOOT.0200

BFD#0x0008 USER_BOOT.DEVS.1

BFD#0x0009 BACKUP_BOOT

BFD#0x011a BOOT1 (måske boot modul)

BFD#0x013e TESTFILE2 (Hvad er det? "-")

Hvorvidt bootmodulerne kan køre på Datamuseums CR80 vides ikke.

Generering af bootmoduler

Disken har formentlig været brugt til generering af bootmoduler til CAMPS noder.

SYSGEN genererer et Load Module ud fra et antal Program Modules. BOOT genererer et boot modul (som kan forstås af AMOS Bootloader) ud fra et Load Module. Det indeholder bla. page nr. og start addr.

SYSTEMS.D/MINI_CAMPS.D indeholder jobfiler til generering af et bootmodul ved hjælp af SYSGEN og BOOT.

Filen CMDS.T indeholder alle parametre til SYSGEN (med mine kommentarer)

400 // formentligt en start addresse ??

INIT // Kernel INIT

@**GENS.D*SYSGEN.D*INIT.C

KERNEL //selve KERNEL

@**GENS.D*SYSGEN.D*KERNEL.S0.C

CPU // antal CPU'er

1

COM // com parametre, måske LTU definitioner

0

0

2

30

0

2

60

0

2

90

0

PCB // antal process Control Blocks ??

26

MSG // max antal system messages ??

55

ROOT //root moduler

@**GENS.D*SYSGEN.D*ROOT.256.C

@**GENS.D*SYSGEN.D*FMS.D*MINI_CAMPS.D*FMS.C

@**GENS.D*SYSGEN.D*CDC_D.C //CDC driver

@**GENS.D*SYSGEN.D*FD.C //floppy driver

IDLE //idle process

0

@**GENS.D*SYSGEN.D*IDLE.C

@**GENS.D*SYSGEN.D*CORUMON.C //coroutine monitor

@**GENS.D*SYSGEN.D*TTY.C //styrer formentligt system konsollen

@**GENS.D*SYSGEN.D*BUF.C

@**GENS.D*SYSGEN.D*MULDIV.C

@**GENS.D*SYSGEN.D*FF.C

@**GENS.D*SYSGEN.D*IO_SYSTEM.0802.C //io system

@**PC.D*MON.D*LINK.D*V0104.D*PC_MON.C

@**GENS.D*SYSGEN.D*PASRTS.C //Pascal run time.

@**GENS.D*SYSGEN.D*MINI_CAMPS.D*TOS_INIT.C //Terminal Operation System

EXIT

Bemærkning: Den første Pascal compiler hos Rovsing genererede en slags meta kode, som blev fortolket af PASRTS. Senere lavede man en version, der genererede CR80 kode (var væsentligt hurtigere).

TOS (Terminal Operation System) opretter en instance for hver bruger, der logger på via et netværk (X-net fx.)


Udvikling af program moduler

Disken indeholder alle værktøjer til udvikling af programmer i Assembler, SWELL og Pascal.

Under SYSGEN.D/FMS.D/MINI_CAMPS.D er der job filer til compilering af FMS INIT, som linkes sammen med resten af FMS. Tilsyneladende er det nødvendig at "tilpasse" FMS parametre til hvert individuelt system.


Test system

Under USERS.D/CAH.D ligger en masse filer, der ligner input til TEST_TDX.

Fx. i MESSAGE11 defineres test pattern (THE QUICK BROWN FOX JUMPED OVER THE LAZY DOG) og derefter opsætning af transmission og append af test data. Filer som fx. TEST_MSP_2_RES opsamler resultatet.

Over halvdelen af filerne på disken ligner test filer.

Utilities

I root directory ligger et større antal utilities. De fleste er nogenlunde selvforklarende ud fra navnet. Ellers kan man slå nogle af dem op i kap. 6 i CR80 Minicomputer Handbook.

SWELL programmering

Under OBJ.D har en bruger(OBJ??) "leget" med SWELL. Han har skrevet nogle små programmer (listet nedenfor). Det første parser et personnummer. Formentlig en øvelse i SWELL programmering

CR80 SWELL er en assembler sprog, der har Pascals struktur. Det betyder, at konstant- og record definitioner i include filer kan bruges i både Pascal og SWELL.

Der er altid en 1-1 relation mellem SWELL kode og det CR80 kode, som blever genereret. Det betyder, at "nørderne" kan "file" på koden direkte i SWELL.

Strukturer som

IF..THEN..ELSE

FOR..DO

WHILE..DO

REPEAT..UNTIL

SWITCH CASE

får man "gratis".

Man skal ikke tænke på, om det nu lige er "branch if equal to" eller branch if not equal to".

I de to nedenstående eksempler kan man se, at brugeren selv skal initialisere IOsystemet (ACCEPTFILES) og åbne en STREAM for at få adgang til CIN og COUT.


SWELL sample 1

Her er et CR80 SWELL program fra disken (OJG*SWL_A.S). Programmet virker ikke.

Swell sample 1 1/3 Swell sample 1 2/3 Swell sample 1 3/3

SWELL sample 2

Et andet CR80 SWELL program fra disken (OJG*SWL.S). Det viser, hvordan man laver procedure kald. Ved procedure definition angives de registre, der overfører parametre. Det sidste register i listen (R5 i dette program) er retur link. SWELL koden putter PC i dette register ved procedurekald. Proceduren skal så gemme den og tage den frem ved exit.

Swell sample 1 1/2 Swell sample 3 1/2