Motorola EXORset renovering

Fra DDHFwiki
Spring til navigation Spring til søgning

Dette er et projekt til at få Motorola EXORset 30 til at køre med noget brugbart. Eftersom det XDOS operativsystem, der fulgte med maskinen kun har BASIC, Pascal og Assembler, så vil jeg prøve at få OS-9 til at boote.

Status

På grund af at floppy disk controlleren bruger en MC6843 chip, som kun kan håndtere 128 byte sektorer, så er det ikke muligt at lægge OS-9 eller FLEX på maskinen.

Opgaver

  1. Finde ud af hvordan XDOS bootes fra diskette
  2. Jeg har allerede:
    1. OS-9 part 1 og et bootstrap modul fra EXORciser - men er tilpasset 8" drev.
    2. Disk driver fra EXORciser. Skal checkes for referencer til den adresse FDCen sidder på.
    3. Device driver for seriel port
  3. Mangler:
    1. Skærmdriver til en Motorola 6845. Memory-mapped grafik?
    2. Keyboarddriver der går gennem en Motorola 6821 PIO. Lavede jeg en til Thomson MO5?
  4. Det vil sandsynligvis blive nødvendigt at lave et serielt kabel således at jeg kan sætte en alm. terminal på
  5. Portere IOMan, SCF, RBF, Clock, Init, SysGo

Konfiguration

Display MC6845 CRTC at $EF00 Skærmen er memory-mappet til $E000-$E800
Keyboard MC6821 PIA (A-side) at $EF80-$EF83
Terminal Exorterm terminal at $EC16
Clock MC6840 PTM $EF20-$EF27
Serial port MC6850 ACIA at $EF40-$EF41
Parallel port MC6821 PIA (B-side) at $EF60-$EF63
Parallel I/O MC6821 PIA at $EFA0-$EFA3 - unknown purpose
Floppy Disk Controller MC6843 FDC at $EC00

28-11-2022

Den bærbare pc vi brugte til kommunikation med EXORset har samme problem med en Piccolo. Der er ikke noget i vejen med kablet. Det kunne tyde på at volt-niveauet er for lavt, så det kommer fra en USB-seriel adapter. En seriel port er designet til +/- 12 V. USB kan kun generere +/- 5 V. Nu er EXORsetten sendt tilbage til magasinet.

20-09-2022

Forbindelserne i DB9-stikket er korrekt lavet. Det viser sig dog at Motorola har byttet om på betegnelsernes betydning af Tx og RX, og vi dermed er kommet til at lave et null-modem istedet.

  • TxDATA - TRANSMITTED DATA — An RS-232C compatible serial data input to the Receive Data (Rx Data) input of the ACIA (modem configuration)
  • RxDATA - RECEIVED DATA — An RS-232C compatible serial data output from the Transmitted Data (Tx Data) ouput of the ACIA (modem configuration)

Måske er kobberet på printpladen så irret at der ikke er forbindelse?

17-09-2022

Efter at have flyttet ledningerne til de øvre ben på kantstikket er der nu noget som virker. Modtageren er en Linux-pc med USB-til-seriel adaptor. Man skal køre 2400 bps. Når jeg taster XCOM på EXORsetten kan jeg taste bogstaver, som kan ses på Linux-pcen. Det sker ikke noget den anden vej, så der er også problemer i DB9-stikket. Det lykkedes dog at overføre de øverste fire kilobyte med EXORbug i S-record format ved at brug DUMP programmet. Derudover er det nok ret begrænset hvad det serielle kabel kan bruges til da der ikke er mulighed for at adressere den serielle port fra BASIC.

11-09-2022

Ideen var at kunne brænde en ny EPROM med OS-9 kernen. PHK lånte mig en EPROM emulator, som kunne programmeres over den parallelle port. Emulatoren undstøtter fra 8 KBytes (2764) til 64 KBytes (27512). Men på bundkortet er der to EPROMer mærket henholdsvis MBM2716 og MB8516. De skal begge emuleres samtidigt.

Derudover har jeg samarbejdet med Peter for at få lavet et serielt kabel. Kablet virker ikke og det ser ud til at ledningerne er loddet på de forkerte ben. På kantstikket er der nummeret '1' på højre overside og '19' på venstre overside. Ledningerne er loddet på undersiden i hunstikket.

28-08-2022

EXORbug 1.3 er ikke arkiveret på Internettet. Den nyeste udgave derude er v. 1.2. Vi skal have taget en kopi når vi tager dem ud af soklerne.

Jeg kigger på hvad der skal lægges på de nye PROM'er. EXORbug ligger i $F000-$FFFF (4 KB). De øverste 2 KB er reserveret til "OS9p1". Den kode linker til "Init" og "OS9p2" før "Boot" kaldes for at læse mere ind fra diskette eller andet. Dvs. OS9p2, Init og Boot skal ligge i de andre 2 KB. Desværre skal "Boot" bruge driveren til floppy disk controlleren: "EXORctlr". Alt i alt kommer vi op på 2595 bytes. Det kan ikke lade sig gøre. Nu viser det sig at ifølge manualen er der 8 KB E/ROM fra $C000 til $DFFF i sockets U22, U23, U33 og U32. Disse 8 KB gør det muligt at lægge samtlige device drivere og adskillige kommandoer i ROM. Næste opgave er at finde disse sokler på hovedkortet for at se om der er noget der i forvejen. Det betyder også at der kun er 48 KB til bruger programmer. Det burde dog ikke være noget problem. C-compileren skulle stadigvæk kunne køre hvis vi gør det i single-user mode.

Display: Maskinen er udstyret med en MC6845, som kan sættes i både tekst og grafisk mode. I tekst-mode bruges der RAM i området $E000-$E6DF. Grafik er 320x256 i sort/hvid og bruger 16 KB pga. en del spild. Ifølge manualen skal man bruge en af de 16 KB RAM blokke. Det bliver et problem, da OS9 dynamisk allokerer RAM til eget brug fra begge ender.

Jeg har lige fundet et nyhedsbrev fra FLEX brugergruppen. Der annonceres det at der ikke kommer en udgave af FLEX operativsystemet til EXORset 30 da hardwaren ikke understøtter det. Problemet er at Motorola 6843 FDC chippen kun kan klare 128 byte sektorer og ikke 256, som FLEX kræver. Det samme gør sig gældende for OS-9. Man kan stadigvæk portere OS-9, men man vil ikke kunne bruge diskette-drevene. Man kunne koble et SD Card System på via parallelporten og emulere en harddisk, men det bliver så anakronistisk, at der ikke er nogen mening i at bygge det op på en EXORset.

22-07-2022

Skrivebeskyttelse af disketterne virker omvendt af det normale. For at gøre en diskette read/write skal man dække skrive-beskyttelseshakket med ugennemsigtig tape. Alle disketterne er kopierede og de spor der var ulæselige indeholdt filer til operativsystemet. Jeg kunne derfor reparere disketterne ved at kopiere det samme spor fra en anden diskette med samme version af XDOS. Via UniComal PCen kan jeg også fremstille nye disketter. Desværre ser det ud til at skrivning på drev 1 fejler i mange tilfælde. Jeg kunne f.eks. ikke lave en brugbar backup fra drev 0 til 1.

26-06-2022

På en Motorola 6809 ligger interrupt-vektorerne på de øverste 14 bytes - altså $FFF2 til $FFFF. I kildekoden til OS-9 kernen er der en speciel tilføjelse for EXORciser maskinen. OS-9 kan loades hvorsomhelst og ved koldstart sættes vektorerne til at pege på OS-9's rutiner. Her er koden:

 ifeq CPUType-EXORSR
*** >>> Patch For Exorciser Environment <<< ***
*
 leax NMI,pcr
 stx $FFFC
 leax SWIRQ,pcr
 stx $FFFA
 leax IRQ,PCR get irq vector
 stx $FFF8 set hardware vector
 leax SWI2RQ,PCR get swi2 vector
 stx $FFF4 set hardware vector
 leax SWI3RQ,PCR get swi3 vector
 stx $FFF2 set hardware vector
EndRAM equ $A50 This must be greater than the size
* of ctlrmod+bootmod+os9p2+*
 leax -EndRAM,PCR get artificial end-of-ram
 stx D.BtLo
 stx D.BtHi
*
*** >>> End Of Exorciser Patch <<< ***
 endc

Jeg havde håbet på at EXORset fungerede på samme måde, men det viser sig at der er read-only memory fra $E800 og op, og man kan ikke sætte nye vektorer. Kernen fra EXORciser kan ikke bruges. Man skal istedet udskifte EPROMen med en der indeholder en traditionel OS-9 kerne. Jeg kiggede på hovedkortet, og der er to EPROMer med håndskrevet 'EXORbug 1.3' på etiketterne.

25-06-2022

Ved at inspicere OS-9 boot disketten for Exorciser MDOS ser det ud til at det bare er en alm. MDOS boot diskette. OS-9 ligger bare på disketten som en alm. binær fil man skal loade med 'LOAD'. (XDOS er en delmængde af MDOS pga. den mindre kapacitet på 5.25" disketter i forhold til Exorciserens 8").

09-06-2022

Tastatur repareret af Peter. Delete og backspace virker ikke, men det er ret sandsynligt at monitorkoden ikke håndterer backspace.

03-06-2022

Når man skriver 'XDOS' i EXORbug monitoren hoppes til en rutine på adressen $E800. Denne indlæser to 128-byte sektorer nr. 23 og 24 på disketten til adresse $20 og eksekverer derfra. Har disassembleret bootstrap koden fra XDOS 4.13 disketten. Denne indlæser XDOS fra sektor 25 og fremad på disketten.

CURDRV equ 0
NUMSCT equ 3
STRSCT equ 1 Starting sector
LSCTLN equ 5 Last sector length
CURADR equ 6
FDSTAT equ 8
SCTCNT equ $B

RESTOR equ $E875
LPINIT equ $EBC0
CHKERR equ $E853
READPS equ $E86D

L0000    inc   CURDRV
         jsr   RESTOR Seek to track 0
         jsr   LPINIT Initialise line printer (compatibility with MDOS)
         leax  <L0080,pcr
         lda   <X.SECLEN-L0080,x
         sta   LSCTLN   <u0005
         bita  #$07
         bne   L0069
         deca  
         bmi   L0069
         ldd   L0080-L0080,x
         bmi   L0069
         anda  #$03
         lslb  
         rola  
         lslb  
         rola  
         incb  
         std   STRSCT
         ldd   <X.NUMSEC-L0080,x
         ble   L0069
         std   NUMSCT
         ldd   <$7A,x
         beq   L0069
         pshs  b,a
         ldd   <X.CURADR-L0080,x
         beq   L0069
         std   CURADR
         ldd   NUMSCT
         exg   a,b
         rorb  
         rora  
         rorb  
         andb  #$80
         subd  #$0080
         addb  LSCTLN
         addd  CURADR
         std   <SCTCNT
L004B    lda   ,x
         coma  
         sta   ,x
         clr   CURDRV
         cmpa  ,x
         tfr   cc,b
         coma  
         sta   ,x+
         tfr   b,cc
         bne   L0071
         cmpx  <SCTCNT
         bne   L004B
         ldd   #CHKERR  Put address for disk error as return address
         pshs  b,a
         jmp READPS Read sectors

L0069    lda   #$3F
L006B    sta   FDSTAT
         coma  
         jmp CHKERR  Check for disk error

L0071    lda   #$4D
         bra   L006B

 fcb $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00

L0080 fcb $2C,$06
      fcb $80,$2D,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
      fcb $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
      fcb $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
      fcb $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
      fcb $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
      fcb $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
      fcb $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
      fcb $00,$00,$00,$00,$00
X.SECLEN fcb $20   At address $75
X.NUMSEC fdb $002E number of sectors to load
X.CURADR fdb $0100
 fdb $0804
 fcb $00,$00,$00,$00