Error in explanation of the source code?

From: Baltissen, GJPAA (Ruud) <ruud.baltissen_at_apg.nl>
Date: Wed, 12 May 2010 11:31:47 +0200
Message-ID: <3FAF2D74FB701448B997B2CB7A0076C20F4C1251@winsv116.office01.internalcorp.net>
Hallo allemaal,


I'm busy with creating the source code of the 8250 using the German book
I uploaded a short while ago and the schematics found on Bo's site.


            ;**  Check number of heads
            D_0568
A2 02                       ldx     #$02

A5 82                       lda     OREGB__
29 40                       and     #$40
F0 01                       beq     D_0571

CA                          dex
            D_0571                                  ;
[0571]
8E AC 04                    stx     NSIDES


The above part checks the number of heads, according the book. The line
'and #$40' checks PB6 of the 6530 which is unconnected, thus reads as a
(H) and therefore X is decremented, resulting in only one head. Or am I
wrong? (I hope so)



            ;**  Check type of drive, 2A or 2C
A2 01                       ldx     #$01

A5 82                       lda     OREGB__
29 10                       and     #$10            ; check if jumper
has been placed
D0 01                       bne     D_057D          ; no, -> 8050

CA                          dex
            D_057D                                  ;
[057D]
8E EA 04                    stx     VERSWC_
D0 03                       bne     D_0585
            D_0582
A2 07                       ldx     #$07
2C                          .by $2C                 ; dummy BIT opcode
            D_0585                                  ;
[0585]
A2 17                       ldx     #$17
86 83                       stx     OREGDB_ 


The book mentions that variable VERSWC_ ($04EA) on the disk controller
is used to tell the drive to use either 2A or 2C as format code. But 2A
is only meant to be used by the 2031/4040/1541 AFAIK. Both 8050 and 8250
disks use 2C.
But at D_0582 the direction bit for the head select is set according the
found result; dis- or enabling the use of this bit. So IMHO _this_ part
checks the number of heads, not the above one.


Then there is the variable VERNUM ($109F) for the Bus Controller. Here
is either 'A' or 'C' stored, depending whether is is an 8050 or 8250.
And I found a place where it is used to fill place $02 of the BAM. Now
you understand why I'm more then a bit confused.

Any comment is welcome!


--
     ___
    / __|__
   / /  |_/     Groetjes, Ruud
   \ \__|_\
    \___|       URL: Ruud.C64.org


 






De informatie in dit e-mailbericht is vertrouwelijk en uitsluitend bestemd voor de 
geadresseerde. Wanneer u dit bericht per abuis ontvangt, verzoeken wij u contact op te 
nemen met de afzender per kerende e-mail. Verder verzoeken wij u in dat geval dit 
e-mailbericht te vernietigen en de inhoud ervan aan niemand openbaar te maken. 
Wij aanvaarden geen aansprakelijkheid voor onjuiste, onvolledige dan wel ontijdige 
overbrenging van de inhoud van een verzonden e-mailbericht, noch voor daarbij 
overgebrachte virussen.

APG Algemene Pensioen Groep NV is gevestigd te Heerlen en is ingeschreven in het 
handelsregister van de Kamer van Koophandel Limburg onder nummer 14099617


The information contained in this e-mail is confidential and may be privileged. 
It may be read, copied and used only by the intended recipient. 
If you have received it in error, please contact the sender immediately by 
return e-mail; please delete in this case the e-mail and do not disclose it's 
contents to any person. We don't accept liability for any errors, omissions, 
delays of receipt or viruses in the contents of this message which arise as a 
result of e-mail transmission.

APG Algemene Pensioen Groep NV is registered in the trade register of the Chamber 
of Commerce Limburg, The Netherlands, registration number: 14099617


       Message was sent through the cbm-hackers mailing list
Received on 2010-05-12 10:00:03

Archive generated by hypermail 2.2.0.