Compare commits

...

15 Commits
v1.0 ... main

Author SHA1 Message Date
Joshua Bell f41d9c6171 Workflows: bump ca65 action to v2 2023-03-02 20:02:14 -08:00
Joshua Bell 3652408170 Workflow: Fix release artifact 2021-07-23 09:35:23 -07:00
Joshua Bell a47a16828a Workflows: Use actions for cadius and ca65, package and deploy on tag 2021-07-23 09:32:10 -07:00
Joshua Bell 256d838eb3 Migrate from Travis-CI to GitHub Actions 2021-06-19 17:22:03 -07:00
Joshua Bell 6fdc9b73ed travis-ci.org -> .com 2021-06-09 20:20:03 -07:00
Joshua Bell d3f4d49a26 Travis-CI: Add build status indicator 2021-03-07 16:41:18 -08:00
Joshua Bell 9abcfff68f Only run xattr if present 2021-03-07 16:38:49 -08:00
Joshua Bell e870f08184 Switch Travis-CI to use linux 2021-03-07 15:30:56 -08:00
Joshua Bell 018f084608
Create LICENSE 2020-11-08 12:41:09 -08:00
Joshua Bell aed0c0a6d4 Revamp package script, build to out/ dir 2020-03-12 20:38:51 -07:00
Joshua Bell c84001002b Add travis-ci config; produce 140k disks 2020-03-12 19:45:38 -07:00
Joshua Bell d03d096936
Update README.md 2020-03-10 00:51:01 -07:00
Joshua Bell 7034d75f01 Check file types. 2020-02-22 10:48:10 -08:00
Joshua Bell fcaa3569d5 Update name 2020-02-20 17:54:54 -08:00
Joshua Bell 6ff0fcb006
Update README.md 2020-02-20 10:00:23 -08:00
7 changed files with 120 additions and 17 deletions

31
.github/workflows/main.yml vendored Normal file
View File

@ -0,0 +1,31 @@
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 Normal file
View File

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

21
LICENSE Normal file
View File

@ -0,0 +1,21 @@
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,20 +2,34 @@
CAFLAGS = --target apple2enh --list-bytes 0
LDFLAGS = --config apple2-asm.cfg
TARGETS = basis.system.SYS
.PHONY: clean all
all: $(TARGETS)
OUTDIR = out
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 *.o
rm -f $(OUTDIR)/*.o
rm -f $(OUTDIR)/*.list
rm -f $(TARGETS)
%.o: %.s $(HEADERS)
package:
./package.sh
$(OUTDIR)/%.o: %.s $(HEADERS)
ca65 $(CAFLAGS) --listing $(basename $@).list -o $@ $<
%.SYS: %.o
$(OUTDIR)/%.SYS: $(OUTDIR)/%.o
ld65 $(LDFLAGS) -o $@ $<
ifdef XATTR
xattr -wx prodos.AuxType '00 20' $@
endif

View File

@ -1,5 +1,9 @@
# 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.
@ -11,6 +15,7 @@
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`
@ -19,3 +24,5 @@ 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,6 +69,20 @@ 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
@ -97,6 +111,16 @@ 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,16 +5,20 @@
set -e
IMGFILE="basis33.po"
VOLNAME="basis33"
# Create a new disk image.
PACKDIR=$(mktemp -d)
IMGFILE="out/basys33.po"
VOLNAME="basys33"
rm -f "$IMGFILE"
cadius CREATEVOLUME "$IMGFILE" "$VOLNAME" 800KB --quiet --no-case-bits
cadius CREATEVOLUME "$IMGFILE" "$VOLNAME" 140KB --no-case-bits --quiet
cp "basis.system.SYS" "basis.system#FF0000"
cadius ADDFILE "$IMGFILE" "/$VOLNAME" "basis.system#FF0000" --quiet --no-case-bits
rm -f "basis.system#FF0000"
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"