🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

1 total messages Started by Kent D. Meyers Sun, 09 Nov 1986 03:50
Fixing versions 1.00 and 1.01 for COCO3
#816
Author: Kent D. Meyers
Date: Sun, 09 Nov 1986 03:50
152 lines
3465 bytes
 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
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads