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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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