annotate level2/modules/ramd_coco3fpga.asm @ 3295:6b7a7b233925 default tip

makefile: Allow PORTS with level1/2 mix https://sourceforge.net/p/nitros9/feature-requests/10/
author Tormod Volden <debian.tormod@gmail.com>
date Tue, 19 Apr 2022 18:12:17 +0200
parents 37737e5ec640
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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 *