Hello CP/M Fans,
someone has the Source-Code for the WaveMate Bullet CP/M 3.
Source-Code for the Boot-Eprom and Source-Code BIOS.
Greeting
Rolf
Printable View
Hello CP/M Fans,
someone has the Source-Code for the WaveMate Bullet CP/M 3.
Source-Code for the Boot-Eprom and Source-Code BIOS.
Greeting
Rolf
On Aug 21, 1:15*pm, Rolf Harrmann <rolf-junk-harrm...@t-online.de>
wrote:[color=blue]
> Hello CP/M Fans,
>
> someone has the Source-Code for the WaveMate Bullet CP/M 3.
>
> Source-Code for the Boot-Eprom and Source-Code BIOS.
>
> Greeting
> Rolf[/color]
HI Rolf!
[url]http://groups.google.com/group/wavemate_computers[/url]
Good luck and have a nice day!
Andrew Lynch
Hello Andrew,
On Thu, 21 Aug 2008 15:08:33 -0700 (PDT), lynchaj wrote:
[color=blue]
>HI Rolf!
>
>[url]http://groups.google.com/group/wavemate_computers[/url]
>
>Good luck and have a nice day!
>
>Andrew Lynch[/color]
There I already looked after.
The Source-Code is not complete.
Are missing to a few Assembler Files.
I have the File Bullet_Cache_BIOS_CBIOS.pdf also by Ommipage ocr and
am missing a File MINICODE.LIB.
This File must be a Marco-File.
Thanks and have a nice day!
Rolf
On Thu, 21 Aug 2008 19:15:23 +0200, Rolf Harrmann wrote:
[color=blue]
> Hello CP/M Fans,
>
> someone has the Source-Code for the WaveMate Bullet CP/M 3.
>
> Source-Code for the Boot-Eprom and Source-Code BIOS.
>
> Greeting
> Rolf[/color]
I just found a bunch of techincal info on the Wavemate Bullet - was in a
storage locker I emptied after a decade and I thought some people might
like to have it saved. If I scan it is there a cp/m repository where I
could send the docs?
On Aug 21, 6:51*pm, _ <jtayNOSPAM...@hfDONTSENDMESPAMx.andara.com>
wrote:[color=blue]
> On Thu, 21 Aug 2008 19:15:23 +0200, Rolf Harrmann wrote:[color=green]
> > Hello CP/M Fans,[/color]
>[color=green]
> > someone has the Source-Code for the WaveMate Bullet CP/M 3.[/color]
>[color=green]
> > Source-Code for the Boot-Eprom and Source-Code BIOS.[/color]
>[color=green]
> > Greeting
> > Rolf[/color]
>
> I just found a bunch of techincal info on the Wavemate Bullet - was in a
> storage locker I emptied after a decade and I thought some people might
> like to have it saved. *If I scan it is there a cp/m repository where I
> could send the docs?[/color]
Hi!
Yes, there is a WaveMate Bullet archive
[url]http://groups.google.com/group/wavemate_computers[/url]
Thanks!
Andrew Lynch
On Aug 21, 6:51 pm, _ <jtayNOSPAM...@hfDONTSENDMESPAMx.andara.com>
wrote:
[color=blue]
> I just found a bunch of techincal info on the Wavemate Bullet - was in a
> storage locker I emptied after a decade and I thought some people might
> like to have it saved. If I scan it is there a cp/m repository where I
> could send the docs?[/color]
The short answer is "no, you want a hardware archive, look around".
Here's the long answer for what to look for. It's a surprisingly
difficult question.
There is no single, simple "CP/M" repository except for early Digital
Research CP/M software products and manuals. CP/M ran on dozens and
dozens of hardware systems, possibly hundreds. That's one reason it
was important in the 70's and 80's.
Hardware documentation online for systems which ran CP/M is often
found in various privately-run archives for S-100 systems; or for
archives of manuals for both minicomputers and microcomputers. There
are also specific on-line archives by company & brand. Some archives
are specialized by processor, or by "bus" like S-100. I don't know of
any "single board Z80" archives, which describes the Bullet I believe.
Also, not all archives or collections are of on-line or scanned
documents; I have an extensive PAPER archive of S-100 and related
hardware documents. I'm not the only one to offer paper copies only. I
and others list manuals by title and brand and model.
Some archives or some mirrors of archives only last a few years, or
may last for several years. The scanned on-line archives often have
overlapping contents for obvious reasons. If you want to preserve your
WaveMate documents, provide them to multiple archives.
A Google Web search or a search of posts in comp.os.cpm for "S-100
manuals" or "hardware manuals", Z80 computer hardware", etc. will find
some of these archives. Searches for brand names will find brand-
specific archives.
But there are a few large archives which cross processor and bus
boundaries, such as
[url]http://www.bitsavers.org/[/url]
[url]http://vt100.net/manx/[/url] (a catalog of archive sites)
[url]http://www.hartetechnologies.com/manuals/[/url] (mostly but not exclusively
S-100)
...and probably others. Over periods of decades, these come and go.
That's not a joke: the first CP/M archives were started in the 1970's,
as 8-inch disk collections of contributed software.
Herb Johnson
retrotechnology.com
Rolf Harrmann skrev:[color=blue]
> There I already looked after.[/color]
You don't get to many answer on this subject!
(people are going fishing)...
[color=blue]
> The Source-Code is not complete.
> Are missing to a few Assembler Files.[/color]
The CP/M+ 3 source are THE source the Wave Mate Inc.
send with the "rev E" board! , (my board).
(i think i'm that 4'th member of that group that
newer found the time to introduce himself)...
[color=blue]
> I have the File Bullet_Cache_BIOS_CBIOS.pdf also by Ommipage ocr and
> am missing a File MINICODE.LIB.[/color]
Great!, could You please send it to the group,
i was sure i had to do that work,... thank You!
But OK,... You need info for Your SYSTEC board, yes?
(and not for the Bullet)...
When You look at the SYSTEC code You will look
for some data-struct like in the end of this,
the programming style differ from programmer to
the next, but all in all Your best friend is:
"CP/M Plus Operating System System Guide"
where appendix I.4 gives just another example...
Some "snips" from fd.z80, is this use-full?
good luck,
<ole>
---my dis from fddrv.rel---
---rework to fd.z80---
; 18 March 1991 <ole>
Name FdDrv
Entry FdInit, FdLgin, FdRead, FdWrit, FdTick
Entry ?PdErr
Extrn IniStm, FdVers, CntFlu, CntSpi
Extrn ?Pdec, ?Pmsg
Extrn ?Wboot, ?ConIn, ?ConO
Extrn @Adrv, @Rdrv, @Dma, @Dbnk
Extrn @Sect, @Trk, @ErMde
FddVer Equ 6 ; Version #, WM:= 5
FddRev Equ 'f' ; intern ID
WaitLoop Equ 16
; HdW Port's #
FdcCmd Equ 10H
FdcSta Equ FdcCmd
FdcTrk Equ 11H
FdcSec Equ 12H
FdcDta Equ 13H
Dma Equ 14H
FdxCtl Equ 16H
DmaMux Equ 17H
FdHwCnl Equ 18H
HrdSta Equ 19H
; 1793 Fdc Cmd's ; xxxTHVRR
; 001xxxxx step
; 010xxxxx step in
; 011xxxxx step out
; xxx1xxxx track
; xxxx1xxx head load
; xxxxx1xx verify
; xxxxxxRR step rate
CcfRstor Equ 03H
CcfSeek Equ 1CH
CcfRead Equ 80H
CcfWrite Equ 0A0H
CcfRadr Equ 0C0H
CcfVrfy Equ 0FFH ; (software, not 179x Cmd)
; Fdc Status error mask
SkMsk Equ 99H ; Seek OK
RdMsk Equ 9DH ; Read OK
WrMsk Equ 0FDH ; Write OK
; DMA cmd's
DmaDisa Equ 83H ; deselect
DmaEnab Equ 87H ; enable
DmaRezz Equ 0C3H ; reset
DmaRdSt Equ 0BFH ; read status
; DMA mask bit
DmaRdy Equ 20H
; DmaMux values for physical bank moves
Dmm11 Equ 00001000B ; 08H, bank1 -> bank1
Dmm01 Equ 00010000B ; 10H, bank0 -> bank1
Dmm10 Equ 00011000B ; 18H, bank1 -> bank0
Dmm00 Equ 00000000B ; 00H, bank0 -> bank0
; Hardware select
noUnit Equ 06H ; select no unit, LED's out
MxDD Equ 10H ; Software sel.
MxSD Equ MxDD+8 ; + Density pin
MnDD Equ MxDD+5 ; PLO + 1MHz
MnSD Equ MnDD+8 ; + Density pin
; Const
MaxRW Equ 12
Verify Equ 12
Retry Equ 5
Spinn Equ 150
; ASCII
CtrlC Equ 03
Bell Equ 07
Lf Equ 10
Cr Equ 13
Esc Equ 27
Dseg ; Code in System bank
FndUni: POP HL ; get ret addr
PUSH IX
PUSH IY
PUSH HL
LD A,(@Rdrv) ; unit #
LD HL,X17x8-17
LD BC,17
AND 7 ; unit 0..7
INC A
NxtUni: ADD HL,BC
DEC A
JR NZ,NxtUni
EX (SP),HL
POP IX
JP (HL)
FdInit: CALL FndUni
LD A,(BootFlg) ; ColdStart ?
Inc A
Jr Z,Finit ; B/ no
Ld A,-1
Ld (BootFlg),A ; Set Flag
Ld HL,Cright$ ; yes,
Call ?Pmsg ; print copyright msg
LD HL,(FdVERS)
LD DE,FddVer ; test version
SBC HL,DE
JR Z,Finit ; B/ OK
LD HL,VerMsg ; not OK
CALL ?PMsg
LD HL,FdVERS ; tell user,
CALL ?PDec
Stopp: JR Stopp ; and Halt
Finit: LD A,(@Rdrv)
AND A,7 ; unit 0..7
OR A,8
LD (IX+00),A ; Unit #
LD IY,Y12$72x3
LD DE,12+72
LD B,3
Fini1: XOR A
LD (IY+02),A
LD (IY+03),A
LD (IY+04),A ; R/WTO
ADD IY,DE
DJNZ Fini1
LD B,8
LD IX,X17x8
LD DE,17
Fini2: LD (IX+02),-1
ADD IX,DE
DJNZ Fini2
XOR A
LD (CntFlu),A
LD A,Spinn
LD (CntSpi),A
POP IY
POP IX
RET
FdLgin: LD (StackP),SP
LD SP,StackP
XOR A
LD (CntFlu),A
LD (CntSpi),A
CALL FndUni ; HL point to X17x8(.d.)
PUSH DE ; point to XDPH
PUSH IX
LD IY,Y12$72x3
LD B,3
Flgi1: PUSH BC
CALL Flush
POP BC
LD DE,12+72
ADD IY,DE
DJNZ Flgi1
POP IX
POP DE ; XDPH
LD HL,-12
ADD HL,DE
LD A,(HL) ; any alternate DPB ?
INC HL
OR (HL)
JP Z,Flgi11 ; B/ no
PUSH DE ; yes, find out what
LD A,(@Rdrv)
SET 3,A
OUT (FdxCtl),A
LD (XfCMD),A
AND 4 ; Drive type
LD B,A
PUSH BC
LD C,MxDD ; 10H
BIT 2,A ; Maxi / Mini ?
JR NZ,Flgi2 ; B/ Maxi
LD C,MnDD ; else Mini 15H
Flgi2: LD A,C
LD (HwCMD),A
OUT (FdHwCnl),A
CALL GetID
AND RdMsk
JR NZ,Flgi3
POP BC
LD A,(Id$Len)
LD (SecLen),A
OR B ; mini / maxi
SET 4,A ; DD flag
Ld B,A
Push BC
JR Flgi6
Flgi3: LD C,MxSD ; try single density 19H
LD A,(XfCMD)
BIT 2,A
JR NZ,Flgi4
LD C,MnSD ; else Mini 1FH
Flgi4: LD A,C
LD (HwCMD),A
OUT (FdHwCnl),A
CALL GetID
AND RdMsk
POP BC
JR Z,Flgi5
POP HL
LD HL,0000 ; no @DPH
JP Return
Flgi5: LD A,(Id$Len)
LD (SecLen),A
OR B ; mini / maxi
LD B,A
PUSH BC
Flgi6: LD A,(XfCMD)
SET 4,A
LD (XfCMD),A
OUT (FdxCtl),A
LD A,(HwCMD)
OUT (FdHwCnl),A
CALL GetID
AND RdMsk
POP BC
JR NZ,Flgi7
LD A,(Id$Sid)
Cp 1 ; Single Side ?
JR NZ,Flgi7 ; B/ yes
LD A,(Id$Len) ; still same disk ?
LD E,A
LD A,(SecLen)
CP E
JR NZ,Flgi7
LD A,B
SET 3,A ; Double side
LD B,A
Flgi7: POP DE
PUSH DE
LD HL,-12 ; alt DrvTbl
ADD HL,DE
LD A,(HL)
INC HL
LD H,(HL)
LD L,A ; HL point to alt DrvTbl
Flgi8: LD A,(HL) ; Media
CP B ; Same ?
JR Z,Flgi10 ; B/ yes
CP -1 ; end of table ?
JR Z,Flgi9 ; B/ yes
LD DE,0005 ; else
ADD HL,DE ; get next alt
JR Flgi8 ; , and try this one
Flgi9: OR A ; can't find
POP DE ; right media
JP Return
Flgi10: INC HL ; Found Alt DrvTbl
LD C,(HL)
INC HL
LD B,(HL) ; BC = addr Trans
INC HL
LD A,(HL)
INC HL
LD H,(HL) ; HL = DPB
LD L,A
POP DE ; DE = XDPH
PUSH DE
PUSH HL
EX DE,HL
LD (HL),C ; unit
INC HL
LD (HL),B ; type
POP BC ; DPB
LD DE,11
ADD HL,DE ; point to Addr DPB
LD (HL),C
INC HL
LD (HL),B ; set to DPB
POP DE
Flgi11: PUSH DE ; XDPH
LD HL,12 ; offset DPB
ADD HL,DE
LD A,(HL)
INC HL
LD H,(HL)
LD L,A
LD A,(HL) ; DPB in HL
LD (IX+06),A ; SPT
LD DE,17 ; offset DEN
ADD HL,DE
LD A,(HL)
AND 1 ; non zero is DD
LD C,A ; flag in C
INC HL
LD A,(HL)
LD (IX+04),A ; SIDE & scheme
INC HL
LD A,(HL)
LD (IX+05),A ; RPS
INC HL
LD A,(HL)
LD (IX+03),A ; SRAT
INC HL
LD A,(HL)
LD (IX+07),A ; WPTRK
INC HL
LD A,(HL)
LD (IX+08),A ; RTO
INC HL
LD A,(HL)
LD (IX+09),A ; WTO
LD A,(IX+00)
AND 4
RRCA ; 0 or 2
OR C ; add density (0..3)
LD HL,DcIndX ; array(0..3) of cmd's
LD E,A
LD D,00
ADD HL,DE ; index (0..3)
LD A,(HL)
LD (IX+01),A ; FdxCmd
LD (IX+02),00
LD IX,X17x8 ; point to start
LD B,8 ; init all 8 IX
LD DE,0000
Flgi12: PUSH BC ; repeat
INC (IX+02)
JR Z,Flgi15
LD A,(IX+06) ; SPT
LD BC,128 ; log record length
LD HL,0000
Flgi13: ADD HL,BC ; calc byte pr. track
DEC A
JR NZ,Flgi13
EX DE,HL ; DE:= byte pr. track
PUSH HL
XOR A
SBC HL,DE
POP HL
JR NC,Flgi14
; DE:= the largest
EX DE,HL
Flgi14: EX DE,HL
Flgi15: DEC (IX+02)
LD BC,17 ; point to next
ADD IX,BC
POP BC
DJNZ Flgi12 ; B/ until 8 IX
LD IY,Y12$72x3
LD B,3 ; init all 3 IY
LD C,00 ; zero C
LD HL,0000 ; and HL
Flgi16: XOR A ; clear carry bit
SBC HL,DE ; point to start
LD (IY+07),L ; of trackbuffer
LD (IY+08),H ; in DMAmemory
PUSH BC
LD BC,12+72
ADD IY,BC ; next buffer
PUSH HL
LD BC,0C000H ; DMAmemory full ?
XOR A
SBC HL,BC
POP HL
POP BC
JR C,Flgi17 ; B/ yes
; else
INC C ; next drive
DJNZ Flgi16
Flgi17: LD A,C
LD (DinUse),A
POP HL ; @DPH
XOR A
JP Return
---snip---
DoRadr: LD B,MaxRW ; try this # of time
doadR1: LD A,CcfRadr
LD HL,Id$Buf
PUSH BC
CALL Exec$A
POP BC
AND RdMsk
RET Z
DJNZ doadR1 ; try one more ?
Jr DoExEr
DoVrfy: LD A,CcfVrfy
LD HL,Buffer
Jr DoExec
DoRead: LD A,CcfRead
DoExec: CALL Exec$A
AND RdMsk
RET Z
Jr DoExEr
DoWrite: LD A,CcfWrite
CALL Exec$A
AND WrMsk
RET Z
DoExEr: Or -1
Ret
Exec$A: PUSH AF
LD A,(IX+01)
OUT (FdHwCnl),A
LD A,(IY+05) ; Psector
OUT (FdcSec),A
ExcRdy: IN A,(FdcSta)
AND 81H ; Ready ?
JR NZ,ExcRdy
LD B,(IX+05) ; RPS
LD C,00 ; calc
SRL B ; sector length-1
RR C
DEC BC
POP AF
PUSH HL
CP CcfVrfy
JR NZ,exe$1
LD A,CcfRead
LD (Dma3W1),BC
LD HL,DmaS3 ; verify
JR exe$5
exe$1: CP CcfRadr
JR NZ,exe$2
LD BC,6-1 ; length-1
JR exe$3
exe$2: CP CcfRead
JR NZ,exe$4
exe$3: LD (Dma4W2),BC
LD (Dma4W1),HL
LD HL,DmaS4 ; read from FDC
JR exe$5
exe$4: LD (Dma5W2),BC
LD (Dma5W1),HL
LD HL,DmaS5 ; write to FDC
exe$5: PUSH AF
LD A,Dmm11
OUT (DmaMux),A
CALL IniStm
Pop AF
POP HL
LD B,A
CP CcfRadr
JR Z,exe$6
LD A,(XfCMD)
OUT (FdxCtl),A
BIT 4,A ; side 2 ?
JR Z,exe$6 ; B/ no
SET 1,B
SET 3,B
exe$6: IN A,(HrdSta)
And 10H ; head load ?
JR NZ,exe$7
SET 2,B
exe$7: LD A,B
CALL GtIREQ
LD A,DmaDisa
OUT (Dma),A
LD A,DmaRdSt
OUT (Dma),A ; read DMA status
IN A,(Dma)
AND A,DmaRdy
Jr Z,exe$X
PUSH HL ; reset DMA error
LD HL,rZdma
CALL IniStm
POP HL
Or 4 ; data lost
exe$X: RET
; get FDC status
GtStat: LD A,(IX+00)
OUT (FdxCtl),A
LD A,0D0H
OUT (FdcCmd),A
Rept 6
Ex (SP),HL
EndM
Jr GstatX
GtIREQ: OUT (FdcCmd),A
; wait until FDC is ready
IrqRdy: IN A,(HrdSta)
BIT 6,A ; IREQ
JR Z,IrqRdy
GstatX: IN A,(FdcSta) ; return FDC status
Ld (DskErr),A
RET
GetID: LD HL,49152 ; time out
GidRdy: IN A,(FdcSta)
AND 81H ; Ready ?
JR Z,GtAddr ; B/ yes
DEC HL ; no, count down
LD A,H
OR L ; zero ?
JR NZ,GidRdy ; B/ no
OR -1 ; Z flag and (A)
RET
GtAddr: LD A,CcfRadr
LD HL,Id$Buf
PUSH HL
JP exe$1
MovMem: OUT (DmaMux),A
LD (MvMMs),HL
LD (MvMMd),DE
LD HL,MovMM$
CALL IniStm
MomRdy: IN A,(Dma)
AND DmaRdy
JR NZ,MomRdy
LD A,DmaDisa
OUT (Dma),A
RET
---snip---
; String to DMA: Reset DMA
rZdma: DefB Lgt1,Dma
DefB DmaRezz,DmaRezz ; DMA Reset
DefB DmaRezz,DmaRezz
DefB DmaRezz,DmaRezz
DefB 14H,28H ; A=Inc, B=fixed port
DefB 80H,82H
Lgt1 Equ $-(rZdma+2)
DefB 0
; Init stream to DMA: Memory to Memory
MovMM$: DefB Lgt2,Dma ; # byte, port #
DefB DmaDisa,7DH ; DISABLE DMA, ADR & BLK LEN FOLLOW
MvMMs: DefS 2 ; addr source
DefW 128-1 ; #byte in xfer -1
DefB 14H,10H ; A increments, B increments
DefB 0CDH ; DMA burst mode
MvMMd: DefS 2 ; addr dest
DefB 82H,0CFH ; LOAD A, CLR BYTE COUNT
DefB 8BH ; REINIT STATUS BYTE
DefB 0B3H ; FORCE READY
DefB DmaEnab,DmaRdSt ; ENABLE DMA, READ STATUS
Lgt2 Equ $-(MovMM$+2)
DefB 0 ; last byte (NULL)
; (for IniStm)
; Init stream to DMA: FDC to Memory (Buffer)
DmaS3: DefB Lgt3,Dma
DefB 7DH
DefW Buffer ; addr
Dma3W1: DefS 2 ; cnt-1
DefB 24H,28H ; A=Dec ?, B= fixed port
DefB 85H ; xfer byte at a time
DefB FdcDta ; port addr
DefB 82H,0CFH
DefB 1,0CFH ; xfer B -> A
DefB 8BH,DmaEnab
Lgt3 Equ $-(DmaS3+2)
DefB 0
; Init stream to DMA: FDC to Memory
DmaS4: DefB Lgt4,Dma
DefB 79H
Dma4W1: DefS 2 ; addr
Dma4W2: DefS 2 ; cnt-1
DefB 14H,28H ; A=Inc, B=fixed port
DefB 85H ; xfer byte at a time
DefB FdcDta ; port addr
DefB 82H,0CFH
DefB 8BH,DmaEnab
Lgt4 Equ $-(DmaS4+2)
DefB 0
; Init stream to DMA: Memory to FDC
DmaS5: DefB Lgt5,Dma
DefB 79H
Dma5W1: DefS 2 ; addr source
Dma5W2: DefS 2 ; cnt-1
DefB 14H,28H ; A=Inc, B=fixed port
DefB 85H ; xfer byte at a time
DefB FdcDta ; port addr
DefB 82H,0CFH
DefB 5,0CFH ; xfer A -> B
DefB 8BH,DmaEnab
Lgt5 Equ $-(DmaS5+2)
DefB 0
;
; Addressed by FdLgIn
DcIndX: DefB MnSD ; 1FH, 5" SD
DefB MnDD ; 15H, 5" DD
DefB MxSD ; 19H, 8" SD
DefB MxDD ; 10H, 8" DD
;
Cright$: DefB 'Copyright 1983, Wave Mate Inc.'
DefB ' / 1991, <ole>',Cr,Lf
DefB 'FD version ',FddVer+'0',FddRev
CrLf$: DefB Cr,Lf,0
;
VerMsg: DefB 'ERROR, floppy disk drive '
DefB 'version does not match'
DefB Cr,Lf
DefB 'FDDRV version is: ',FddVer+'0'
DefB Cr,Lf
DefB 'DRVTBL version is: ',0
;
DefS 16
StackP: DefS 2
;
---snip---
Hello Ole,
On Wed, 27 Aug 2008 03:47:53 +0200, Ole Christensen wrote:
[color=blue][color=green]
>> I have the File Bullet_Cache_BIOS_CBIOS.pdf also by Ommipage ocr and
>> am missing a File MINICODE.LIB.[/color]
>
>Great!, could You please send it to the group,
>i was sure i had to do that work,... thank You![/color]
i have uploaded on the Site two Files BETA-Version.
[url]http://www.hd64180-ecb.de/html/wavematebullet.html[/url]
[url]http://www.hd64180-ecb.de/assets/download2008/wbulett2.txt[/url]
[url]http://www.hd64180-ecb.de/assets/download2008/wbulett4.ASM[/url]
[color=blue]
>But OK,... You need info for Your SYSTEC board, yes?
>(and not for the Bullet)...
>
>When You look at the SYSTEC code You will look
>for some data-struct like in the end of this,
>the programming style differ from programmer to
>the next, but all in all Your best friend is:
>"CP/M Plus Operating System System Guide"
>where appendix I.4 gives just another example...
>
>Some "snips" from fd.z80, is this use-full?
>good luck,
><ole>[/color]
Many thanks for your Info.
Rolf
Rolf Harrmann skrev:[color=blue]
> Hello Ole,
>
> i have uploaded on the Site two Files BETA-Version.
>
> [url]http://www.hd64180-ecb.de/html/wavematebullet.html[/url]
> [url]http://www.hd64180-ecb.de/assets/download2008/wbulett2.txt[/url]
> [url]http://www.hd64180-ecb.de/assets/download2008/wbulett4.ASM[/url]
>
> Rolf
>[/color]
Hello Rolf,
Thank You, well done!
....i ran a dis on Your EPROM but:
i'm not happy with data from 0D4Fh to 0D88h:
it is for floppy and it is data,
but i just can't get it to sync 100%
it could be for the negativ offset used?
When You later select labels for this then
go first for the DRI doc and when You ran
out of ideas look at source from others,
good exemple can be found at:
[url]www.e-tech.net/~pbetti/archive/rlee[/url]
/J/JONOS/
/B/BAMDUA/DV10
/L/LOOSECPM/155/
/M/MORROW/
just to name a couple in that "goldmine".
<ole>
---
;LDRBIOS for Systec
;; Include cpmldr.asm
L00FF EQU 0FFH
;addr in DRI cpmldr
L00B0 EQU 00B0H ;cpmldr StackP
L015B EQU 015BH ;cpmfcb
L01D7 EQU 01D7H ;(-signon) (why copy?)
L023D EQU 023DH ;bdos
;hi addr
L2665 EQU 2665H ;StackP
L2710 EQU 2710H ;buffer?
ORG 0AB0H
L0AB0: JP L0B13
JP L0BE3
L0AB6: JP L0E69
L0AB9: JP L0E5F
L0ABC: JP L0E45
JP L0E45
JP L0E45
JP L0E5F
JP L0C71
L0ACB: JP L0C37
JP L0C74
JP L0C79
JP L0C7E
JP L0C8F
JP L0CB6
JP L0E6E
JP L0C84
JP L0E6E
JP L0E69
JP L0E6E
JP L0BE3
JP L0E4F
JP L0BE4
JP L0CB2
JP L0CB6
JP L0DBC
JP L0DD4
JP L0C36
JP L0C83
JP L0DC0
JP 0
JP 0
JP 0
L0B13:
LD (L0CD8),SP
LD SP,L00B0
CALL L0E4F
CALL L0E2A
LD HL,L0D4F ;end of @dtbl
LD B,16 ;all 16
LD A,0FFH
LD (L0DCC),A
L0B2A:
LD D,(HL)
DEC HL
LD E,(HL)
DEC HL ;point to next drive
PUSH HL
PUSH BC
LD A,E
OR D
CALL NZ,L0BCD
POP BC
POP HL
DJNZ L0B2A
L0B39:
LD HL,L0D4F ;end of @dtbl
LD B,16 ;all 16
L0B3E:
LD D,(HL)
DEC HL
LD E,(HL)
DEC HL
PUSH HL
PUSH BC
LD A,E
OR D
JR Z,L0B7F
LD C,B
DEC C
LD E,0
CALL L0ACB
LD A,H
OR L
JR Z,L0B7F
POP BC
PUSH BC
LD A,B
LD DE,L015B ;cpmfcb
LD (DE),A
PUSH DE
LD A,(DE)
ADD A,'@'
LD (L0BA1),A
LD DE,L0B98
LD C,9
CALL L023D ;bdos
POP DE
LD C,0FH
CALL L023D ;bdos
AND A
JR NZ,L0B7F
XOR A
LD (L0DCC),A
POP AF
LD (L015B),A ;cpmfcb
LD SP,(L0CD8)
RET
L0B7F:
POP BC
POP HL
DJNZ L0B3E
LD DE,L0BAC
LD C,9
CALL L023D ;bdos
CALL L0AB9
LD DE,L0BCA
LD C,9
CALL L023D ;bdos
JR L0B39
L0B98: DB 0DH,'Booting '
L0BA1: DB '@:CPM3.SYS$'
L0BAC: DB ' - Boot Error, <CR> to retry:$'
L0BCA: DB 0DH,0AH,'$'
L0BCD:
PUSH DE
POP IX
LD A,(IX+0FEH)
LD (L0CDB),A
LD A,B
DEC A
LD (L0CDA),A
LD D,(IX+0FDH)
LD E,(IX+0FCH)
EX DE,HL
L0BE2:
JP (HL)
L0BE3:
RET
L0BE4:
LD HL,L0D30
RET
;***no ref*** print char at (HL) up to zero
; entry: SP point to first char
N0BE8:
PUSH BC
PUSH DE
L0BEA:
LD A,(HL)
OR A
JR Z,L0BF7
LD C,A
PUSH HL
CALL L0ABC
POP HL
INC HL
JR L0BEA
L0BF7:
POP DE
POP BC
RET
;*** (more fun to just set bit7)
L0BFA:
LD B,0
LD DE,10000
CALL L0C18
LD DE,1000
CALL L0C18
LD DE,100
CALL L0C18
LD DE,10
CALL L0C18
INC B
LD DE,1
L0C18:
LD C,0FFH
OR A
L0C1B:
INC C
SBC HL,DE
JR NC,L0C1B
ADD HL,DE
LD A,C
OR A
JR NZ,L0C28
INC B
DEC B
RET Z
L0C28:
ADD A,'0'
LD C,A
PUSH BC
PUSH DE
PUSH HL
CALL L0ABC
POP HL
POP DE
POP BC
INC B
RET
L0C36:
RET
L0C37:
LD A,C
AND 0FH
LD (L0CDA),A
LD L,A
L0C3E:
LD H,0
ADD HL,HL
LD BC,L0D30
ADD HL,BC
LD A,(HL)
INC HL
LD H,(HL)
LD L,A
OR H
RET Z
LD A,E
AND 1
LD A,0
JR NZ,L0C6B
PUSH HL
PUSH IX
EX DE,HL
PUSH DE
POP IX
LD A,(IX+0FEH)
LD (L0CDB),A
LD L,(IX+0FAH)
LD H,(IX+0FBH)
CALL L0BE2
POP IX
POP HL
L0C6B:
AND A
RET Z
LD HL,0
RET
L0C71:
LD BC,0
L0C74:
LD (L0CDC),BC
RET
L0C79:
LD (L0CDE),BC
RET
L0C7E:
LD (L0CE0),BC
RET
L0C83:
RET
L0C84:
LD L,C
LD H,B
LD A,D
OR E
RET Z
EX DE,HL
ADD HL,BC
LD L,(HL)
LD H,0
RET
L0C8F:
LD HL,(L0CDA)
LD H,0
ADD HL,HL
LD BC,L0D30
ADD HL,BC
LD A,(HL)
INC HL
LD H,(HL)
LD L,A
OR H
LD A,0FDH
RET Z
EX DE,HL
PUSH DE
POP IX
LD L,(IX+0F8H)
LD H,(IX+0F9H)
LD A,(IX+0FEH)
LD (L0CDB),A
JP (HL)
L0CB2:
LD (L0CE2),A
RET
L0CB6:
XOR A
RET
;print char at(IX) up to bit7 is set
; entry: SP point to first char
L0CB8:
EX (SP),IX
PUSH BC
PUSH DE
PUSH HL
L0CBD:
LD C,(IX+00H)
RES 7,C
PUSH IX
CALL L0ABC
POP IX
BIT 7,(IX+00H)
INC IX
JR Z,L0CBD
POP HL
POP DE
POP BC
EX (SP),IX
RET
L0CD7: DB 0
L0CD8: DW 0
L0CDA: DB 0
L0CDB: DB 0
L0CDC: DW 0
L0CDE: DW 0
L0CE0: DW 0
L0CE2: DB 0
L0CE3: DB 0
L0CE4: DB 0
DB '01-Feb-85',0
;14 byte to port 60H (DMA)
L0CEF:
DB 01H,14H,28H,80H,85H,6BH,8AH,0CFH
L0CF7: DB 79H ;xfer B->A
L0CF8: DefW 0,0 ;starting DMA addr, length-1
DB 0CFH
;---
L0CFD: DW 0
DB 0
L0D00: DB 0
DW 0
L0D03: DB 0
DB 0
L0D05: DB 0
L0D06: DB 0
L0D07: DB 0
L0D08:
DPB:
DefW IR0D1C ;next or zero
DefB 63H ;?hw bit?
DefW 40 ; 128 BYTE RECORDS PER TRACK
DefB 4 ; Block shift
DefB 15 ; Block mask
DefB 0 ; Extent mask
DefW 384 ; Maximum block number
DefW 127 ; Directory max
DefB 192 ; Alloc0
DefB 0 ; Alloc1
DefW 128 ; Check size
DefW 6 ; Reserved track
DefB 2,3 ; PHYSICAL SECTOR SIZE & MASK
;sectorsize=512
IR0D1C:
DefW 0 ;next or zero
DefB 73H ;?hw bit?
DefW 40 ; 128 BYTE RECORDS PER TRACK
DefB 4 ; Block shift
DefB 15 ; Block mask
DefB 0 ; Extent mask
DefW 399 ; Maximum block number
DefW 255 ; Directory max
DefB 240 ; Alloc0
DefB 0 ; Alloc1
DefW 128 ; Check size
DefW 0 ; Reserved track
DefB 3,7 ; PHYSICAL SECTOR SIZE & MASK
;sectorsize=1024
L0D30:
@dtbl:
DefW IR0D5F ;disk&A
DW 0,0,0,0,0,0,0,0 ;disk&B ...
DW 0,0,0,0,0,0,0 ;... disk&P
L0D4F equ $-1
;***?
DB 0 ;to sync
DW 0
DW 0
DW IR0D89
DW IR0FE2
DW IR105A
DW IR0F9C
DW 31H ;(49) DW or 2xDB?
;***
IR0D5F:
disk&A:
DW 0
DW 0
DW 0
DW 0
DW 0
DW 0FF00H
DW IR0D78
DW 0
;0D6F
DW 2000H
DW IR0F86
DW IR0F86
DW 0FFFFH
Db 0
;***
;one more disk? a big one!
IR0D78:
DW 72
DB 04
DB 15
DB 0
DW 399
DW 255
DB 240
DB 0
DW 32768 ;8000H
DW 0
DB 3,7
;***
IR0D89:
RET
L0D8A:
PUSH AF
LD A,87H
OUT (60H),A
LD A,(L0CE3)
OUT (64H),A
OUT (66H),A
POP AF
L0D97:
OUT (68H),A
PUSH BC
LD BC,3072 ;0C00H
LD A,20 ;14H
L0D9F:
DEC A
JR NZ,L0D9F
DEC BC
LD A,B
OR C
LD A,80H
JR Z,L0DB4
IN A,(68H)
BIT 0,A
LD A,80H
JR NZ,L0D9F
IN A,(68H)
AND A
L0DB4:
POP BC
PUSH AF
LD A,83H
OUT (60H),A
POP AF
RET
L0DBC:
EX DE,HL
LDIR
EX DE,HL
L0DC0:
RET
;***no ref***
DB 0FFH,0FFH
DB 0,0,0,0
DB 0,0,0,0
DefB 0
;***
L0DCC: DB 0
DB 0
L0DCE: DB 0
;***no ref ***
DB 0,0,0,0,0
;***
L0DD4:
NOP
NOP
XOR A
RET
L0DD8:
DB 0DH,0AH,'SYSTEC Loader 1.42'
DB 0DH,0AH,'$'
L0DEF:
DB 0DH,0AH,'CP/M Plus System-Loader '
DB '(c) SYSTEC GmbH Muenster-Roxel'
DB 0DH,0AH,'$'
L0E2A:
LD DE,L0DEF
LD C,9
CALL L023D ;bdos
LD HL,L0DD8
LD DE,L01D7
LD BC,22
LDIR
XOR A
LD (L0CE3),A
LD (L0CE4),A
RET
L0E45:
IN A,(0C6H)
BIT 2,A
JR Z,L0E45
LD A,C
OUT (0C4H),A
RET
;set up console
L0E4F:
LD HL,L0E71
LD C,0C6H ; port
LD B,(HL) ; count as first byte!
INC HL
OTIR
LD C,0C8H ; port
LD B,(HL) ; count as first byte!
INC HL
OTIR
RET
L0E5F:
CALL L0E69
JR Z,L0E5F
IN A,(0C4H)
RES 7,A
RET
L0E69:
IN A,(0C6H)
RRA
SBC A,A
RET
L0E6E:
OR 0FFH
RET
;setup for console
;9 byte for port 0C6H (DART)
L0E71:
DB 9
DefB 18H,04H,4CH,03H,0E1H,05H
DB 0EAH,01H,0E0H
;3 byte for port 0C8H (baud for CTC?)
DefB 3
DefB 03H,45H,10H
;
L0E7F:
EX (SP),HL
LD A,(HL)
INC HL
EX (SP),HL
LD (L0CD7),A
PUSH IY
PUSH IX
PUSH BC
PUSH DE
PUSH HL
CALL L0EA4
PUSH AF
LD A,C
LD (L0E98),A
CALL L0CB8
L0E98: DefB '.',0DH,0AH+80H
POP AF
POP HL
POP DE
POP BC
POP IX
POP IY
RET
;print all kind of errors
L0EA4:
LD A,(L0CD7)
OR A
JR Z,L0EB9
DEC A
JR Z,L0EC3
DEC A
JR Z,L0EC3
DEC A
JR Z,L0ECF
LD A,(L0F1E)
JP L0F5E
L0EB9:
CALL L0CB8
DefB 0DH,'Les','e'+80H
JR L0ECF
L0EC3:
CALL L0CB8
DefB 0DH,'Berei','t'+80H
JR L0ECF ;to many errors to fast is newer good!
L0ECF: LD A,(L0CDA)
ADD A,'A'
LD (L0EEC),A
CALL L0CB8
DB '-Fehler, Laufwerk '
L0EEC: DB 'X',':'+80H
LD A,(L0CD7)
CP 2
JR Z,L0F19
CALL L0CB8
DB ', Spur',' '+80H
LD HL,(L0CDC)
CALL L0BFA
CALL L0CB8
DB ', Sektor',' '+80H
LD HL,(L0CDE)
PUSH HL
CALL L0BFA
POP HL
L0F19:
CALL L0CB8
DB ' ('
L0F1E: DB 'Neuversuch','/'+80H
LD A,(L0CD7)
CP 2
JR Z,L0F3E
CALL L0CB8
L0F33: DB 'Ignorieren','/'+80H
L0F3E:
CALL L0CB8
L0F41: DB 'Abbrechen)',':'+80H
L0F4C:
CALL L0AB6
OR A
JR Z,L0F57
CALL L0AB9
JR L0F4C
L0F57:
CALL L0CB8
DefB 07H+80H
CALL L0AB9
L0F5E:
CP 'a'
JR C,L0F64
SUB ' '
L0F64:
LD C,A
LD A,(L0F1E)
SUB C
RET Z
LD A,(L0F41)
DEC A
SUB C
CP 0FFH
SCF
RET Z
LD A,(L0CD7)
CP 2
JR Z,L0F82
LD A,(L0F33)
INC A
SUB C
CP 1
RET Z
L0F82:
LD C,4Eh
XOR A
RET
IR0F86:
RST 38H
;***no ref***
N0F87: DB 0,0,0,0,0,0,0,0
DB 0
DefB 65H,20H
;some hardcoded numbers (don't to forget!)
L0F92:
DefB 0,1,2,3,4,5,6,7,8,9
;
;irq
IR0F9C:
DI
LD A,3
OUT (6EH),A
OUT (6FH),A
LD A,20h
OUT (6CH),A
LD A,0CFH
OUT (6EH),A
LD A,0
OUT (6EH),A
LD A,30h
OUT (6DH),A
LD A,0CFH
OUT (6FH),A
LD A,4Bh
OUT (6FH),A
LD HL,L0FD2
LD B,16 ;length
LD C,60H
OTIR
LD A,32h
OUT (6DH),A
L0FC8:
INC A
JR NZ,L0FC8
LD A,30h
OUT (6DH),A
XOR A
EI
RET
;16 byte for DMA, (Reset)
L0FD2:
DB 83H,0C3H,0C3H,0C3H,0C3H,0C3H,0C3H
DB 0AFH,01H,14H,28H,80H,85H,6BH
DB 8AH,0CFH
;
IR0FE2:
CALL L1155
RET C
LD (L0D03),A
CALL L1244
RES 7,(IX+0FFH)
CALL L1177
RET C
L0FF4:
LD B,4
L0FF6:
CALL L127F
LD A,(L0D05)
ADD A,A
ADD A,A
ADD A,A
OR 82H
CALL L0D8A
AND 9CH
JR Z,L101E
BIT 4,A
LD A,0FFH
RET NZ
DJNZ L0FF6
CALL L0E7F
NOP
JR C,L101B
AND A
JR Z,L0FF4
DEC A
JR Z,L101E
L101B:
LD A,1
RET
L101E:
CALL L1026
RET C
LD B,4
JR L0FF6
L1026:
LD A,(L0D03)
DEC A
LD (L0D03),A
SCF
RET Z
LD HL,(L0CE0)
LD E,(IX+0F4H)
LD D,(IX+0F5H)
ADD HL,DE
LD (L0CE0),HL
LD A,(L0CDE)
INC A
LD (L0CDE),A
CP (IX+0F3H)
JP C,L11B6
LD A,(L0CDC)
INC A
LD (L0CDC),A
XOR A
LD (L0CDE),A
CALL L119D
RET C
XOR A
RET
;
IR105A:
LD A,(IX+0FEH)
OUT (6CH),A
RLCA
RLCA
AND 42h
XOR 2
LD (IX+0FFH),A
CALL L10F7
RET C
CALL L129E
LD A,0CH
CALL L0D97
CALL L10F7
RET C
CALL L129E
JR NC,L1097
LD A,(IX+0FFH)
XOR 2
LD (IX+0FFH),A
LD A,(IX+0FEH)
XOR 80H
RES 6,A
LD (IX+0FEH),A
CALL L10F7
RET C
CALL L129E
RET C
L1097:
IN A,(6DH)
AND 1
LD L,A
LD A,(L0D00)
ADD A,A
ADD A,A
ADD A,A
ADD A,A
OR L
OR (IX+0FFH)
LD (IX+0FFH),A
LD C,A
LD DE,L0F92
CP 63H
JR Z,L10B5
LD DE,0
L10B5:
LD (IX+00H),E
LD (IX+01H),D
LD DE,L0D08
L10BE:
EX DE,HL
LD A,H
OR L
LD A,1
RET Z
LD E,(HL)
INC HL
LD D,(HL)
INC HL
LD A,(HL)
INC HL
CP C
JR NZ,L10BE
LD (IX+0CH),L
LD (IX+0DH),H
LD C,(HL)
INC HL
LD B,(HL)
DEC HL
EX DE,HL
LD HL,15
ADD HL,DE
LD A,(HL)
LD HL,128
AND A
JR Z,L10EB
L10E3:
ADD HL,HL
SRL B
RR C
DEC A
JR NZ,L10E3
L10EB:
LD (IX+0F4H),L
LD (IX+0F5H),H
LD (IX+0F3H),C
EX DE,HL
XOR A
RET
L10F7:
LD A,(IX+0FEH)
OUT (6CH),A
AND A
BIT 5,A
JR Z,L1124
LD A,' '
OUT (6CH),A
LD A,(IX+0FEH)
OUT (6CH),A
IN A,(68H)
PUSH BC
LD BC,2048
L1110:
DEC BC
LD A,B
OR C
SCF
JR Z,L1120
XOR A
L1117:
DEC A
JR NZ,L1117
IN A,(68H)
BIT 7,A
JR NZ,L1110
L1120:
POP BC
RET NC
JR L1138
L1124:
LD A,(IX+0FEH)
AND A
OUT (6CH),A
LD B,80H
L112C:
IN A,(68H)
BIT 7,A
JP Z,L1148
CALL L1148
DJNZ L112C
L1138:
CALL L0E7F
LD (BC),A
JR C,L1145
AND A
JR Z,L10F7
SCF
LD A,0FFH
RET
L1145:
LD A,1
RET
L1148:
PUSH BC
LD B,20 ;14H
L114B:
PUSH BC
LD B,0
L114E:
DJNZ L114E
POP BC
DJNZ L114B
POP BC
RET
L1155:
EX DE,HL
LD A,(HL)
INC HL
OR (HL)
DEC HL
EX DE,HL
LD HL,L0CE2
JR Z,L1162
LD (HL),0
L1162:
LD A,(HL)
AND A
LD A,1
RET Z
LD A,(HL)
DEC (HL)
BIT 7,(HL)
SET 7,(HL)
RET Z
XOR A
RES 7,(HL)
CP (HL)
SCF
RET Z
SET 7,(HL)
RET
L1177:
IN A,(6CH)
XOR (IX+0FEH)
AND 0FH
LD (L0D07),A
CALL L10F7
RET C
IN A,(6DH)
XOR (IX+0FFH)
AND 1
JR NZ,L11BE
LD A,(L0D07)
AND A
CALL NZ,L129E
RET C
CALL L1272
CALL NZ,L129E
RET C
L119D:
XOR A
LD (L0D05),A
LD HL,L0D06
LD A,(L0CDC)
LD (HL),A
CALL L11C2
RET C
LD A,(L0D05)
RRCA
RRCA
OR (IX+0FEH)
OUT (6CH),A
L11B6:
LD A,(L0CDE)
INC A
OUT (6AH),A
AND A
RET
L11BE:
SCF
LD A,0FFH
RET
L11C2:
CALL L122F
LD B,5
L11C7:
LD HL,L0D06
LD A,(IX+0F2H)
OUT (69H),A
CP (HL)
RET Z
LD A,(HL)
OUT (6BH),A
LD A,(IX+0FEH)
RES 4,A
OUT (6CH),A
LD A,18H
OR (IX+0F1H)
CALL L0D97
AND 80H
LD A,(IX+0FEH)
OUT (6CH),A
LD A,1
SCF
RET NZ
L11EE:
LD A,79H ;xfer B->A
LD HL,L0CFD
CALL L128C
LD A,0C4H
CALL L0D8A
AND 9CH
JR Z,L1206
DJNZ L11EE
SCF
LD A,0FFH
JR L1211
L1206:
LD A,(L0CFD)
LD (IX+0F2H),A
DJNZ L11C7
LD A,1
SCF
L1211:
PUSH AF
CALL L0CB8
DB 7,'SeekErro','r'+80H
LD A,0CH
OR (IX+0F1H)
CALL L0D97
XOR A
OUT (69H),A
LD (IX+0F2H),A
POP AF
RET
L122F:
BIT 4,(IX+0FEH)
JR Z,L1237
JR L123C
L1237:
IN A,(6DH)
AND 1
RET NZ
L123C:
XOR A
SRL (HL)
RLA
LD (L0D05),A
RET
L1244:
EX (SP),IX
LD (L2665),SP
LD SP,L2665
CALL L126C
CP 0FFH
JR NZ,L125A
LD (IX+0BH),A
LD (L0DCE),A
L125A:
AND A
JR Z,L1265
LD IX,L0CE2
LD (IX+00H),0
L1265:
LD SP,(L2665)
POP IX
RET
L126C:
PUSH IX
PUSH DE
POP IX
RET
L1272:
LD A,0D0H
OUT (68H),A
NOP
NOP
OUT (68H),A
IN A,(68H)
AND 20H
RET
L127F:
LD HL,(L0CE0)
BIT 7,(IX+0FFH)
LD A,79H ;xfer B->A
JR Z,L128C
LD A,7DH ;xfer A->B
L128C:
LD (L0CF7),A
LD (L0CF8),HL
LD HL,L0CEF
PUSH BC
LD B,14 ;length
LD C,60H ; port#
OTIR
POP BC
RET
L129E:
LD A,79H ;xfer B->A
LD HL,L0CFD
CALL L128C
CALL L1272
LD A,0C0H
JR NZ,L12AF
OR 4
L12AF:
CALL L0D8A
AND 9CH
SCF
LD A,0FFH
RET NZ
LD A,(L0CFD)
OUT (69H),A
LD (IX+0F2H),A
IN A,(6DH)
AND 1
LD L,A
LD A,(L0D00)
ADD A,A
ADD A,A
ADD A,A
ADD A,A
OR L
XOR (IX+0FFH)
AND 7DH
RET Z
LD A,0FFH
RET
END
---
Hello Ole,
On Fri, 29 Aug 2008 18:33:19 +0200, Ole Christensen wrote:
[color=blue]
>...i ran a dis on Your EPROM but:
>i'm not happy with data from 0D4Fh to 0D88h:
>it is for floppy and it is data,
>but i just can't get it to sync 100%
>it could be for the negativ offset used?
>
>When You later select labels for this then
>go first for the DRI doc and when You ran
>out of ideas look at source from others,
>good exemple can be found at:
> [url]www.e-tech.net/~pbetti/archive/rlee[/url]
>
> /J/JONOS/
> /B/BAMDUA/DV10
> /L/LOOSECPM/155/
> /M/MORROW/
>
>just to name a couple in that "goldmine".[/color]
Many thanks for your Info.
Rolf
Ole Christensen wrote:
(snip)
[color=blue]
> ...i ran a dis on Your EPROM but:
> i'm not happy with data from 0D4Fh to 0D88h:
> it is for floppy and it is data,
> but i just can't get it to sync 100%
> it could be for the negativ offset used?[/color]
(snip)
Note that it searches the table from the end backwards,
so the address is that of the last byte of a two byte
word in the table. That is where the -1 comes from.
I suppose that confuses the disassembler, though.
[color=blue]
> L0B13:
> LD (L0CD8),SP
> LD SP,L00B0
> CALL L0E4F
> CALL L0E2A
> LD HL,L0D4F ;end of @dtbl
> LD B,16 ;all 16
> LD A,0FFH
> LD (L0DCC),A
> L0B2A:
> LD D,(HL)
> DEC HL
> LD E,(HL)
> DEC HL ;point to next drive
> PUSH HL
> PUSH BC
> LD A,E
> OR D
> CALL NZ,L0BCD
> POP BC
> POP HL
> DJNZ L0B2A
> L0B39:
> LD HL,L0D4F ;end of @dtbl
> LD B,16 ;all 16
> L0B3E:
> LD D,(HL)
> DEC HL
> LD E,(HL)
> DEC HL
> PUSH HL
> PUSH BC
> LD A,E
> OR D
> JR Z,L0B7F[/color]
(snip)
[color=blue]
> L0D30:
> @dtbl:
> DefW IR0D5F ;disk&A
> DW 0,0,0,0,0,0,0,0 ;disk&B ...
> DW 0,0,0,0,0,0,0 ;... disk&P
> L0D4F equ $-1
>
> ;***?
> DB 0 ;to sync
> DW 0
> DW 0
> DW IR0D89
> DW IR0FE2
> DW IR105A
> DW IR0F9C
> DW 31H ;(49) DW or 2xDB?
> ;***
> IR0D5F:
> disk&A:
> DW 0
> DW 0
> DW 0
> DW 0
> DW 0
> DW 0FF00H
> DW IR0D78
> DW 0
> ;0D6F
> DW 2000H
> DW IR0F86
> DW IR0F86
> DW 0FFFFH
> Db 0
> ;***
>
> ;one more disk? a big one!
> IR0D78:
> DW 72
> DB 04
> DB 15
> DB 0
> DW 399
> DW 255
> DB 240
> DB 0
> DW 32768 ;8000H
> DW 0
> DB 3,7[/color]
-- glen
glen herrmannsfeldt skrev:[color=blue]
> Ole Christensen wrote:
> (snip)
>[color=green]
>> ...i ran a dis on Your EPROM but:
>> i'm not happy with data from 0D4Fh to 0D88h:
>> it is for floppy and it is data,
>> but i just can't get it to sync 100%
>> it could be for the negativ offset used?[/color]
> (snip)
>
> Note that it searches the table from the end backwards,
> so the address is that of the last byte of a two byte
> word in the table. That is where the -1 comes from.
>[/color]
Yes,... thats correct! it should have been:
"i'm not happy with data from 0D50h to 0D88h"
it was that "+1"!,.. Thanks for pointing that out.
[color=blue]
> I suppose that confuses the disassembler, though.[/color]
sure, it was, but change 0d50h to DefB fix that,
later i found this in Rolf's source:
T00A8:
pop af ;
ld ix,0d5fh ;
ld (ix-0fh),a ;
(remember it is a 3-part story),
and again it snaps the end and index negative,
(but at least 0d50h IS a byte!)
<ole>
[color=blue]
> (snip)
>[color=green]
>> L0D30:
>> @dtbl:
>> DefW IR0D5F ;disk&A
>> DW 0,0,0,0,0,0,0,0 ;disk&B ...
>> DW 0,0,0,0,0,0,0 ;... disk&P
>> L0D4F equ $-1
>>
>> ;***?
>> DB 0 ;to sync
>> DW 0
>> DW 0
>> DW IR0D89
>> DW IR0FE2
>> DW IR105A
>> DW IR0F9C
>> DW 31H ;(49) DW or 2xDB?
>> ;***
>> IR0D5F:
>> disk&A:
>> DW 0
>> DW 0
>> DW 0
>> DW 0
>> DW 0
>> DW 0FF00H
>> DW IR0D78
>> DW 0
>> ;0D6F
>> DW 2000H
>> DW IR0F86
>> DW IR0F86
>> DW 0FFFFH
>> Db 0
>> ;***
>>
>> ;one more disk? a big one!
>> IR0D78:
>> DW 72
>> DB 04
>> DB 15
>> DB 0
>> DW 399
>> DW 255
>> DB 240
>> DB 0
>> DW 32768 ;8000H
>> DW 0
>> DB 3,7[/color]
>
> -- glen
>[/color]