initial import
This commit is contained in:
4
.gitignore
vendored
Normal file
4
.gitignore
vendored
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
depend
|
||||||
|
*.prg
|
||||||
|
*.o
|
||||||
|
|
||||||
44
Makefile
Normal file
44
Makefile
Normal file
@@ -0,0 +1,44 @@
|
|||||||
|
#
|
||||||
|
|
||||||
|
TOOLCHAIN_PREFIX=m68k-atari-mint-
|
||||||
|
CC=$(TOOLCHAIN_PREFIX)gcc
|
||||||
|
|
||||||
|
UNAME := $(shell uname)
|
||||||
|
ifeq ($(UNAME),Linux)
|
||||||
|
PREFIX=m68k-atari-mint
|
||||||
|
HATARI=hatari
|
||||||
|
else
|
||||||
|
PREFIX=/opt/cross-mint/m68k-atari-mint
|
||||||
|
HATARI=/usr/local/bin/hatari
|
||||||
|
endif
|
||||||
|
|
||||||
|
CFLAGS= \
|
||||||
|
-Os\
|
||||||
|
-fomit-frame-pointer\
|
||||||
|
-mcpu=547x\
|
||||||
|
-Wall\
|
||||||
|
-mshort\
|
||||||
|
-nostdlib
|
||||||
|
|
||||||
|
APP=strb_inv.prg
|
||||||
|
|
||||||
|
all: $(APP)
|
||||||
|
|
||||||
|
SOURCES=startup.S strb_inv.c
|
||||||
|
|
||||||
|
OBJECTS=$(SOURCES:.c=.o)
|
||||||
|
|
||||||
|
$(APP): $(OBJECTS) depend
|
||||||
|
$(CC) $(CFLAGS) $(OBJECTS) -o $(APP) -lgcc
|
||||||
|
m68k-atari-mint-strip $(APP)
|
||||||
|
|
||||||
|
.PHONY clean:
|
||||||
|
- rm -rf *.o depend strb_inv.prg
|
||||||
|
|
||||||
|
depend: $(SOURCES)
|
||||||
|
$(CC) $(CFLAGS) $(INCLUDE) -M $(SOURCES) strb_inv.c > depend
|
||||||
|
|
||||||
|
|
||||||
|
ifneq (clean,$(MAKECMDGOALS))
|
||||||
|
-include depend
|
||||||
|
endif
|
||||||
22
startup.S
Normal file
22
startup.S
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
.extern _main
|
||||||
|
.globl _program_length
|
||||||
|
|
||||||
|
.equ BASEPAGE_SIZE,0x100
|
||||||
|
|
||||||
|
.text
|
||||||
|
|
||||||
|
start:
|
||||||
|
move.l 4(sp),a5 | address to basepage
|
||||||
|
move.l 0x0c(a5),d0 | length of text segment
|
||||||
|
add.l 0x14(a5),d0 | length of data segment
|
||||||
|
add.l 0x1c(a5),d0 | length of bss segment
|
||||||
|
add.l #BASEPAGE_SIZE,d0 | length of stackpointer+basepage
|
||||||
|
move.l d0,_program_length | save program length so _main() can access it
|
||||||
|
|
||||||
|
jsr _main | make sure we never return here
|
||||||
|
|
||||||
|
.bss
|
||||||
|
|
||||||
|
_program_length:
|
||||||
|
ds.l 1
|
||||||
|
|
||||||
30
strb_inv.c
Normal file
30
strb_inv.c
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
#include <stdio.h>
|
||||||
|
#include <stdint.h>
|
||||||
|
#include <osbind.h>
|
||||||
|
#include <mint/ostruct.h>
|
||||||
|
#include <mint/sysvars.h>
|
||||||
|
|
||||||
|
|
||||||
|
void __main(void)
|
||||||
|
{
|
||||||
|
;
|
||||||
|
}
|
||||||
|
|
||||||
|
volatile long *acp_config = (volatile long *) 0xff040000;
|
||||||
|
|
||||||
|
void inv_strb(void)
|
||||||
|
{
|
||||||
|
(void) Cconws("ACP_CONFIG(0)=");
|
||||||
|
(void) Cconws(*acp_config & 1 ? "1" : "0");
|
||||||
|
(void) Cconws("\r\n");
|
||||||
|
*acp_config ^= 1;
|
||||||
|
(void) Cconws("ACP_CONFIG(0)=");
|
||||||
|
(void) Cconws(*acp_config & 1 ? "1" : "0");
|
||||||
|
(void) Cconws("\r\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
int main(int argc, char *argv[])
|
||||||
|
{
|
||||||
|
Supexec(inv_strb);
|
||||||
|
Pterm0();
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user