Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Fixing versions 1.00 and 1.01 for COCO3

7 views
Skip to first unread message

Kent D. Meyers

unread,
Nov 8, 1986, 10:50:19 PM11/8/86
to

NAM cc3fix
TTL Fix version 1.00 and 1.01 OS9 to run on CoCo3.


* Utility to convert Version 1.00.00 and 1.01.00 to a form
* that is compatible with the new COCO3.
*
* If it assembles correctly the ident is:
*
* Header for: cc3fix
* Module size: $0135 #309
* Module CRC: $BFFE45 (Good)
* Hdr parity: $1C
* Exec. off: $00A1 #161
* Data Size: $00C8 #200
* Edition: $01 #1
* Ty/La At/Rv: $11 $81
* Prog mod, 6809 obj, re-en

* Boot the system normally, run cc3fix, and then do a cobbler
* to a freshly formatted blank disk. This new system disk will
* boot directly on the COCO3 without the memory conflicts that
* would previously cause 1.00.00 and 1.01.00 to crash.
* The new disk will still work correctly on a COCO1 or COCO2,
* but you will lose one 256 byte page of memory.
* Kent D. Meyers. November 4, 1986.

IFP1
USE DEFSFILE
ENDC

MOD SIZE,NAME,PRGRM+OBJCT,REENT+1,ENTRY,MSIZ

ORG 0
RMB 200 stack
MSIZ EQU .

NAME FCS "cc3fix"
FCB 1 edition

OS9NAM FCS 'OS9'
SYSGONAM FCS 'SYSGO'

BADVERSN FCC " Wrong Version of OS9."
FCB $0A
FCC " NO patches made!!"
FCB $0D

PATCHMSG FCC " Already Patched."
FCB $0A
FCC " NO patches made!!"
FCB $0D

GOODMSG FCC " Now Compatible with COCO3!!"
FCB $0A
FCC " OK to run cobbler now!!"
FCB $0D

* Fix memory limit in OS9 module.

ENTRY LEAX OS9NAM,PCR
LDA #$C1
OS9 F$LINK
LDX M$SIZE,U
CMPX #$07E7
BNE WRONGVSN
LEAX $BC,U
LDD #$F0*$100+$EF
CMPA ,X
BNE PATCHED
STB ,X
BSR MVERIFY

* Fix the loader that moves the kernel up into high memory.

LDX #$F049
LDA #$EF
STA ,X
STA $F054-$F049,X

* Fix warm boot setup in the Sysgo module.

* This code may appear a bit strange at first, but I felt that I
* had to take into account the fact that many people have made
* customized sysgo modules. So the code scans through the module
* until it finds the jmp instruction that must be modified.

LEAX SYSGONAM,PCR
LDA #$C1
OS9 F$LINK
PSHS U

SETJMP LDD #$F00C
PSHS A,B
LDA #$7E

FINDJMP CMPA ,U+
BNE FINDJMP
PULS A,B
CMPD ,U
BNE SETJMP
LDA #$EF
STA ,U
PULS U
BSR MVERIFY

* Kill warm reset. It won't work anymore.

LDD #$00FF
STD >$0071

LEAX GOODMSG,PCR

WRITEOUT LDA #2
LDY #80
OS9 I$WRITLN
CLRB
OS9 F$EXIT

WRONGVSN LEAX BADVERSN,PCR
BRA WRITEOUT

PATCHED LEAX PATCHMSG,PCR
BRA WRITEOUT

* MVERIFY by Kevin K. Darling
************************************************
* module verify in memory with CRC update.
*

MVERIFY TFR U,X x is mod address

LDY M$SIZE,X y is mod size
LEAY -3,Y beginning of chksum
TFR Y,D y is byte count
LEAU D,U set u to chksum
LDA #$FF init chksum
STA ,U
STA 1,U
STA 2,U
PSHS U
OS9 F$CRC calc new crc
PULS U
COM ,U+
COM ,U+
COM ,U
RTS

EMOD
SIZE EQU *
END

0 new messages