home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
CBM Funet Archive
/
cbm-funet-archive-2003.iso
/
cbm
/
firmware
/
drives
/
old
/
8050
/
d
/
8250.notes
< prev
next >
Wrap
Text File
|
1995-02-02
|
4KB
|
168 lines
gLOBAL MEMORY MAP FOR THE 8250:
ip (INTERFACE PROCESSOR)
00XX:ZERO PAGE
01XX:STACK
02XX:i/o CHIPS
020X:riot FOR ieee
0200: ieee DATA IN
0202: ieee DATA OUT
028X:riot FOR ieee AND FLOPPY DISK CONTROLLER
0280: ddr IS #$1f
0: OUT atn OUT??
1: OUT ndac OUT?
2: OUT nrfd OUT?
3: OUT eoi OUT
4: OUT dav OUT?
5: IN eoi IN
6: IN dav IN?
7: IN atn IN?
0282: ddr IS #$38
0: IN \
1: IN {$7c} dEVICE # BITS IN
2: IN /
3: OUT DRIVE 1 LED (1 IS ON)
4: OUT DRIVE 0 LED
5: OUT ERROR LED OUT
6: IN ndac IN?
7: IN nrfd IN?
c000-ffff: rom
fdc (FLOPPY DISK CONTROLLER)
0000-003f: ZERO PAGE (PARTIAL)
004X: via
0040:pORT b, ddr IS #$7f
0: OUT \ STEPPER MOTOR
1: OUT / CONTROL #1 ?
2: OUT \ STEPPER MOTOR
3: OUT / CONTROL #0 ?
4: OUT
5: OUT
6: OUT
7: IN INDEX HOLE ???
0041: pORT a: DISK DATA READ
0042: ddrb #$7f
0043: ddra
004b: acr, SET TO #$01 %0000 0001
t1: pb7 UNUSED, ONE SHOT
t2: ONE SHOT
sHIFT REGISTER DISABLED
pORT b LATCH: DISABLED
pORT a LATCH: ENABLED ON ca1 TRANSITION
004c: pcr, SET TO #$fc %1111 1100
cb2: OUT MANUAL 1
cb1: ACTIVE HIGH
ca2: OUT MANUAL 0
ca2 IS WRITE GATE ($dc = ca2 LOW = WRITE?)
ca1: ACTIVE LOW
004d: ifr
008X: riot
0080: DISK DATA WRITE
0082: PORT b
0: OUT DRIVE SELECT
1: OUT \
2: OUT / DENSITY SELECT
3: IN 1 = WRITE PROTECTED
4: IN 1 = DRIVE TYPE 1 (2C FORMAT), 0 = DRIVE TYPE 0 (2A FORMAT)
4: OUT SIDE SELECT (1 = TRK 1-77, 0 = TRK 78-154)
5:
6: IN 0 = 2 SIDED DRIVE, 1 = 1 SIDED DRIVE
7:
0083: DDR b, SET TO #$07 (DRIVE TYPE 0) OR #$17 (TYPE 1)
008f: RIOT T8
0100-013f: STACK
fc00-ffff: rom
sHARED MEMORY:
fdc ip
04XX10XXsHARED VARIABLES
05XX11XXbUFFER #0
06XX12XXbUFFER #1
07XX13XXbUFFER #2
1DXXbUFFER #0 SHADOW
1EXXbUFFER #1 SHADOW
1FXXbUFFER #2 SHADOW
08XX20XXbUFFER #3
09XX21XXbUFFER #4
0aXX22XXbUFFER #5
0bXX23XXbUFFER #6
0cXX30XXbUFFER #7
0dXX31XXbUFFER #8
0eXX32XXbUFFER #9
0fXX33XXbUFFER #A
10XX40XXbUFFER #B
11XX41XXbUFFER #C BAM/HEADER DRIVE 0
12XX42XXbUFFER #D BAM/HEADER DRIVE 1
13XX43XXbUFFER #E COMMAND BUFFER + IP VARIABLES
jOB CODES AND RETURN VALUES:
80 00read A SECTOR
90 10write A SECTOR
a0 20verify A SECTOR
b0 30seek A SECTOR
c0 40bump (MOVE) HEAD TO TRACK 0
d0 50jump TO MACHINE CODE IN BUFFER
e0 60execute CODE IN BUFFER ONCE UP TO SPEED AND HEAD READY
01 JOB COMPLETED SUCCESSFULLY
02 HEADER BLOCK NOT FOUND
03 NO sync CHARACTER
04 DATA BLOCK NOT FOUND
05 DATA BLOCK CHECKSUM ERROR
07 VERIFY ERROR AFTER WRITE
08 WRITE PROTECT ERROR
09 HEADER BLOCK CHECKSUM ERROR
0a DATA BLOCK TOO LONG
0b id MISMATCH ERROR
0c FORMAT SPEED ERROR
0f DRIVE NOT READY
10 BYTE DECODING ERROR
drvst: DISK DRIVE STATUS
4 10 SHUT DOWN DRIVE MOTOR? 1=YES
5 20 DRIVE MOTOR 1=ON
6 40 HEAD STEPPING 1=ON
7 80 DRIVE UP TO SPEED 1=NO
hOW DID i EXTRACT THOSE romS?
1. tHE ip ROM IS EASY: YOU CAN DO THAT WITH m-r. i USED kOSmON WHICH
KNOWS TO READ/WRITE THE DRIVE'S MEMORY ALREADY, AND SIMPLY DID A
t c000 ffff 5000 TO TRANSFER THE CONTENTS.
2. tHE fdc MEMORY IS SLIGHTLY MORE DIFFICULT. yOU CAN'T ACCESS THAT
DIRECTLY, SO i WROTE A SMALL PROGRAM:
1200 LDX #$00
1202 LDA $FF00,X
STA $0700,X
DEX
BNE $1202
LDA #$01
JMP ($FC02)
tHIS RUNS AT $0600 (BUFFER #1) OF THE fdc IF YOU WRITE d0 INTO 1004.
a PAGE OF MEMORY CAN THEN BE READ FROM $1300, AGAIN WITH m-r.
hAVING A COMMENTED DISASSEMBLY OF THE 1541 ROMS, OR A GOOD DESCRIPTION
SUCH AS IN "iNSIDE cOMMODORE dos", BY rICHARD iMMERS AND gERALD g nEUFIELD,
isbn 0-88190-366-3, PUBLISHED 1984 BY dATAMOST, 20660 nORDHOFF sTREET,
cHATSWORTH, ca 91311-6152, +1-818-709-1202, IS AN INVALUABLE HELP.
tHERE IS TOO MUCH i/o GOING ON. iT LOOKS FROM A SOFTWARE POINT OF VIEW
THAT THERE ARE 4 PAIRS OF i/o PORTS. oN THE HARDWARE SIDE HOWEVER ONE
FINDS ONLY 2 riotS AND 1 via, WHICH IS ONE PAIR SHORT.
-oLAF.
--
___ oLAF 'rHIALTO' sEIBERT RHIALTO@MBFYS.KUN.NL wHAT'S THE USE OF
\x/ RACISM IF YOU CAN'T EVEN SEE IF A PERSON BELONGS TO YOUR ABHORRED KIND?