From 64ce7b85586b85f39e009bb294c6c4c4782d1753 Mon Sep 17 00:00:00 2001 From: Robin Krens Date: Thu, 9 Jun 2022 00:03:11 +0200 Subject: [PATCH] out call to ports with inline asm + c variables squash of: commit 0b368932d654cdbd81d682d36897c74fa1106485 commit a58ede133445902c0a13da0392cac600e72538bf --- Makefile | 4 +++- src/entry.S | 2 +- src/main.c | 20 +++++++++++++++++++- 3 files changed, 23 insertions(+), 3 deletions(-) diff --git a/Makefile b/Makefile index f949274..5ee33f7 100644 --- a/Makefile +++ b/Makefile @@ -10,7 +10,9 @@ ADIR = objs SDIR = src INC = -Iinc -CFLAGS = -march=v30 -ffreestanding # use NEC v30 chip +CFLAGS = -march=v30# use NEC v30 chip +CFLAGS += -ffreestanding# no stdlib +CFLAGS += -fno-pic# for use of inline asm _OBJS = entry.o main.o # todo: make sure entry is forced as entry point for linker diff --git a/src/entry.S b/src/entry.S index e1393e5..e5fae8b 100644 --- a/src/entry.S +++ b/src/entry.S @@ -22,7 +22,7 @@ _start: mov %ax,%bx mov %ax,%bp mov %ax,%ss - + # set stack pointer for wonderswan # color mov $0xFE00 - 2,%ax diff --git a/src/main.c b/src/main.c index 502d63c..dc651f1 100644 --- a/src/main.c +++ b/src/main.c @@ -18,13 +18,27 @@ unsigned char bgtile_pal[] = { unsigned char lol[5] = { 0xAA, 0x2, 0x3, 0x4, 0x5}; unsigned char lol2[5] = { 0x1, 0x2, 0x3, 0x4, 0x5}; unsigned char lol3[5] = { 0x1, 0x2, 0x3, 0x4, 0x5}; -#define PALETTE (*(volatile unsigned *)0xFE00) #define PALETTE_T (volatile unsigned *)0xFE00 #define SPRITE_T (volatile unsigned *)0x4000 /* bss */ static unsigned char blaat[100]; +void outport(unsigned char portnr, unsigned char val) +{ + __asm__( + "mov %1, %%dl\n\t" + "out %0, (%%dx)" + : + :"r"(val), "r"(portnr) + :); +} + +void init_video(void) +{ + +} + int main(void) { lol[0] = 0xDD; @@ -33,6 +47,10 @@ int main(void) blaat[0] = 0xEE; blaat[1] = 0xEE; blaat[32] = 0xEE; + + init_video(); + outport(0x15, 0xEE); + while(1); unsigned char * ptr = PALETTE_T; for (int i = 0; i < sizeof(bgtile_pal); ++i) { -- 2.7.4