-
Notifications
You must be signed in to change notification settings - Fork 0
/
PIO.ASM
47 lines (43 loc) · 1.61 KB
/
PIO.ASM
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
; ******************************************************************************
; PARALLEL IO PORT DRIVER
; ******************************************************************************
; Driver: Functions to read and write to the GPIO ports.
; ------------------------------------------------------------------------------
; TODO: Adds ability to toggle single bits?
; Addresses
; ------------------------------------------------------------------------------
PIO_BASE_OUT EQU 0x0C
PIO_BASE_IN EQU 0x0E
; ------------------------------------------------------------------------------
; Title: Write a byte to an output port
; Name: PIO_WRITE
;
; Entry: C = Port Index, B = Value
; Exit: [No value]
; Registers: A,B,C
; ------------------------------------------------------------------------------
PIO_WRITE:
LD A,PIO_BASE_OUT
ADD A,C
LD C,A
OUT (C),B
RET
; ------------------------------------------------------------------------------
; ------------------------------------------------------------------------------
; Title: Read a byte from an input port
; Name: PIO_READ
;
; Entry: C = Port Index
; Exit: A = Port Value
; Registers: A,C
; ------------------------------------------------------------------------------
PIO_READ:
LD A,PIO_BASE_IN
ADD A,C
LD C,A
IN A,(C)
RET
; ------------------------------------------------------------------------------
; ------------------------------------------------------------------------------
; END: Driver
; ------------------------------------------------------------------------------