Merge pull request #6 from digarok/refresh

Refresh
This commit is contained in:
Dagen Brock 2021-03-23 16:38:38 -05:00 committed by GitHub
commit c497b6bc5c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
10 changed files with 174 additions and 99 deletions

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

@ -0,0 +1,64 @@
on: [push]
jobs:
cicd_pipeline:
runs-on: ubuntu-latest
name: Run assembly and disk image CICD pipeline
steps:
# CHECKOUT AND ASSEMBLE ON EVERY PUSH, ANY BRANCH
- uses: actions/checkout@v2
- name: Install Merlin
uses: digarok/install-merlin32-action@v0.1.2
- name: Assemble Source
run: |
merlin32 -V src/mmt.s
- name: Install Cadius
uses: digarok/install-cadius-action@v0.1.2
- name: Make Bootable ProDOS Image
if: startsWith(github.ref, 'refs/tags/v')
run: ./make_po.sh
# EVERYTHING BELOW IS ONLY WHEN VERSION TAGS PUSHED (i.e. tag like "v0.1")
- name: Create Release
id: create_release
if: startsWith(github.ref, 'refs/tags/v')
uses: actions/create-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: ${{ github.ref }}
release_name: Release ${{ github.ref }}
- name: Upload Release Asset - 140KB ProDOS Image
if: startsWith(github.ref, 'refs/tags/v')
uses: actions/upload-release-asset@v1.0.1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: ./MMT140.po
asset_name: MMT140.po
asset_content_type: application/octet-stream
- name: Upload Release Asset - 800KB ProDOS Image (.po)
if: startsWith(github.ref, 'refs/tags/v')
uses: actions/upload-release-asset@v1.0.1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: ./MMT800.po
asset_name: MMT800.po
asset_content_type: application/octet-stream
- name: Upload Release Asset - 800KB ProDOS Image (.2mg)
if: startsWith(github.ref, 'refs/tags/v')
uses: actions/upload-release-asset@v1.0.1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: ./MMT800.2mg
asset_name: MMT800.2mg
asset_content_type: application/octet-stream

10
.gitignore vendored
View File

@ -1,2 +1,12 @@
.DS_Store
*_Output.txt
# Don't commit disk images. They are built on releases page now.
MMT*.po
MMT*.2mg
# Don't commit builds.
src/mmt.system
# Don't commit ProDOS (should be a symlink)
PRODOS.2.4.2

BIN
MMT140.po

Binary file not shown.

Binary file not shown.

BIN
MMT800.po

Binary file not shown.

View File

@ -1,6 +1,4 @@
MiniMemoryTester
# mmt
# MiniMemoryTester
A program designed to exhaustively test expansion memory on an Apple IIGS.
![Boot up and running a quick test](docs/minimemorytester.gif "Boot up and running a quick test")
@ -8,18 +6,14 @@ A program designed to exhaustively test expansion memory on an Apple IIGS.
# Usage
There is a full manual here http://goo.gl/NiKJTH
If you just want the program, the latest disk images are
# Downloads
Disk images are available on the project releases page.
https://github.com/digarok/MiniMemoryTester/releases
[MMT800.2mg](https://github.com/digarok/mmt/blob/master/MMT800.2mg?raw=true "MMT800.2mg")
[MMT800.po](https://github.com/digarok/mmt/blob/master/MMT800.po?raw=true "MMT800.po")
[MMT140.po](https://github.com/digarok/mmt/blob/master/MMT140.po?raw=true "MMT140.po")
You can transfer those to a 3.5" or 5.25" disk using ADT Pro or if you have a SD based storage system, it should run fine from there.
You can transfer them to a 3.5" or 5.25" disk using ADT Pro or you can run it from your modern SD storage systems.
# Build
You can build it yourself using the *make_bootable* Bash script under Linux or OSX. It should be trivial to write an approximate BAT or Powershell for Windows, if that is what you are using. Note - You need to edit the following lines in the *make_bootable* script:
You can build it yourself using the *`make_po.sh`* Bash script under Linux or OSX. It should be trivial to write an approximate BAT or Powershell for Windows, if that is what you are using. Note - You need to edit the following lines in the *make_bootable* script:
# SET THESE TOOLS UP ON YOUR SYSTEM AND UPDATE THE PATHS HERE TO BUILD
CADIUS="../tools/Cadius"
@ -52,11 +46,6 @@ Large portions of this program are written in one of the two cpu modes:
The 8-bit test modes, in particular, are written with a short accumulator, but long index registers. This way it can easily scan a bank of memory using the X register from 0000 to FFFF. Likewise, when running 16-bit test modes, we write 16 bit values using a long accumulator, and still using long index registers. However, we also increment or decrement by two, since it writes two bytes at a time with a long accumulator.
`TestInit` function is where the "BEGIN TEST" code starts.
Again, see the manual at the top for the full description of the software and usage.
Again, see the manual at the top for the full description of the software and usage.

Binary file not shown.

60
make_po.sh Executable file
View File

@ -0,0 +1,60 @@
#!/bin/bash
command -v cadius >/dev/null 2>&1 || { echo "I require CADIUS but it's not installed. Aborting." >&2; exit 1; }
SRCFILES=(`ls src/*.s`)
SYSFILES=(`ls PRODOS.2.4.2//PRODOS src/*system`)
SRCDIR=src
BLDDIR=build/
DISK="MMT"
CADIUS="cadius"
if [ ! -d $BLDDIR ] ; then
echo "Build directory for this platform doesn't exist so I will create it."
mkdir -p $BLDDIR ; echo "Created: $BLDDIR"
fi
# need to autogen
cp src/_FileInformation.txt $BLDDIR
echo "Creating disk images"
$CADIUS createvolume ${DISK}800.2mg ${DISK}800 800KB >/dev/null
$CADIUS createvolume ${DISK}800.po ${DISK}800 800KB >/dev/null
$CADIUS createvolume ${DISK}140.po ${DISK}140 140KB >/dev/null
#SYSTEM FILES
echo -n "Processing System files: "
COMMA=""
for f in ${SYSFILES[@]};
do
FNAME=${f##*/}
echo -n "$COMMA $FNAME"
cp $f $BLDDIR/$FNAME
$CADIUS addfile ${DISK}800.2mg /${DISK}800/ $BLDDIR/$FNAME >/dev/null
$CADIUS addfile ${DISK}800.po /${DISK}800/ $BLDDIR/$FNAME >/dev/null
$CADIUS addfile ${DISK}140.po /${DISK}140/ $BLDDIR/$FNAME >/dev/null
COMMA=","
done
#SOURCE FILES
echo ""
echo -n "Processing Source files: "
COMMA=""
for f in ${SRCFILES[@]};
do
FNAME=${f##*/}
echo -n "$COMMA $FNAME"
cp $f $BLDDIR/$FNAME
echo "$FNAME=Type(04),AuxType(0000),VersionCreate(24),MinVersion(00),Access(E3)" > $BLDDIR/_FileInformation.txt
$CADIUS sethighbit $BLDDIR/$FNAME >/dev/null
$CADIUS addfile ${DISK}800.2mg /${DISK}800/ $BLDDIR/$FNAME >/dev/null
$CADIUS addfile ${DISK}800.po /${DISK}800/ $BLDDIR/$FNAME >/dev/null
$CADIUS addfile ${DISK}140.po /${DISK}140/ $BLDDIR/$FNAME >/dev/null
COMMA=","
done
echo "Look, I'm no expert, but I think everything went pretty well. (BUILD SUCCEEDED!!!)"
echo ""
exit

View File

@ -33,69 +33,31 @@ ToLower cmp #"Z"
mx %11
ColorizeMenu
lda #6
ldx #$A0 ; lt gray
jsr WaitScanline
lda #7
ldx #$A0 ; lt gray
jsr WaitScanline
lda #8
ldx #$C0 ; green
jsr WaitScanline
lda #9
ldx #$C0 ; green
jsr WaitScanline
lda #10
ldx #$C0 ; green
jsr WaitScanline
lda #11
ldx #$d0 ; yello
jsr WaitScanline
lda #12
ldx #$90 ; orange
jsr WaitScanline
lda #13
ldx #$10 ; red
jsr WaitScanline
lda #14
ldx #$30 ; purple
jsr WaitScanline
lda #15
ldx #$70 ; bblue
jsr WaitScanline
lda #16
ldx #$50 ; grey
jsr WaitScanline
lda #17
ldx #$f0 ; white
jsr WaitScanline
ColorizeMenu sei
XSCANLINE #$6;#$A0 ;lt grey
XSCANLINE #$7;#$C0 ;grn
XSCANLINE #$8;#$D0 ;yello
XSCANLINE #$A;#$90 ;orange
XSCANLINE #$B;#$10 ;red
XSCANLINE #$C;#$30 ;purple
XSCANLINE #$E;#$70 ;blue
XSCANLINE #$F;#$50 ;grey
XSCANLINE #$10;#$F0 ;white
cli
rts
* now stores x immediately
WaitScanline
sta :val+1
:waitloop ldal $e0c02f
* I think this still has latent issues with a desync'ed bit 0 (race condition)
XSCANLINE MAC
ldx #]2
:waitloop lda $c02f
asl
ldal $e0c02e
lda $c02e
rol
:val cmp #$00
:val cmp #]1
bne :waitloop
stx $c022
rts
<<<
VBlankForce
:vbl ldal $00c019
@ -121,7 +83,7 @@ WaitSCB sta :val+1
; horizcnt even/odd right as it changes
; and start early or something?
rts
MAXSCB db 0
WaitSome ldy #$07

View File

@ -27,7 +27,7 @@
org $2000 ; start at $2000 (all ProDOS8 system files)
typ $ff ; set P8 type ($ff = "SYS") for output file
dsk mmtsystem ; tell compiler what name for output file
dsk mmt.system ; tell compiler what name for output file
put applerom
Init
@ -452,15 +452,6 @@ TestLogError PushAll
*Mesg_Error0 asc "Wrote: $00 %12345678 Read: $00 %12345678"
TestRollBack
lda TestDirection
eor #$01
sta TestDirection
jsr TestAdvanceLocation
lda TestDirection
eor #$01
sta TestDirection
rts
TestForceUpdateStatus PushAll
stx _stash
@ -595,7 +586,7 @@ TestMemoryLocationTwoPass
bne :UNHANDLED
jmp Test_16BitWalk1TP
:UNHANDLED sep #$30
:UNHANDLED sep #$30 ; @todo: what is this?
rep #$10
rts
@ -774,7 +765,7 @@ BANKPATCH12 = *-1
PushAll
sep #$20
jsr CORRUPTOR
jsr CORRUPTOR ; @todo: inline
clc
xce
rep #$30
@ -1091,10 +1082,11 @@ TestAdvanceLocation lda TestDirection
:dn lda TestSize16Bit
beq :dn8
:dn16 cpx #0
beq :hitBankBoundry
:dn16 cpx #0 ;check if already at 0?
beq :hitBankBoundry ;
dex
beq :hitBankBoundry ;how about now?
dex ;
cpx #0
beq :hitBankBoundryTest ;we still need to test in this case. side effect of odd start/ends
bra :testStartAddr
:dn8 cpx #0
@ -1284,7 +1276,6 @@ TestPatchBanks lda CurBank
rts
CORRUPTOR lda $C000
bpl _nokey
and #11101111
@ -1294,8 +1285,7 @@ CORRUPTOR lda $C000
stal $020000,x
BANKPATCHXX = *-1
sta $C010 ; clear it or we can't test WaitOnError
_nokey nop
rts
_nokey rts
mx %11
@ -1313,9 +1303,9 @@ TESTSTATE_WRITE = 2
TESTSTATE_BOTH = 3
UpdateScanInterval equ #$1000
Mesg_Welcome asc "Mini Memory Tester v1.0.1 - Copyright (c) 2015-2018 Dagen Brock",00
Mesg_Promo asc "Visit ReactiveMicro.com & UltimateApple2.com for Apple II RAM cards & more!",$8D,$8D
asc " Full manual and latest version available at github.com/digarok/mmt",00
Mesg_Welcome asc "Mini Memory Tester v1.0.2 - Copyright (c) 2015-2021 Dagen Brock",00
Mesg_Promo asc "Visit ReactiveMicro.com & UltimateApple2.com for Apple II RAM cards & hw.",$8D,$8D
asc "Full manual and latest version available at github.com/digarok/mmt",00
Mesg_InternalRam256 asc "Built-In RAM 256K",00
Mesg_InternalRam1024 asc "Built-In RAM 1024K",00
Mesg_ExpansionRam asc "Expansion RAM ",00
@ -1748,7 +1738,7 @@ _clearstring asc " ",$00
MainMenuStrs
asc " ______________________________________________________________________________",$8D,$00
asc $1B,'ZV_@ZVWVWVWV_',"Mini Memory Tester v1.0.1",'ZVWVWVWVWVWVWVWVWV_'," // Infinitum ",'ZWVWVWVW_',$18,$00
asc $1B,'ZV_@ZVWVWVWV_',"Mini Memory Tester v1.0.2",'ZVWVWVWVWVWVWVWVWV_'," // Infinitum ",'ZWVWVWVW_',$18,$00
asc $1B,'ZLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL_',$18,00
asc $1B,'ZZ \GGGGGGGGGGGGG_',"Test Settings",'ZGGGGGGGGGGGGG\ _'," ",'Z \GGGGGGGG_',"Info",'ZGGGGGGGG\ _'," ",'_',$18,00
asc $1B,'ZZ'," ",'_'," ",'Z'," ",'_'," ",'_',$18,00