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