source: buchla-emu/emu/mid.c@ 65e7a3a

Last change on this file since 65e7a3a was c5b6c90, checked in by Thomas Lopatic <thomas@…>, 7 years ago

Successfully loaded midas.abs from disk.

  • Property mode set to 100644
File size: 1.6 KB
RevLine 
[a06aa8b]1/*
2 * Copyright (C) 2017 The Contributors
3 *
4 * This program is free software: you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation, either version 3 of the License, or (at
7 * your option) any later version.
8 *
9 * This program is distributed in the hope that it will be useful, but
10 * WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 * General Public License for more details.
13 *
14 * A copy of the GNU General Public License can be found in the file
[2147e53]15 * "gpl.txt" in the top directory of this repository.
[a06aa8b]16 */
17
18#include <all.h>
19
[4c71d39]20#define ver(...) _ver(mid_verbose, 0, __VA_ARGS__)
21#define ver2(...) _ver(mid_verbose, 1, __VA_ARGS__)
22#define ver3(...) _ver(mid_verbose, 2, __VA_ARGS__)
[a06aa8b]23
[4c71d39]24int32_t mid_verbose = 0;
[a06aa8b]25
[c5b6c90]26#define REG_IER_ISR 0
27#define REG_CFR_SR 1
28#define REG_CDR_TBR 2
29#define REG_TDR_RDR 3
30
[a06aa8b]31void mid_init(void)
32{
33 ver("mid init");
34}
35
36void mid_quit(void)
37{
38 ver("mid quit");
39}
40
[3c30832]41bool mid_exec(void)
[a06aa8b]42{
[4c71d39]43 ver3("mid exec");
[3c30832]44 return false;
[a06aa8b]45}
46
47uint32_t mid_read(uint32_t off, int32_t sz)
48{
[4c71d39]49 ver2("mid rd %u:%d", off, sz * 8);
[a06aa8b]50 return 0;
51}
52
53void mid_write(uint32_t off, int32_t sz, uint32_t val)
54{
[4c71d39]55 ver2("mid wr %u:%d 0x%0*x", off, sz * 8, sz * 2, val);
[c5b6c90]56
57 if (sz != 1 || off > 7) {
58 fail("invalid mid wr %u:%d", off, sz * 8);
59 }
60
61 int32_t rg = (int32_t)(off % 4);
62 int32_t un = (int32_t)(off / 4);
63
64 switch (rg) {
65 case REG_CFR_SR:
66 ver2("CFR[%d] 0x%02x", un, val);
67
68 if (un == 1) {
69 fdd_set_side((int32_t)val & 0x01);
70 }
71 else {
72 fdd_set_sel((int32_t)val & 0x01);
73 }
74
75 break;
76
77 default:
78 break;
79 }
[a06aa8b]80}
Note: See TracBrowser for help on using the repository browser.