From da71f225ca22a915a14919a2f84f7c6b6c90accd Mon Sep 17 00:00:00 2001 From: Wayne Warthen Date: Wed, 8 Dec 2021 17:04:03 -0800 Subject: [PATCH] ZPM3 Fixes - Fixes to ZPMLDR to make it functional with RomWBW. - Incorporate fixes from the Jon Saxton disassembly in ZPM3 itself. - Credit to Lars Nelson for finding the ZPM3 source (disassembly). --- Doc/ChangeLog.txt | 2 + Doc/ROM Applications.pdf | Bin 193894 -> 193894 bytes Doc/RomWBW Applications.pdf | Bin 229564 -> 229562 bytes Doc/RomWBW Architecture.pdf | Bin 447507 -> 447508 bytes Doc/RomWBW Disk Catalog.pdf | Bin 134795 -> 134794 bytes Doc/RomWBW Getting Started.pdf | Bin 271578 -> 271719 bytes ReadMe.md | 10 +- ReadMe.txt | 10 +- Source/Doc/GettingStarted.md | 6 +- Source/Images/Build.cmd | 4 +- Source/Images/Makefile | 5 +- Source/Images/d_zpm3/u0/ROMWBW.TXT | 7 +- Source/ZPM3/Build.cmd | 2 + Source/ZPM3/Notes.txt | 30 +++++ Source/ZPM3/bnkbdos3.spr | Bin 13568 -> 13568 bytes Source/ZPM3/bnkbdos3.spr.bak | Bin 0 -> 13568 bytes Source/ZPM3/resbdos3.spr | Bin 2048 -> 2048 bytes Source/ZPM3/resbdos3.spr.bak | Bin 0 -> 2048 bytes Source/ZPM3/zpm3fix.txt | 187 +++++++++++++++++++++++++++++ Source/ZPM3/zpm3ldr.rel | Bin 2944 -> 3072 bytes Source/ZPM3/zpm3ldr.rel.bak | Bin 0 -> 2944 bytes Source/ver.inc | 2 +- Source/ver.lib | 2 +- 23 files changed, 248 insertions(+), 19 deletions(-) create mode 100644 Source/ZPM3/Notes.txt create mode 100644 Source/ZPM3/bnkbdos3.spr.bak create mode 100644 Source/ZPM3/resbdos3.spr.bak create mode 100644 Source/ZPM3/zpm3fix.txt create mode 100644 Source/ZPM3/zpm3ldr.rel.bak diff --git a/Doc/ChangeLog.txt b/Doc/ChangeLog.txt index e7d42423..7a3861a1 100644 --- a/Doc/ChangeLog.txt +++ b/Doc/ChangeLog.txt @@ -58,6 +58,8 @@ Version 3.1.1 - LWN: Substantial BPBIOS cleanup - AJL: Add ZMD adaptation - D?T: Substantial update to TastyBasic incuding a .COM executable +- PMS: Added VGM audio file player +- WBW: ZPMLDR and ZPM3 fixes, credit to Lars Nelson for finding ZPM3 source! Version 3.1 ----------- diff --git a/Doc/ROM Applications.pdf b/Doc/ROM Applications.pdf index be61eaa69a9b8e31243ded5761247253329daa9f..bdf95a31d360f324385c2a2582337d4ca9f002be 100644 GIT binary patch delta 539 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 OskWYa>h8UJw*D3jcWUnd delta 14035 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 u#~TT2+cv-M{~dDW=55n-%_0QKnMX8l85bmMKxW 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