mirror of
https://github.com/a2stuff/basys33.git
synced 2024-10-20 06:23:44 +00:00
Compare commits
No commits in common. "main" and "v1.0" have entirely different histories.
31
.github/workflows/main.yml
vendored
31
.github/workflows/main.yml
vendored
@ -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
2
.gitignore
vendored
@ -1,2 +0,0 @@
|
||||
# Output directory
|
||||
out
|
21
LICENSE
21
LICENSE
@ -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.
|
28
Makefile
28
Makefile
@ -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
|
||||
|
@ -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.
|
||||
|
@ -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:
|
||||
|
24
package.sh
24
package.sh
@ -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"
|
||||
|
Loading…
Reference in New Issue
Block a user