En liten uppdatering.
Jag har nu testat av att boota gamla RT-datorn med Flex 9.1 och de modifieringar jag gjort i IO. Det fungerar, både i emulatorn och i riktiga datorn.
Men....
Diskettstationerna jag fick av Pi314 visar sig vara kraftigt out of alignment, skriver jag en skiva med GreaseWeazle till den ena kan jag inte läsa den i den andra.
Så jag valde en av dom som "master" och kör på den. Skrev den modifierade Flex 9.1 via GW till diskett. Testade att boota i RT-datorn.
Funkade direkt. Satte i en diskett i drive #2 (#1 enligt Flex) och körde NEWDISK, det gick inte, massor av skriv fel.
Och då började terminalkortet på RT-datorn att balla ur. Värmeproblem, klockan var sedan länge förbi Bedtime så jag gav upp och släckte ner.
Här är vad jag gjort hitintills:
Kopierade TSCFLX09.DSK till en temparea, döp om filen till TSCFLX09RT.DSK
Boota SWTPC-Emu med TSCFLX09RT.DSK.
Disk #1 monterades med AB005.DSK och följande kommando skrevs:
1.UNDEL
Programmet hittade en raderad fil *OPYSHIT.CMD och frågade efter nytt namn, COPY.CMD och filen återställdes.
SWTPC-Emu stängdes ner och TSCFLEX09RT monterades i FloppyMaintenance och IO.ASM inporterades till disk-imagen.
Stängde FloppyMaintenance.
Startade SWTPC-Emu och bootade upp Flex och körde assembler på IO.ASM, sparade diskdrivrutinen samt skapade ny Flex med "min" IO och den sparade diskdrivrutinen.
Länkade den nya Flexen till bootspåret på disketten.
RT-datorn-flex-1.jpg
Startade om SWTPC-Emu och bootade med "nya" Flexen:
RT-datorn-flex-2.jpg
Raderade den gamla FLEX.SYS, döpte om RTFLEX.SYS till FLEX.SYS och länkade (tror inte detta behövs då det är startsektorn var Flexen befinner sig som pekas ut i bootsektorn)
Startade om SWTPC-Emu och testade att allt funkar.
Nu ska jag skriva en ny diskett i den fungerande diskettstationen och boota RT-datorn.
Dock tror jag att jag får motionera lite kretsar på videoterminalen så den fungerar som den ska.
Och allt mitt arbete med att göra en ny CÅ-8017 och tester med Flex som hängde sig var förgäves. Jag bootade "fel" Flex. Den jag testade med var modifierad med drivrutin för WD2797 och hade nog lite bus för sig i drivrutinen.
Den Flex jag har fixat till är med en generisk WD1771-drivrutin som TSC tog fram, och den fungerar rakt av. Jag har inte lyckats få tag på källkoden (än) men att spara ner arean med drivrutinen funkar utan problem.
Jag kommer att ladda upp TSCFLX09RT.DSK till Github så fort jag testat på RT-datorn.
Här är källkoden för IO.ASM, modifierad av mig för att passa gamla (och troligtvis nya) RT-datorn.
Kod: Markera allt
NAM I/O DRIVER PACKAGE
*
* COPYRIGHT 1984 PERIPHERAL TECHNOLOGY
* ALL RIGHTS RESERVED
*
* MODIFICATIONS BY MIKAEL KARLSSON 2024
* TO FIT RT-DATORN, BOTH THE "OLD" AND THE
* "NEW".
* ALL CALLS ARE NOW CBUG CALLS INTO
* THE S-BUG EQUIVALENT ADDRESSES
*
* RT-DATORN EQUATES
* VECTORED ADDRESSES FOR INDIRECT JUMPS
* COMPATIBLE WITH SWTPC S-BUG
*
PTMON EQU $F800 CBUG 4.3 (2.3) START
PTINPNE EQU $F804 CBUG 4.3 (2.3) INCH
PTINPUT EQU $F806 CBUG 4.3 (2.3) INCHE
INCHEK EQU $F808 CBUG 4.3 (2.3) INCHEK
PTOUT EQU $F80A CBUG 4.3 (2.3) OUTCH
*
* FLEX EQUATES
*
CHPR EQU $C700 SPOOLER
COLD EQU $CD00 COLD START IN FLEX
*
ORG $D3E5 START OF VECTOR TABLE
*
* I/O VECTOR TABLE
*
*---------------------------------------------------
INCH1 FDB INCH2 * INPUT CHARACTER - NO ECHO
IHNDLR FDB IHND * IRQ INTERRUPT HANDLER
SWIVEC FDB $DFC2 * SWI3 VECTOR LOCATION
IRQVEC FDB $DFC8 * IRQ VECTOR LOCATION
TMOFF FDB TOFF * TIMER OFF ROUTINE
TMON FDB TON * TIMER ON ROUTINE
TMINIT FDB TINT * TIMER INITIALIZE ROUTINE
MONITOR FDB MON * MONITOR RETURN
TINIT FDB INIT * TERMINAL INITALIZATION
STAT FDB STATUS * CHECK CHARACTER RECEIVED
OUTCH FDB OUTPUT * TERMINAL CHARACTER OUTPUT
INCH FDB INPUT * TERMINAL CHARACTER INPUT
*---------------------------------------------------
*
ORG $D370 START OF ROUTINES
*
* RETURN TO MONITOR
*
MON JMP [PTMON] GO BACK TO CBUG
*
* TERMINAL INITALIZATION NOT USED IN RT-DATORN
*
INIT RTS JUST RTS BACK
*
* TERMINAL CHARACTER INPUT ROUTINE
*
INPUT JMP [PTINPUT]
*
* INPUT CHARACTER WITH NO ECHO
*
INCH2 JMP [PTINPNE]
*
* TERMINAL CHARACTER RECEIVED CHECK
*
STATUS JMP [INCHEK]
*
* TERMINAL CHARACTER OUTPUT ROUTINE
*
OUTPUT JMP [PTOUT]
*
* IRQ INTERRUPT HANDLER
*
IHND RTS NOT USED FOR NOW
*
* TIMER INITIALIZE ROUTINE
*
TINT RTS NOT USED FOR NOW
*
* TIMER ON ROUTINE
*
TON RTS NOT USED FOR NOW
*
* TIMER OFF ROUTINE
*
TOFF RTS NOT USED FOR NOW
*
END COLD MUST HAVE TRANSFER ADDRESS!