Re: Data Becker CBM-8000 hi-res graphics

From: Anders Carlsson <anders.carlsson_at_sfks.se>
Date: Tue, 5 Sep 2017 15:06:09 +0200
Message-ID: <5B4F277F02034B2196AC3FCE551A44F1@ryds>
Ruud wrote:

> You see, enough procedures that have to be given a name yet. That's why 
> the commented disassembly of the 8032 is needed first: knowing what these 
> subroutines do will shed a lot of light on the DB ROM routines using these 
> subroutines.

Dr Watson's course in assembly programming for the C64 (Derek Bush & Peter 
Holmes) has a nice cross-reference memory map at the end with C64, VIC, 
Basic 2 and Basic 4 addresses. I'm sure other books like PET Revealed, PET 
Subroutines or some COMPUTE! book might have additional clues.

http://commodore.bombjack.org/books/commodore/books/Dr_Watson_C64_Assembler_docs.zip

I'll admit I haven't followed this thread very closely. Does the Data Becker 
replace the regular BASIC V4 ROM with its own BASIC, or are most of the 
calls you mentioned calls into regular ROM? I'll assume we're talking about 
a regular 8032 with Basic 4, which according to Dr Watson's listing yields 
the following hits:

.eq P_BB24 = $BB24
No match, but $BB23 is the entry point to OUTSTR, print string pointed to by 
(INDEX1) of length (A).

.eq P_C92D = $C92D
GETADR, convert FLPT value in (FAC) to an unsigned integer (0 to 65535) and 
place result in (LINNUM) and (Y/A).

.eq P_C99D = $C99D
FADD, floating point addition: (FAC) = MFLPT at (A/Y) + (FAC).

.eq P_CB5E = $CB5E
FMULT, multiply (FAC) by MFLPT pointed to by (A/Y), answer in FAC.

.eq P_CCD8 = $CCD8
MOVFM, load FAC with MFLPT pointed to by (A/Y).

.eq P_CD0D = $CD0D
No match, but $CD0A is the entry point to MOVMF, store (FAC) into location 
pointed to by (X/Y).

.eq P_CD61 = $CD61
SIGN, find sign of (FAC), result in A - $01 = positive, $00 = zero, $FF = 
negative.

.eq P_CD8E = $CD8E
ABS, perform ABS function.

.eq P_CD91 = $CD91
FCOMP, compare (FAC) with MFLPT pointed to by (A/Y). Result returned in A: 
$01 = (FAC) > MFLTP value, $00 = equal, $FF = FAC) < MFLPT

.eq P_CF83 = $CF83
NUMPRT, display integer stored in (X/A).

.eq P_D534 = $D534
Not found

.eq P_E015 = $E015
.eq P_E018 = $E018
.eq P_E01B = $E01B
Not found

.eq P_F0D5 = $F0D5
LISTNK, OR (A) to convert device number to a LISTEN address for the IEEE bus 
and transmits this as a command. This is the Kernal routine pointed to by 
LISTEN ($ED0C on the C64)

.eq P_F143 = $F143
.eq P_F1D9 = $F1D9
Not found

.eq P_F2E0 = $F2E0
NCLOSE, Close specified file  - 64/VIC jump to kernal routine ($E1CA on the 
C64)

.eq P_F563 = $F563
NOPEN, Open specified file - 64/VIC jump to kernal routine ($E1C1 on the 
C64)

Hopefully this will speed up the disassembly a bit.

Best regards

Anders Carlsson


       Message was sent through the cbm-hackers mailing list
Received on 2017-09-05 14:00:08

Archive generated by hypermail 2.2.0.