diff --git a/.gitignore b/.gitignore index dea1646..cb956c1 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,4 @@ *.swp -delkeyeraseleft -delkeyeraseleft.dsk +delkey.clr.left +delkey.clr.left.dsk _FileInformation.txt diff --git a/Makefile b/Makefile index dda2cc7..49b7dd8 100644 --- a/Makefile +++ b/Makefile @@ -3,15 +3,18 @@ # AC=java -jar AppleCommander-1.3.5-ac.jar -SRC=delkeyeraseleft.s -PGM=delkeyeraseleft +PGM=delkey.clr.left +SRC=$(PGM).s +PGM2=mem.vars +SRC2=$(PGM2).s VOL=$(PGM) DSK=$(PGM).dsk -$(DSK): $(PGM) +$(DSK): $(PGM) $(PGM2) #$(AC) -pro140 $(DSK) $(VOL) ---- Broken in 1.3.5 and others cp prodos.dsk $(DSK) $(AC) -p $(DSK) $(PGM) BIN 0x0300 < $(PGM) + $(AC) -p $(DSK) $(PGM2) BIN 0x0300 < $(PGM2) $(PGM): $(SRC) merlin32 $(SRC) @@ -20,6 +23,14 @@ $(PGM): $(SRC) @# file. @test -e $(PGM) -clean: - $(RM) $(PGM) $(DSK) error_output.txt _FileInformation.txt +$(PGM2): $(SRC2) + merlin32 $(SRC2) + @# Merlin fails to provide a non-0 exit code on failure so + @# it needs to be simulated by checking for the error_output.txt + @# file. + @test -e $(PGM2) + + +clean: + $(RM) $(PGM) $(PGM2) $(DSK) error_output.txt _FileInformation.txt diff --git a/delkeyeraseleft.s b/delkey.clr.left.s similarity index 96% rename from delkeyeraseleft.s rename to delkey.clr.left.s index d394c33..b5658e9 100644 --- a/delkeyeraseleft.s +++ b/delkey.clr.left.s @@ -9,8 +9,9 @@ ORG $300 TYP $06 ;BINARY TYPE - DSK delkeyeraseleft ;PUT FILE NAME + DSK delkey.clr.left ;OUTPUT FILE NAME +WINWIDTH EQU $21 CH EQU $24 ;HORIZ CHAR POS (40-COL) BASL EQU $28 ;BASE ADDR FOR CURR VIDEO LINE KSWL EQU $38 ;KEYBOARD SWITCH LOW BYTE @@ -21,7 +22,9 @@ KBD EQU $C000 ;KEYBOARD DATA + STROBE KBDSTRB EQU $C010 ;CLEAR KEYBOARD STROBE CXROMON EQU $C007 ;TURN ON INTERNAL ROM CXROMOFF EQU $C006 ;ENABLE SLOT ROMS -ALTCHAR EQU $C01E ;>=$80 IF IN 80-COL +80COLOFF EQU $C00C ;Off: display 40 columns +80COLON EQU $C00D ;On: display 80 columns +RD80COL EQU $C01F ;Read 80col switch (1 = on) COUT EQU $FDED ;WRITE A CHARACTER * 80-COL SUBS INSIDE THE INTERNAL ROM @@ -152,7 +155,7 @@ DELHNDLR TYA ;SAVE Y PHA - BIT ALTCHAR ;TEST FOR 80-COL ON + BIT RD80COL ;TEST FOR 80-COL ON BMI COL80 COL40 diff --git a/mem.vars.s b/mem.vars.s new file mode 100644 index 0000000..4605f5e --- /dev/null +++ b/mem.vars.s @@ -0,0 +1,70 @@ +******************************** +* * +* PRINT MEMORY VARIABLES * +* * +* AUTHOR: BILL CHATFIELD * +* LICENSE: GPL * +* * +******************************** + + ORG $300 + TYP $06 ;BINARY TYPE + DSK mem.vars ;OUTPUT FILE NAME + +RDALTCHAR EQU $C01E +RD80COL EQU $C01F +RD80STORE EQU $C018 + +HEXDEC EQU $ED24 ;HEX-TO-DECIMAL CONVERSION +CROUT EQU $FD8E ;PRINT A CARRIAGE RETURN +STROUT EQU $DB3A ;PRINT NULL-TERM STRING IN AY +* MONITOR SUBS +PRINTXY EQU $F940 ;PRINT X & Y AS HEX +PRBYTE EQU $FDDA ;PRINT BYTE AS 2 HEX DIGITS + +******************************** +* * +* PUTS MACRO * +* * +* APPLESOFT MUST BE IN MEMORY * +* BECAUSE THE STROUT SUB IS * +* USED. * +* * +* X & Y ARE PRESERVED * +* * +* ]1 - ADDRESS OF STRING * +* * +******************************** + +PUTS MAC + TYA ;PRESERVE Y + PHA + LDA #<]1 ;PUT LOW BYTE INTO A + LDY #>]1 ;PUT HIGH BYTE INTO Y + JSR STROUT ;CALL APPLESOFT'S STRING PRINT + PLA ;RESTORE Y + TAY + <<< + +MAIN + PUTS ALTCHLBL + BIT RDALTCHAR + JSR PRBYTE + JSR CROUT + + PUTS 80COLLBL + BIT RD80COL + JSR PRBYTE + JSR CROUT + + PUTS 80STOLBL + BIT RD80STORE + JSR PRBYTE + JSR CROUT + + RTS + +ALTCHLBL ASC "ALTCHAR = ",00 +80COLLBL ASC "80COL = ",00 +80STOLBL ASC "80STORE = ",00 +