sjgray / osi-monitor-roms Goto Github PK
View Code? Open in Web Editor NEWProject to disassemble ROM then re-assemble to byte exact plus enhancements
Project to disassemble ROM then re-assemble to byte exact plus enhancements
Ohio Scientific Monitor ROMs Project ==================================== Last update: Dec 29, 2022 This is a repository of OSI Monitor ROMs. The goal is to gather known monitor roms, disassemble each back to readable source, with meaningful symbols, label names, and descriptive comments, and to be able to re-assemble it with the ACME assembler. Once the ROM is understood we want to be able to customize each with enhancements or additional features, for example supporting Superboard II Rev D (C1P Series II) selectable video modes, colour printing etc. Included Monitors ----------------- * CEGMON - In progress * WEMON - In progress * SYN600 - Queued * NEWMON - Queued * BAER MON - Queued * PCMON2 - Queued * DABUG - Queued * Aardvark - Queued MONITORS ======== CEGMON - Chkiantz, Elen, and Graves Monitor ------ * /Original Source/ folder was a disassembly found on the web. For reference only! * /Docs/ contains the manual and installation instructions. * /Binaries/ contains know versions for various systems. * /NewBinaries/ contains newly assembled versions from my updated source * NOTE: CEGMON will not function correctly with US ROMs. You must use the UK-101 ROMs! WEMON - Watford Electronics Monitor ----- * Only the Binary and Manual were available. * /Docs/ contains the Manual and a review * /Binaries/ contains original binaries for various systems. * /Disassembly/ folder is my own disassembly of the binary using CBM-Transfer. The included ASM-PROJ file will enable you to generate various output formats. * /Experimental/ is a special "split" version. SYN600 - Original OSI Monitor for multiple systems ------ * Split Binaries can be assembled as required NEW MONITOR - By Roger Cuthbert - Supplied with UK-101 machines ----------- * Binary and Manual BAER MON By Wolfgang Baer -------- * Binary and Manual (German) PCMON2 ------ * Binary only - Found in a Superboard I purchased. * Appears to be a variation of the SYN600 ROM. DABUG - Unknown Monitor for C1 ----- * Binary Only Aardvark - Monitor for C1 and Superboard II. The version for C4 has not been found yet -------- * Binary for C1 * Binary for Superboard II * Basic Disassemblies for both ########### ## BASIC ## ########### * UK-101 BASIC ROMs can be found in the /BASIC folder. * Needed for certain Monitor ROMs CURRENT STATUS ============== SYSTEMS: (S) =Superboard II (SD)=Superboard II Rev D / C1P Series II (UK)=UK-101 (C2)=C2P/C4P FEATURES: (ASM) = Assembles?, (LBL)=Meaningful Labels, (COM)=Commented (CUST) = Customizable? (VID)=Selectable Video Options? STATUS: (Y)es, (No), (P)artial MONITOR SYSTEM ASM LBL COM CUST VID ------- ------ --- --- --- ---- --- CEGMON UK Y Y P Y Y CEGMON S Y Y P Y Y CEGMON SD Y Y P Y Y GECMON C2 Y Y P Y N WEMON UK Y P P N N WEMON S Y P P N N WEMON SD Y P P N N WEMON C2 N P P N N All other MONITORS have not been investigated yet. If you have other Monitor ROMs please contact me to have them added! Steve
I am usiing this assembler listing with my home built 6502 system. In may ways it duplicates the Ohio superboard I had years ago.
Major difference is rearranging all IO to be in the $Dxxx segment and uing a PS2 keyboard instead of the original scanned matrix. (Interface is similar to ACIA)
To the problem( about 80 lines down):
The screen is still 1k at $D000-$D3FF but the assembler listing calculation does not give the correct result.
SWIDTH = COLS-1
TOP = SCREEN+START
BASE = ROWS-1*WIDTH+TOP
BOT = SIZE+1*1024+SCREEN
For my board: SCREEN = $D000, WIDTH = 32, SIZE =0, START =69, COLS = 24. ROWS = 26
The calculations give (verified by examining the output file):
SWIDTH = 23
TOP = $D045
BASE = $D03F
BOT = $D400
The calculation for BASE gives $D035 which is clearly (now) not correct and gave some strange results.
The formula should have been (NB parentheses):
BASE = (ROWS-1) * WIDTH + TOP which gives $D365 and works correctly.
As it happens the formula for BOT was OK for my system (accidental) but it should be:
BOT = (SIZE+1) * 1024 + SCREEN
Admittably I am not using the same assembler but I would assume that the normal arithmetic precedence rules would be followed. (Mine is VASM oldstyle)
I think this may also apply to other listings.
Hope that is useful
Phil
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.