Compare commits

..

No commits in common. "main" and "v1.0" have entirely different histories.
main ... v1.0

7 changed files with 17 additions and 120 deletions

View File

@ -1,31 +0,0 @@
name: build
on:
push:
branches: [ main ]
tags: ['*']
pull_request:
branches: [ main ]
workflow_dispatch:
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: a2stuff/build-install-ca65-action@v2
- uses: a2stuff/build-install-cadius-action@v1
- name: build
env:
TERM: xterm-256color
run: >
make && make package
- name: deploy new version
if: startsWith(github.ref, 'refs/tags/')
uses: ncipollo/release-action@v1.8.6
with:
token: ${{ secrets.GITHUB_TOKEN }}
artifacts: "out/basys33.po"

2
.gitignore vendored
View File

@ -1,2 +0,0 @@
# Output directory
out

21
LICENSE
View File

@ -1,21 +0,0 @@
MIT License
Copyright (c) 2020 Joshua Bell
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

View File

@ -2,34 +2,20 @@
CAFLAGS = --target apple2enh --list-bytes 0
LDFLAGS = --config apple2-asm.cfg
OUTDIR = out
TARGETS = basis.system.SYS
.PHONY: clean all
all: $(TARGETS)
HEADERS = $(wildcard *.inc)
TARGETS = \
$(OUTDIR)/basis.system.SYS
XATTR := $(shell command -v xattr 2> /dev/null)
.PHONY: clean all package
all: $(OUTDIR) $(TARGETS)
$(OUTDIR):
mkdir -p $(OUTDIR)
clean:
rm -f $(OUTDIR)/*.o
rm -f $(OUTDIR)/*.list
rm -f *.o
rm -f $(TARGETS)
package:
./package.sh
$(OUTDIR)/%.o: %.s $(HEADERS)
%.o: %.s $(HEADERS)
ca65 $(CAFLAGS) --listing $(basename $@).list -o $@ $<
$(OUTDIR)/%.SYS: $(OUTDIR)/%.o
%.SYS: %.o
ld65 $(LDFLAGS) -o $@ $<
ifdef XATTR
xattr -wx prodos.AuxType '00 20' $@
endif

View File

@ -1,9 +1,5 @@
# BASIS.SYSTEM for DOS 3.3 Launcher
[![build](https://github.com/a2stuff/basys33/actions/workflows/main.yml/badge.svg)](https://github.com/a2stuff/basys33/actions/workflows/main.yml)
💾 Disk images can be found on the [Releases](https://github.com/a2stuff/basis33/releases) page 💾
## Background
[ProDOS 2.4](https://prodos8.com/) includes the [Bitsy Bye](https://prodos8.com/bitsy-bye/) program launcher. It can launch System (SYS), Binary (BIN) and BASIC (BAS) files. For other file types, if there's a `BASIS.SYSTEM` handler in the root volume, it is invoked to handle the file.
@ -15,7 +11,6 @@
This repro includes a `BASIS.SYSTEM` implementation that takes the passed file and invokes `DOS3.3.LAUNCHER` on it. It searches for `DOS3.3.LAUNCHER` starting in the directory containing the DOS 3.3 file, and then upwards. So you can create a disk like this:
* `PRODOS`
* `QUIT.SYSTEM`
* `BASIS.SYSTEM`
* `DOS.GAMES/`
* `DOS3.3.LAUNCHER`
@ -24,5 +19,3 @@ This repro includes a `BASIS.SYSTEM` implementation that takes the passed file a
* ...
And then Bitsy Bye will be able to launch them.
If invoked on a file type other than $F1...$F4 it will QUIT back to ProDOS.

View File

@ -69,20 +69,6 @@ reloc_start:
launcher_filename:
PASCAL_STRING "DOS3.3.LAUNCHER"
.proc get_file_info_params
param_count: .byte $A
pathname: .addr filename_buffer
access: .byte 0
file_type: .byte 0
aux_type: .word 0
storage_type: .byte 0
blocks_used: .word 0
mod_date: .word 0
mod_time: .word 0
create_date: .word 0
create_time: .word 0
.endproc
.proc open_params
param_count: .byte 3
path: .addr launcher_filename
@ -111,16 +97,6 @@ pathname: .addr launcher_prefix
newstart:
;;; Check file type is in $F1...$F4
MLI_CALL GET_FILE_INFO, get_file_info_params
bcs quit
lda get_file_info_params::file_type
cmp #$F1
bcc quit
cmp #$F4+1
bcs quit
;;; Find DOS3.3.LAUNCHER
check_for_launcher:

View File

@ -5,20 +5,16 @@
set -e
PACKDIR=$(mktemp -d)
IMGFILE="out/basys33.po"
VOLNAME="basys33"
IMGFILE="basis33.po"
VOLNAME="basis33"
# Create a new disk image.
rm -f "$IMGFILE"
cadius CREATEVOLUME "$IMGFILE" "$VOLNAME" 140KB --no-case-bits --quiet
cadius CREATEVOLUME "$IMGFILE" "$VOLNAME" 800KB --quiet --no-case-bits
add_file () {
cp "$1" "$PACKDIR/$2"
cadius ADDFILE "$IMGFILE" "/$VOLNAME" "$PACKDIR/$2" --no-case-bits --quiet
}
add_file "out/basis.system.SYS" "basis.system#FF0000"
rm -r "$PACKDIR"
cadius CATALOG "$IMGFILE"
cp "basis.system.SYS" "basis.system#FF0000"
cadius ADDFILE "$IMGFILE" "/$VOLNAME" "basis.system#FF0000" --quiet --no-case-bits
rm -f "basis.system#FF0000"