mirror of https://github.com/gungwald/copy.git
Beginning of assembly language implementation
This commit is contained in:
parent
332f067b2e
commit
670f41833e
|
@ -0,0 +1,20 @@
|
||||||
|
* Program: Copy file
|
||||||
|
* Author: Bill Chatfield
|
||||||
|
|
||||||
|
use symbols
|
||||||
|
use macros
|
||||||
|
|
||||||
|
* Get source file name
|
||||||
|
|
||||||
|
getSource
|
||||||
|
puts sourcePrompt
|
||||||
|
|
||||||
|
* Get destination directory
|
||||||
|
|
||||||
|
>>> puts;destPrompt
|
||||||
|
|
||||||
|
* Variables
|
||||||
|
|
||||||
|
sourcePrompt asc "File to copy:",00
|
||||||
|
destPrompt asc "Directory to copy it to:",00
|
||||||
|
|
|
@ -0,0 +1,124 @@
|
||||||
|
********************************
|
||||||
|
* *
|
||||||
|
* 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
|
||||||
|
<<<
|
||||||
|
|
||||||
|
********************************
|
||||||
|
* *
|
||||||
|
* PUTS80 MACRO *
|
||||||
|
* *
|
||||||
|
* IN 80-COL MODE EVEN COLUMNS *
|
||||||
|
* ARE IN AUXILIARY MEMORY *
|
||||||
|
* WHILE ODD COLUMNS ARE IN *
|
||||||
|
* MAIN MEMORY. *
|
||||||
|
* *
|
||||||
|
* ]1 - CHARACTER TO DISPLAY *
|
||||||
|
* ]2 - DESIRED COLUMN *
|
||||||
|
* *
|
||||||
|
********************************
|
||||||
|
|
||||||
|
PUTS80 MAC
|
||||||
|
TYA ;MOVE Y TO A
|
||||||
|
PHA ;SAVE Y VALUE ON STACK
|
||||||
|
SEI ;DISABLE INTERRUPTS
|
||||||
|
STA STOR80ON ;ENABLE MAIN/AUX MEM SWITCHING
|
||||||
|
LDA ]2 ;LOAD 80-COL HORIZ CURSOR POSITN
|
||||||
|
LSR A ;DIVIDE BY 2 TO CALC PHYS COLUMN
|
||||||
|
BCC AUXMEM ;IF EVEN, COLUMN IS IN AUX MEM
|
||||||
|
MAINMEM STA PAGE2OFF ;TURN OFF AUX MEM, MAIN MEM ON
|
||||||
|
JMP CONTINUE ;AVOID AUX MEM ENABLE
|
||||||
|
AUXMEM STA PAGE2ON ;TURN ON AUX MEM, MAIN MEM OFF
|
||||||
|
CONTINUE TAY ;MOVE CURSOR POSITION TO Y
|
||||||
|
LDA ]1 ;LOAD THE CHARACTER TO DISPLAY
|
||||||
|
STA (BASL),Y ;DISPLAY THE CHARACTER
|
||||||
|
STA PAGE2OFF ;TURN MAIN MEM BACK ON
|
||||||
|
CLI ;ENABLE INTERRUPTS
|
||||||
|
PLA ;PULL Y VALUE FROM STACK
|
||||||
|
TAY ;RESTORE Y VALUE
|
||||||
|
<<<
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
********************************
|
||||||
|
* *
|
||||||
|
* GETKEY MACRO *
|
||||||
|
* *
|
||||||
|
********************************
|
||||||
|
|
||||||
|
GETKEY MAC
|
||||||
|
BIT KBD ;TEST FOR KEY PRESSED
|
||||||
|
BPL GETKEY ;WAIT FOR KEY PRESSED
|
||||||
|
LDA KBD ;GET THE KEY THAT WAS PRESSED
|
||||||
|
BIT KBDSTRB ;CLEAR KEYBOARD STROBE
|
||||||
|
STA ]1 ;STORE THE KEY THAT WAS READ
|
||||||
|
<<<
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
********************************
|
||||||
|
* *
|
||||||
|
* PUTSCUSTOM MACRO *
|
||||||
|
* *
|
||||||
|
********************************
|
||||||
|
|
||||||
|
PUTSCUSTOM MAC
|
||||||
|
TYA ;PRESERVE Y
|
||||||
|
PHA
|
||||||
|
LDY #0 ;PREPARE LOOP INDEX
|
||||||
|
]NEXTCHR LDA ]1,Y ;LOAD A CHARACTER
|
||||||
|
CMP #0 ;CHECK FOR END OF STRING
|
||||||
|
BEQ FINISH
|
||||||
|
JSR COUT
|
||||||
|
INY
|
||||||
|
JMP ]NEXTCHR
|
||||||
|
FINISH PLA ;RESTORE Y
|
||||||
|
TAY
|
||||||
|
<<<
|
||||||
|
|
||||||
|
********************************
|
||||||
|
* *
|
||||||
|
* PAUSE Macro *
|
||||||
|
* *
|
||||||
|
********************************
|
||||||
|
|
||||||
|
PAUSE MAC
|
||||||
|
PUTS ]1
|
||||||
|
JSR RDKEY
|
||||||
|
JSR CROUT
|
||||||
|
<<<
|
||||||
|
|
||||||
|
********************************
|
||||||
|
* *
|
||||||
|
* ADD_TO_ADDR MACRO *
|
||||||
|
* *
|
||||||
|
********************************
|
||||||
|
|
||||||
|
ADD_TO_ADDR MAC
|
||||||
|
LDA ]1
|
||||||
|
CLC
|
||||||
|
ADC ]2
|
||||||
|
STA ]1
|
||||||
|
BCC DONE
|
||||||
|
INC ]1+1
|
||||||
|
DONE <<<
|
||||||
|
|
|
@ -0,0 +1,64 @@
|
||||||
|
********************************
|
||||||
|
* *
|
||||||
|
* SYMBOLS REFERENCING SYSTEM *
|
||||||
|
* RESOURCES *
|
||||||
|
* *
|
||||||
|
* AUTHOR: BILL CHATFIELD *
|
||||||
|
* LICENSE: GPL *
|
||||||
|
* *
|
||||||
|
********************************
|
||||||
|
|
||||||
|
CH EQU $24 ;HORIZ CHAR POS (40-COL)
|
||||||
|
BASL EQU $28 ;BASE ADDR FOR CURR VIDEO LINE
|
||||||
|
KSWL EQU $38 ;KEYBOARD SWITCH LOW BYTE
|
||||||
|
KSWH EQU $39 ;KEYBOARD SWITCH HIGH BYTE
|
||||||
|
IN EQU $200 ;256-CHAR INPUT BUFFER
|
||||||
|
OURCH EQU $57B ;HORIZONTAL POSITION (80-COL)
|
||||||
|
OURCV EQU $5FB ;VERTICAL POSITION (80-COL)
|
||||||
|
|
||||||
|
* ProDOS Addresses
|
||||||
|
|
||||||
|
MLI EQU $BF00 ;ADDRESS OF MLI ENTRY POINT
|
||||||
|
|
||||||
|
* Memory Mapped Input/Output addresses C000 - CFFF
|
||||||
|
|
||||||
|
KBD EQU $C000 ;KEYBOARD DATA + STROBE
|
||||||
|
STOR80ON EQU $C001 ;ENABLE AUXILIARY MEM SWITCHING
|
||||||
|
CXROMOFF EQU $C006 ;ENABLE SLOT ROMS
|
||||||
|
CXROMON EQU $C007 ;TURN ON INTERNAL ROM
|
||||||
|
KBDSTRB EQU $C010 ;CLEAR KEYBOARD STROBE
|
||||||
|
ALTCHAR EQU $C01E ;>=$80 IF IN 80-COL
|
||||||
|
PAGE2OFF EQU $C054 ;TURN ON MAIN MEMORY
|
||||||
|
PAGE2ON EQU $C055 ;TURN ON AUXILIARY MEMORY
|
||||||
|
BASICIN EQU $C305
|
||||||
|
BINPUT EQU $C8F6
|
||||||
|
ESCAPING EQU $C918
|
||||||
|
NOESC EQU $C9B7 ;HANDLES KEY OTHER THAN ESC
|
||||||
|
INVERT EQU $CEDD ;80-col INVERT CHAR ON SCREEN
|
||||||
|
PICK EQU $CF01 ;80-col PICK CHAR OFF SCREEN
|
||||||
|
|
||||||
|
* Subroutines stored in ROM addresses D000 - FFFF
|
||||||
|
|
||||||
|
STROUT EQU $DB3A ;BAS? PRINT NULL-TERM STR IN AY
|
||||||
|
HEXDEC EQU $ED24 ;HEX-TO-DECIMAL CONVERSION
|
||||||
|
PRINTXY EQU $F940 ;MONITOR PRINT X & Y AS HEX
|
||||||
|
RDKEY EQU $FD0C ;READS 1 CHAR
|
||||||
|
KEYIN EQU $FD1B
|
||||||
|
RDCHAR EQU $FD35
|
||||||
|
GETLN EQU $FD6A
|
||||||
|
CROUT EQU $FD8E ;PRINT A CARRIAGE RETURN
|
||||||
|
PRBYTE EQU $FDDA ;MONITOR PRINT BYTE 2 HEX DIGITS
|
||||||
|
COUT EQU $FDED ;WRITE A CHARACTER
|
||||||
|
BELL EQU $FF3A ;SUBROUTINE TO BEEP
|
||||||
|
|
||||||
|
* Keyboard key code definitions
|
||||||
|
|
||||||
|
ESC EQU $9B ;ESC WITH HIGH BIT SET
|
||||||
|
RTARROW EQU $95 ;RIGHT ARROW WITH HIGH BIT SET
|
||||||
|
DELETE EQU $FF ;DELETE WITH HIGH BIT SET
|
||||||
|
BKSPACE EQU $88 ;BACKSPACE WITH HIGH BIT SET
|
||||||
|
|
||||||
|
* ProDOS command definitions
|
||||||
|
|
||||||
|
ON_LINE EQU $C5 ;ID FOR ON_LINE MLI SYSTEM CALL
|
||||||
|
|
Loading…
Reference in New Issue