Mercurial > hg > Members > kono > nitros9-code
annotate level1/modules/mc09sdc.asm @ 3246:be3446f758ca
Updated dwread.asm and dwwrite.asm so that the 6551 routines could have specially defined
flags so that some of the addresses could be overridden by the make files if needed.
author | David Ladd <drencor-xeen@users.sourceforge.net> |
---|---|
date | Sun, 11 Mar 2018 01:30:30 -0600 (2018-03-11) |
parents | 35fb39e4b218 |
children |
rev | line source |
---|---|
3116
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
1 ******************************************************************** |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
2 * mc09sdc - Multicomp09 SDCC Device Driver |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
3 * |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
4 * $Id$ |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
5 * |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
6 * Edt/Rev YYYY/MM/DD Modified by |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
7 * Comment |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
8 * ------------------------------------------------------------------ |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
9 * 2015/08/31 NAC |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
10 * Created from 1773 driver to support "virtual 720k disk" on SD card. |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
11 * |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
12 |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
13 nam mc09sdc |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
14 ttl Multicomp09 SDCC Device Driver |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
15 |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
16 use defsfile |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
17 |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
18 tylg set Drivr+Objct |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
19 atrv set ReEnt+rev |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
20 rev set $01 |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
21 edition set 1 |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
22 |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
23 * Configuration Settings |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
24 N.Drives equ 4 number of drives to support |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
25 |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
26 mod eom,name,tylg,atrv,start,size |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
27 |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
28 u0000 rmb DRVBEG+(DRVMEM*N.Drives) |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
29 |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
30 lsn0cp rmb 1 Loaded by LdSDAdrs - bytes to copy |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
31 size equ . |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
32 |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
33 fcb DIR.+SHARE.+PEXEC.+PWRIT.+PREAD.+EXEC.+UPDAT. |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
34 |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
35 name fcs /mc09sd/ |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
36 fcb edition |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
37 |
3122
35fb39e4b218
mc09: Store SD card drive offset in its own 2 bytes
Neal Crook <foofoobedoo@gmail.com>
parents:
3116
diff
changeset
|
38 |
3116
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
39 * [NAC HACK 2015Sep04] probably ought to have timeouts on each of the |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
40 * wait loops. |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
41 |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
42 * [NAC HACK 2015Sep04] based on tech ref and rb1773 we're supposed to |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
43 * get the base address from the device data structure and then access all |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
44 * the hw registers relative to that base address. rb1773 does it once and |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
45 * for all other access it uses a define. Tsk. |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
46 * Also, the device data structure doesn't seem to match what's in the |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
47 * tech ref. |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
48 |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
49 ******************************************************************* |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
50 * Init |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
51 * |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
52 * Entry: |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
53 * Y = address of device descriptor |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
54 * U = address of device memory area |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
55 * |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
56 * Exit: |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
57 * CC = carry set on error |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
58 * B = error code |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
59 * |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
60 * Multicomp09 SDCC does not require any initialisation |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
61 * [NAC HACK 2015Sep02] futures: new card detection and re-init when |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
62 * the hardware supports it. |
3122
35fb39e4b218
mc09: Store SD card drive offset in its own 2 bytes
Neal Crook <foofoobedoo@gmail.com>
parents:
3116
diff
changeset
|
63 * BUT the tech ref xplains the other stuff we need to do. |
3116
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
64 Init equ * |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
65 |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
66 ldd #$FF*256+N.Drives 'invalid' value & # of drives |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
67 leax DRVBEG,u point to start of drive tables |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
68 Init1 sta ,x DD.TOT MSB to bogus value |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
69 sta <V.TRAK,x init current track # to bogus value |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
70 leax <DRVMEM,x point to next drive table |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
71 decb done all drives yet? |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
72 bne Init1 no, init them all |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
73 |
3122
35fb39e4b218
mc09: Store SD card drive offset in its own 2 bytes
Neal Crook <foofoobedoo@gmail.com>
parents:
3116
diff
changeset
|
74 * unlike rb1773 we do not need a sector buffer so we're done. |
3116
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
75 |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
76 clrb clear carry |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
77 rts |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
78 |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
79 |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
80 ******************************************************************* |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
81 * GetStat |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
82 * |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
83 * Entry: |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
84 * A = function code |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
85 * Y = address of path descriptor |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
86 * U = address of device memory area |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
87 * |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
88 * Exit: |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
89 * CC = carry set on error |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
90 * B = error code |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
91 * |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
92 * There are no get status calls. |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
93 * [NAC HACK 2015Sep02] futures: use it to retrieve SDcard offset of each |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
94 * drive. |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
95 GetStat clrb no GetStt calls - return, no error, ignore |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
96 Return rts |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
97 |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
98 |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
99 ******************************************************************* |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
100 * SetStat |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
101 * |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
102 * Entry: |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
103 * A = function code |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
104 * Y = address of path descriptor |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
105 * U = address of device memory area |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
106 * |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
107 * Exit: |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
108 * CC = carry set on error |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
109 * B = error code |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
110 * |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
111 * There are no set status calls. |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
112 * [NAC HACK 2015Sep02] futures: use it to set SDcard offset of each |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
113 * drive, maybe mark drives as not available. |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
114 SetStat clrb clear carry |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
115 rts |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
116 |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
117 |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
118 ******************************************************************* |
3122
35fb39e4b218
mc09: Store SD card drive offset in its own 2 bytes
Neal Crook <foofoobedoo@gmail.com>
parents:
3116
diff
changeset
|
119 * Jump table for the public routines of this module. 3 bytes per |
35fb39e4b218
mc09: Store SD card drive offset in its own 2 bytes
Neal Crook <foofoobedoo@gmail.com>
parents:
3116
diff
changeset
|
120 * entry, so any bra must be padded with a NOP. Save a few bytes by |
35fb39e4b218
mc09: Store SD card drive offset in its own 2 bytes
Neal Crook <foofoobedoo@gmail.com>
parents:
3116
diff
changeset
|
121 * falling through to the last entry (Term). |
3116
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
122 * |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
123 start bra Init |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
124 nop |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
125 bra Read |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
126 nop |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
127 bra Write |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
128 nop |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
129 bra GetStat |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
130 nop |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
131 bra SetStat |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
132 nop |
3122
35fb39e4b218
mc09: Store SD card drive offset in its own 2 bytes
Neal Crook <foofoobedoo@gmail.com>
parents:
3116
diff
changeset
|
133 |
35fb39e4b218
mc09: Store SD card drive offset in its own 2 bytes
Neal Crook <foofoobedoo@gmail.com>
parents:
3116
diff
changeset
|
134 * FALL-THROUGH to the Term subroutine |
35fb39e4b218
mc09: Store SD card drive offset in its own 2 bytes
Neal Crook <foofoobedoo@gmail.com>
parents:
3116
diff
changeset
|
135 |
35fb39e4b218
mc09: Store SD card drive offset in its own 2 bytes
Neal Crook <foofoobedoo@gmail.com>
parents:
3116
diff
changeset
|
136 ******************************************************************* |
35fb39e4b218
mc09: Store SD card drive offset in its own 2 bytes
Neal Crook <foofoobedoo@gmail.com>
parents:
3116
diff
changeset
|
137 * Term |
35fb39e4b218
mc09: Store SD card drive offset in its own 2 bytes
Neal Crook <foofoobedoo@gmail.com>
parents:
3116
diff
changeset
|
138 * |
35fb39e4b218
mc09: Store SD card drive offset in its own 2 bytes
Neal Crook <foofoobedoo@gmail.com>
parents:
3116
diff
changeset
|
139 * Entry: |
35fb39e4b218
mc09: Store SD card drive offset in its own 2 bytes
Neal Crook <foofoobedoo@gmail.com>
parents:
3116
diff
changeset
|
140 * U = address of device memory area |
35fb39e4b218
mc09: Store SD card drive offset in its own 2 bytes
Neal Crook <foofoobedoo@gmail.com>
parents:
3116
diff
changeset
|
141 * |
35fb39e4b218
mc09: Store SD card drive offset in its own 2 bytes
Neal Crook <foofoobedoo@gmail.com>
parents:
3116
diff
changeset
|
142 * Exit: |
35fb39e4b218
mc09: Store SD card drive offset in its own 2 bytes
Neal Crook <foofoobedoo@gmail.com>
parents:
3116
diff
changeset
|
143 * CC = carry set on error |
35fb39e4b218
mc09: Store SD card drive offset in its own 2 bytes
Neal Crook <foofoobedoo@gmail.com>
parents:
3116
diff
changeset
|
144 * B = error code |
35fb39e4b218
mc09: Store SD card drive offset in its own 2 bytes
Neal Crook <foofoobedoo@gmail.com>
parents:
3116
diff
changeset
|
145 * |
35fb39e4b218
mc09: Store SD card drive offset in its own 2 bytes
Neal Crook <foofoobedoo@gmail.com>
parents:
3116
diff
changeset
|
146 * There is no memory allocated so nothing to do here, either. I |
35fb39e4b218
mc09: Store SD card drive offset in its own 2 bytes
Neal Crook <foofoobedoo@gmail.com>
parents:
3116
diff
changeset
|
147 * almost feel bad.. |
35fb39e4b218
mc09: Store SD card drive offset in its own 2 bytes
Neal Crook <foofoobedoo@gmail.com>
parents:
3116
diff
changeset
|
148 * |
35fb39e4b218
mc09: Store SD card drive offset in its own 2 bytes
Neal Crook <foofoobedoo@gmail.com>
parents:
3116
diff
changeset
|
149 Term clrb |
35fb39e4b218
mc09: Store SD card drive offset in its own 2 bytes
Neal Crook <foofoobedoo@gmail.com>
parents:
3116
diff
changeset
|
150 rts |
35fb39e4b218
mc09: Store SD card drive offset in its own 2 bytes
Neal Crook <foofoobedoo@gmail.com>
parents:
3116
diff
changeset
|
151 |
3116
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
152 |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
153 ******************************************************************* |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
154 * Read |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
155 * |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
156 * Entry: |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
157 * B = MSB of LSN |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
158 * X = LSB of LSN |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
159 * Y = address of path descriptor |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
160 * U = address of device memory area |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
161 * |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
162 * Exit: |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
163 * CC = carry set on error |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
164 * B = error code |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
165 * |
3122
35fb39e4b218
mc09: Store SD card drive offset in its own 2 bytes
Neal Crook <foofoobedoo@gmail.com>
parents:
3116
diff
changeset
|
166 * The SDcard base block for this disk is retrieved by LdSDAdrs. |
3116
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
167 * |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
168 Read bsr LdSDAdrs set up address in controller |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
169 ldx PD.BUF,y Get physical sector buffer ptr |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
170 |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
171 * If LSN0 is selected, will need to store the first few bytes |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
172 * both in the destination buffer and in the drive table. |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
173 * Calculate the drive table address in case we need it. |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
174 lda PD.DRV,y |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
175 ldb #DRVMEM |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
176 mul |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
177 leay DRVBEG,u |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
178 leay d,y |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
179 |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
180 * wait for previous command (if any) to complete |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
181 RdBiz lda SDCTL |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
182 cmpa #$80 |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
183 bne RdBiz |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
184 |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
185 * issue the read command to the sdcard controller |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
186 clra |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
187 sta SDCTL |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
188 |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
189 * transfer 512 bytes, waiting for each in turn. only want 256 |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
190 * of them - discard the rest |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
191 |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
192 clrb zero is like 256 |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
193 RdDBiz lda SDCTL |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
194 cmpa #$e0 |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
195 bne RdDBiz byte not ready |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
196 lda SDDATA get byte |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
197 sta ,x+ store in sector buffer |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
198 |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
199 * do we also need to store it in the drive table? |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
200 pshs b remember the count |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
201 ldb lsn0cp,u |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
202 beq nocp |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
203 sta ,y+ store in drive table |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
204 dec lsn0cp,u |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
205 |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
206 nocp puls b |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
207 decb |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
208 bne RdDBiz next |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
209 |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
210 RdDBiz2 lda SDCTL b is already zero (like 256) |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
211 cmpa #$e0 |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
212 bne RdDBiz2 byte not ready |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
213 lda SDDATA get byte (but do nothing with it) |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
214 decb |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
215 bne RdDBiz2 next |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
216 |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
217 clra carry clear => successful completion |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
218 rts |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
219 |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
220 |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
221 ******************************************************************* |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
222 * Write |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
223 * Entry: |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
224 * B = MSB of LSN |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
225 * X = LSB of LSN |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
226 * Y = address of path descriptor |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
227 * U = address of device memory area |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
228 * |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
229 * Exit: |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
230 * CC = carry set on error |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
231 * B = error code |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
232 * |
3122
35fb39e4b218
mc09: Store SD card drive offset in its own 2 bytes
Neal Crook <foofoobedoo@gmail.com>
parents:
3116
diff
changeset
|
233 * The SDcard base block for this disk is retrieved by LdSDAdrs. |
35fb39e4b218
mc09: Store SD card drive offset in its own 2 bytes
Neal Crook <foofoobedoo@gmail.com>
parents:
3116
diff
changeset
|
234 * |
3116
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
235 Write |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
236 bsr LdSDAdrs set up address in controller |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
237 ldx PD.BUF,y Get physical sector buffer ptr |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
238 |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
239 * wait for previous command (if any) to complete |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
240 WrBiz lda SDCTL |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
241 cmpa #$80 |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
242 bne WrBiz |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
243 |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
244 * issue the write command to the sdcard controller |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
245 lda #1 |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
246 sta SDCTL |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
247 |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
248 * transfer 512 bytes, waiting for each in turn. Only have 256 |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
249 * bytes so transfer them twice |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
250 pshs x preserve data source |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
251 clrb zero is like 256 |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
252 WrDBiz lda SDCTL |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
253 cmpa #$a0 |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
254 bne WrDBiz space not available |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
255 lda ,x+ get byte from buffer |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
256 sta SDDATA store to SD |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
257 decb |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
258 bne WrDBiz next |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
259 |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
260 puls x restore data source for 2nd copy |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
261 WrDBiz2 lda SDCTL b is zero (like 256) |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
262 cmpa #$a0 |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
263 bne WrDBiz2 space not available |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
264 lda ,x+ get byte from buffer |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
265 sta SDDATA store to SD |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
266 decb |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
267 bne WrDBiz2 next |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
268 |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
269 clra clear carry => successful completion |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
270 rts |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
271 |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
272 |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
273 ******************************************************************* |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
274 * SET SDLBA2 SDLBA1 SDLBA0 FOR NEXT SD OPERATION |
3122
35fb39e4b218
mc09: Store SD card drive offset in its own 2 bytes
Neal Crook <foofoobedoo@gmail.com>
parents:
3116
diff
changeset
|
275 * 1. The device descriptor holds a value that is the upper 16 bits |
35fb39e4b218
mc09: Store SD card drive offset in its own 2 bytes
Neal Crook <foofoobedoo@gmail.com>
parents:
3116
diff
changeset
|
276 * of the base block address of the disk image on the SDcard |
3116
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
277 * 2. If this value is QQQQ, add QQQQ00 to {B,XH,XL} to form the |
3122
35fb39e4b218
mc09: Store SD card drive offset in its own 2 bytes
Neal Crook <foofoobedoo@gmail.com>
parents:
3116
diff
changeset
|
278 * value into the hardware registers. |
35fb39e4b218
mc09: Store SD card drive offset in its own 2 bytes
Neal Crook <foofoobedoo@gmail.com>
parents:
3116
diff
changeset
|
279 * 3. Load lsn0cp with the number of bytes to be copied into the |
3116
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
280 * LSN0 buffer - if {B,XH,XL} == 0, this DD.SIZ. Otherwise, |
3122
35fb39e4b218
mc09: Store SD card drive offset in its own 2 bytes
Neal Crook <foofoobedoo@gmail.com>
parents:
3116
diff
changeset
|
281 * it is 0. Loaded for every operation, only *used* for Read. |
3116
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
282 * |
3122
35fb39e4b218
mc09: Store SD card drive offset in its own 2 bytes
Neal Crook <foofoobedoo@gmail.com>
parents:
3116
diff
changeset
|
283 * Entry: |
35fb39e4b218
mc09: Store SD card drive offset in its own 2 bytes
Neal Crook <foofoobedoo@gmail.com>
parents:
3116
diff
changeset
|
284 * B = MSB of LSN |
35fb39e4b218
mc09: Store SD card drive offset in its own 2 bytes
Neal Crook <foofoobedoo@gmail.com>
parents:
3116
diff
changeset
|
285 * X = LSB of LSN |
35fb39e4b218
mc09: Store SD card drive offset in its own 2 bytes
Neal Crook <foofoobedoo@gmail.com>
parents:
3116
diff
changeset
|
286 * Y = address of path descriptor |
35fb39e4b218
mc09: Store SD card drive offset in its own 2 bytes
Neal Crook <foofoobedoo@gmail.com>
parents:
3116
diff
changeset
|
287 * U = address of device memory area |
3116
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
288 * Can destroy A, B, X, CC |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
289 * |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
290 * It is a constraint that the disk image is aligned so that the |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
291 * low 8-bits of its offset are 0 (ie, it is on a 256*512 byte |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
292 * boundary). Therefore, the incoming XL value needs no manipulation |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
293 * |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
294 * [NAC HACK 2015Sep04] hack! the hardware addresses should be |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
295 * offsets from the base address stored in the device's data structure. |
3122
35fb39e4b218
mc09: Store SD card drive offset in its own 2 bytes
Neal Crook <foofoobedoo@gmail.com>
parents:
3116
diff
changeset
|
296 * |
35fb39e4b218
mc09: Store SD card drive offset in its own 2 bytes
Neal Crook <foofoobedoo@gmail.com>
parents:
3116
diff
changeset
|
297 * PD.DEV,Y is the device table pointer. From this, get the |
35fb39e4b218
mc09: Store SD card drive offset in its own 2 bytes
Neal Crook <foofoobedoo@gmail.com>
parents:
3116
diff
changeset
|
298 * descriptor pointer at V$DESC. From there, use the IT.xxx |
35fb39e4b218
mc09: Store SD card drive offset in its own 2 bytes
Neal Crook <foofoobedoo@gmail.com>
parents:
3116
diff
changeset
|
299 * offsets to get to data in the device descriptor. This is |
35fb39e4b218
mc09: Store SD card drive offset in its own 2 bytes
Neal Crook <foofoobedoo@gmail.com>
parents:
3116
diff
changeset
|
300 * long-winded because the value we need is outside of the area |
35fb39e4b218
mc09: Store SD card drive offset in its own 2 bytes
Neal Crook <foofoobedoo@gmail.com>
parents:
3116
diff
changeset
|
301 * that gets copied into the path descriptor. |
35fb39e4b218
mc09: Store SD card drive offset in its own 2 bytes
Neal Crook <foofoobedoo@gmail.com>
parents:
3116
diff
changeset
|
302 * |
35fb39e4b218
mc09: Store SD card drive offset in its own 2 bytes
Neal Crook <foofoobedoo@gmail.com>
parents:
3116
diff
changeset
|
303 LdSDAdrs pshs y |
35fb39e4b218
mc09: Store SD card drive offset in its own 2 bytes
Neal Crook <foofoobedoo@gmail.com>
parents:
3116
diff
changeset
|
304 ldy PD.DEV,y device table pointer |
35fb39e4b218
mc09: Store SD card drive offset in its own 2 bytes
Neal Crook <foofoobedoo@gmail.com>
parents:
3116
diff
changeset
|
305 ldy V$DESC,y descriptor pointer |
35fb39e4b218
mc09: Store SD card drive offset in its own 2 bytes
Neal Crook <foofoobedoo@gmail.com>
parents:
3116
diff
changeset
|
306 |
35fb39e4b218
mc09: Store SD card drive offset in its own 2 bytes
Neal Crook <foofoobedoo@gmail.com>
parents:
3116
diff
changeset
|
307 clr lsn0cp,u default: copy nothing |
3116
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
308 pshs b |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
309 |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
310 pshs x copy of X to pull off byte by byte |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
311 addb ,s+ form b+xl |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
312 adcb ,s+ form b+xl+xh |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
313 bne notlsn0 it is not LSN0. We're done. |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
314 ldb #DD.SIZ |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
315 stb lsn0cp,u it is LSN0, need to copy this many bytes |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
316 |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
317 notlsn0 tfr x,d |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
318 stb SDLBA0 ls byte is done. |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
319 |
3122
35fb39e4b218
mc09: Store SD card drive offset in its own 2 bytes
Neal Crook <foofoobedoo@gmail.com>
parents:
3116
diff
changeset
|
320 ldb IT.SOFF1,y bits 23:16 of drive base |
3116
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
321 |
3122
35fb39e4b218
mc09: Store SD card drive offset in its own 2 bytes
Neal Crook <foofoobedoo@gmail.com>
parents:
3116
diff
changeset
|
322 adda IT.SOFF2,y add bits 15:8 of drive base |
3116
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
323 sta SDLBA1 middle byte is done |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
324 |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
325 adcb #$00 add carry from middle byte |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
326 addb ,s+ add and drop stacked b |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
327 stb SDLBA2 |
3122
35fb39e4b218
mc09: Store SD card drive offset in its own 2 bytes
Neal Crook <foofoobedoo@gmail.com>
parents:
3116
diff
changeset
|
328 puls y,pc |
3116
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
329 |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
330 emod |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
331 eom equ * |
174eb9eda7b1
New port "mc09" for Multicomp09, an FPGA-based 6809 machine
Neal Crook <foofoobedoo@gmail.com>
parents:
diff
changeset
|
332 end |