Mercurial > hg > Members > kono > nitros9-code
annotate level2/modules/ramd_coco3fpga.asm @ 3150:37737e5ec640
Add coco3fpga RAM disk and RTC driver
Added clock2_coco3fpga.as to level1/modules.
Added ramd_coco3fpga.asm & r0_ramd_coco3fpga.asm to level2/modules.
Build them on level2/coco3.
Added definitions to "coco3/modules/makefile" to build
'ramd_coco3fpga.dr", "r0_ramd_cocofga.dd" & "clock2_coco3fpga".
author | Bill Pierce <merlinious999@gmail.com> |
---|---|
date | Mon, 06 Feb 2017 22:25:15 +0100 |
parents | |
children |
rev | line source |
---|---|
3150
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
1 ******************************************************************** |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
2 * RAMD SDRAM Disk Driver for CoCo3FPGA |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
3 * |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
4 * $Id: ramd.asm,v 1.0 2016/12/09 14:52:42 gbecker Exp $ |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
5 * |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
6 * Ed. Comments Who YY/MM/DD |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
7 * ------------------------------------------------------------------ |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
8 * 1 Initial driver Gary Becker 16/12/09 |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
9 * |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
10 * 2 Updated to conform to NitrOS9 Repo Bill Pierce 17/02/04 |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
11 * |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
12 |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
13 * $FF84: SDRAM Control Register (Write) |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
14 RAMDCON equ $00 |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
15 * Bit Signal |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
16 * 0 R/W |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
17 * |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
18 * $FF84: Disk Flag (Read) |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
19 RAMDSTA equ $00 |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
20 * Bit Signal |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
21 * 7 Operation Finished |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
22 * 0 R/W |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
23 * $FF85-$FF86: DATA (Read / Write) |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
24 RAMDDAT equ $01 |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
25 * |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
26 * $FF87-88: Block Address |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
27 RAMDADD equ $03 |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
28 * |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
29 N.Drives equ 1 number of drives to support |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
30 * |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
31 * Command equates |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
32 * |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
33 * |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
34 nam RAMD |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
35 ttl os9 device driver |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
36 |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
37 use os9.d |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
38 use rbf.d |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
39 use coco.d |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
40 |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
41 tylg set Drivr+Objct |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
42 atrv set ReEnt+rev |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
43 rev set $01 |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
44 |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
45 org 0 |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
46 mod eom,name,tylg,atrv,start,size |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
47 fcb $ff |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
48 |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
49 u0000 rmb DRVBEG+(DRVMEM*N.Drives) |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
50 |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
51 size equ . |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
52 |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
53 fcb $FF This byte is the driver permissions |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
54 name fcs /RAMD/ |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
55 fcb 1 edition #1 |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
56 |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
57 start bra INIT 3 bytes per entry to keep RBF happy |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
58 nop |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
59 bra READ |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
60 nop |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
61 bra WRITE |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
62 nop |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
63 bra GETSTA |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
64 nop |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
65 bra SETSTA |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
66 nop |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
67 bra TERM |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
68 nop |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
69 |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
70 * Read |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
71 * |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
72 * Entry: |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
73 * B = MSB of LSN |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
74 * X = LSB of LSN |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
75 * Y = address of path descriptor |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
76 * U = address of device memory area |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
77 * |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
78 * Exit: |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
79 * CC = carry set on error |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
80 * B = error code |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
81 * |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
82 READ lda #$01 1=READ the sector |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
83 tstb Make sure 3rd byte of LSN is 0 |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
84 bne ERROR |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
85 pshs x,y Save these registers for later |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
86 tst ,s Check high bit of X (Low 16 bits of LSN) |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
87 bmi ERROR2 Should equal 0 |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
88 bsr GetSect Go read the sector |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
89 puls x,y |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
90 tfr x,d |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
91 tstb Test one byte of saved X |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
92 bne TERM |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
93 tsta Test other byte of saved X |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
94 bne TERM |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
95 * LSN0, standard OS-9 format |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
96 ldy PD.BUF,y address of buffer |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
97 leau DRVBEG,u point to the beginning of the drive tables |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
98 ldb #DD.SIZ copy bytes over |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
99 copy.0 lda ,y+ grab from LSN0 |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
100 sta ,u+ save into device static storage |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
101 decb Finished when B=0 |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
102 bne copy.0 |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
103 bra TERM Return |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
104 |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
105 * |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
106 * Entry: |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
107 * B = MSB of LSN |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
108 * X = LSB of LSN |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
109 * Y = address of path descriptor |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
110 * U = address of device memory area |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
111 * |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
112 * Exit: |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
113 * CC = carry set on error |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
114 * B = error code |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
115 * |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
116 GetSect |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
117 * orcc #IntMasks Kill interrupts |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
118 pshs x save 2 byte LSN |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
119 ldx V.PORT,u get address of hardware |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
120 sta RAMDCON,x Setup for a READ |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
121 puls d Get 2 byte LSN |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
122 std RAMDADD,x Put it in the address |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
123 ldy PD.BUF,y address of buffer |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
124 lda #$80 128 2 byte transfers |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
125 pshs a On stack |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
126 lda RAMDDAT+1,x Start transfer |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
127 LP0 tst RAMDSTA,x Is transfer completed? |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
128 bpl LP0 |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
129 ldd RAMDDAT,x Yes, read 2 bytes from RAM |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
130 std ,y++ Store them in buffer |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
131 dec ,s Are we finished? |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
132 bne LP0 No |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
133 puls b clear b |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
134 * andcc #^(IntMasks) Renable Interrupts |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
135 rts |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
136 |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
137 ERROR2 puls x,y |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
138 ERROR ldb E$SeekRg Only error is Seek out of Range |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
139 comb Set carry bit |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
140 rts |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
141 |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
142 * Init |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
143 * |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
144 * Entry: |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
145 * Y = address of device descriptor |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
146 * U = address of device memory area |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
147 * |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
148 * Exit: |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
149 * CC = carry set on error |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
150 * B = error code |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
151 * |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
152 INIT |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
153 leax DRVBEG,u point to the beginning of the drive tables |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
154 ldd #$8000 Number of total sectors |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
155 stb DD.TOT,x $00 |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
156 std DD.TOT+1,x $8000 |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
157 ldd #$0100 A=$01 B=$00 |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
158 stb V.NDRV,u $01 |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
159 * lda #$FF Probably not needed |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
160 * sta V.TRAK,u |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
161 |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
162 TERM |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
163 * no SetSta calls - return, no error, ignore |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
164 SETSTA |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
165 * no GetSta calls - return, no error, ignore |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
166 GETSTA |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
167 andcc #^Carry clear carry |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
168 rts |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
169 |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
170 * |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
171 * Entry: |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
172 * B = MSB of LSN |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
173 * X = LSB of LSN |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
174 * Y = address of path descriptor |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
175 * U = address of device memory area |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
176 * |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
177 * Exit: |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
178 * CC = carry set on error |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
179 * B = error code |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
180 * |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
181 WRITE clra 0 =WRITE to disk |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
182 tstb Make sure 3rd byte of LSN is 0 |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
183 bne ERROR |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
184 pshs x,y Save these registers for later |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
185 tst ,s Check high bit of X (Low 16 bits of LSN) |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
186 bmi ERROR2 Should equal 0 |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
187 * Get Sector comes here with: |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
188 * Entry: A = read/write command code (0/1) |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
189 * B = MSB of the disk's LSN |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
190 * X = LSW of the disk's LSN |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
191 * Y = path dsc. ptr |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
192 * U = Device static storage ptr |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
193 * Exit: CC = carry set on error |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
194 * A = error status from command register |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
195 PutSect |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
196 * orcc #IntMasks Kill interrupts |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
197 ldx V.PORT,u get address of hardware |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
198 sta RAMDCON,x Setup for a READ |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
199 ldy PD.BUF,y address of buffer |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
200 puls d Get 2 byte LSN |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
201 std RAMDADD,x Put it in the address |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
202 lda #$80 128 2 byte transfers |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
203 pshs a On stack |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
204 LP2 ldd ,y++ get 2 bytes |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
205 std RAMDDAT,x write them to th RAM |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
206 LP1 tst RAMDSTA,x is the transfer completed? |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
207 bpl LP1 |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
208 dec ,s |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
209 bne LP2 |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
210 puls b clear b |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
211 puls y |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
212 * andcc #^(IntMasks) Renable Interrupts |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
213 bra TERM |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
214 |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
215 emod |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
216 |
37737e5ec640
Add coco3fpga RAM disk and RTC driver
Bill Pierce <merlinious999@gmail.com>
parents:
diff
changeset
|
217 eom equ * |