libmsx
C library for MSX
Loading...
Searching...
No Matches
bmem.h
Go to the documentation of this file.
1// -*- coding: utf-8-unix -*-
2/*
3 * Copyright (c) 2021-2025 Daishi Mori (mori0091)
4 *
5 * This software is released under the MIT License.\n
6 * See https://github.com/mori0091/libmsx/blob/main/LICENSE
7 *
8 * GitHub libmsx project\n
9 * https://github.com/mori0091/libmsx
10 */
56#pragma once
57
58#include <stdint.h>
59#ifndef BMEM_H_
60#define BMEM_H_
61
62#include <vmem.h>
63
75typedef uint32_t bmemptr_t;
76
83inline uint8_t bmem_bank_of(bmemptr_t loc) {
84 return (uint8_t)((loc >> 14) & 255);
85}
86
92uint8_t bmem_get_bank(void) __naked;
93
99void bmem_set_bank(uint8_t bank) __naked;
100
120uint8_t bmem_get(bmemptr_t src);
121
129
158void bmem_read(bmemptr_t src, void* dst, uint16_t len);
159
167void bmem_copy_to_vmem(bmemptr_t src, vmemptr_t dst, uint32_t len);
168
198
201#endif // BMEM_H_
202
uint8_t bmem_bank_of(bmemptr_t loc)
Returns the segment number corresponding to the specified address of the banked memory.
Definition bmem.h:83
uint32_t bmemptr_t
Type of an address of banked memory.
Definition bmem.h:75
uint8_t bmem_get_bank(void) __naked
Get the current segment number of banked memory at page 2 (0x8000..0xbfff).
void bmem_set_bank(uint8_t bank) __naked
Expose a 16KiB segment of banked memory at page 2 (0x8000..0xbfff).
uint16_t bmem_get_u16(bmemptr_t src)
Read 16-bits value from banked memory.
void bmem_bload_s(bmemptr_t src)
Load a BSAVE formatted binary in banked memory into VRAM.
uint8_t bmem_get(bmemptr_t src)
Read byte from banked memory.
void bmem_copy_to_vmem(bmemptr_t src, vmemptr_t dst, uint32_t len)
Copy from banked memory to VRAM.
void bmem_read(bmemptr_t src, void *dst, uint16_t len)
Read byte sequence from banked memory.
uint32_t vmemptr_t
Type for VRAM address.
Definition vmem.h:43
Data types and functions for VRAM access.