Added stuff

This commit is contained in:
Bill Chatfield 2018-05-14 00:02:01 -04:00
parent 70d2dd122d
commit a63dc4abee
5 changed files with 107 additions and 4 deletions

BIN
AppleCommander-ac-1.4.0.jar Normal file

Binary file not shown.

View File

@ -1,7 +1,7 @@
GNU GENERAL PUBLIC LICENSE
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
Copyright (C) 1989, 1991 Free Software Foundation, Inc., <http://fsf.org/>
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
@ -290,8 +290,8 @@ to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
{description}
Copyright (C) {year} {fullname}
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@ -329,7 +329,7 @@ necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
`Gnomovision' (which makes passes at compilers) written by James Hacker.
<signature of Ty Coon>, 1 April 1989
{signature of Ty Coon}, 1 April 1989
Ty Coon, President of Vice
This General Public License does not permit incorporating your program into

44
Makefile Normal file
View File

@ -0,0 +1,44 @@
# Builds copy command
# Requirements:
# 1. Gmake must be used.
# 2. The cc65 compiler must be properly setup.
ifndef CC65_TARGET
CC65_TARGET:=apple2enh
endif
CC=cl65
CFLAGS=-O -t $(CC65_TARGET) -DTRACE
LDFLAGS=-t $(CC65_TARGET)
PGM=copy
DISK_VOL=$(PGM)
DISK=$(DISK_VOL).dsk
AC=java -jar AppleCommander-ac-1.4.0.jar
SYS_LOAD_ADDR=0x2000
BIN_LOAD_ADDR=0x0803
BASIC_AUX_TYPE=0x0801
READ_TIME_LOAD_ADDR=0x0260
MKDISK=$(AC) -pro140 $(DISK) $(DISK_VOL)
########################################
all: $(DISK)
$(DISK): $(PGM)
$(RM) $(DISK)
$(AC) -pro140 $(DISK) $(DISK_VOL)
$(AC) -as $(DISK) $(PGM) BIN < $(PGM)
$(PGM): online.o $(PGM).o
$(CC) $(LDFLAGS) -o $@ $^
$(PGM).o: $(PGM).c
$(CC) $(CFLAGS) $^
online.o: online.c
$(CC) $(CFLAGS) $^
clean:
$(RM) *.o $(PGM) $(DISK)

33
online.c Normal file
View File

@ -0,0 +1,33 @@
#include <stdint.h>
#define PRODOS_MLI 0xbf00
#define ON_LINE_SYSTEM_CALL 0xc5
#define PRODOS_FILE_NAME_MAX_LEN 15
typedef char ProdosFileName[PRODOS_FILE_NAME_MAX_LEN + 1];
typedef ProdosFileName ProdosFileNameArray16[16];
typedef struct OnlineSystemCallArguments {
uint8_t argumentCount;
uint8_t unitNumber;
ProdosFileNameArray16 *volumesOutputBuffer;
} OnlineSystemCallArguments;
static ProdosFileNameArray16 volumes;
static OnlineSystemCallArguments arguments;
ProdosFileNameArray16 *online(uint8_t *errorCode)
{
arguments.argumentCount = 2;
arguments.unitNumber = 0; // All units
arguments.volumesOutputBuffer = &volumes;
__asm__("jsr %w", PRODOS_MLI);
__asm__("db %b", ON_LINE_SYSTEM_CALL);
__asm__("da %v", &arguments);
__asm__("bne %g", errorHandler);
return &volumes;
errorHandler:
return errorCode;
}

26
online.s Normal file
View File

@ -0,0 +1,26 @@
.export _onLineSysCall
.export _onLineVols
ON_LINE = $c5 ;ID FOR ON_LINE MLI SYSTEM CALL
PRODOS_MLI = $bf00 ;ADDRESS OF MLI ENTRY POINT
.proc _onLineSysCall
jsr PRODOS_MLI ;CALL MACHINE LANGUAGE INTERFACE
.byte ON_LINE ;SPECIFY THE ON_LINE SYSTEM CALL
.addr onlineArgs ;SPECIFY ADDRESS OF ARGUMENTS
sta retCode ;Store the return code
lda #<retCode ;PUT LOW BYTE INTO ACCUMULATOR
ldx #>retCode ;PUT HIGH BYTE INTO X
rts
.endproc
.bss
retCode: .byte 0
_onLineVols:.res 256 ;SPACE FOR 16 DISK VOL RECORDS
onlineArgs: .byte 2 ;PARAMETER COUNT
.byte 0 ;UNIT NUMBER, 0=ALL
.addr _onLineVols ;ADDRESS OF OUTPUT BUFFER