Added files for viewing purposes

This commit is contained in:
markpmlim 2016-03-08 08:29:37 +08:00
parent f6a1b75e84
commit 159996a13d
25 changed files with 26030 additions and 2 deletions

2176
EDASM.SRC/ASM/ASM1.S Normal file

File diff suppressed because it is too large Load Diff

3389
EDASM.SRC/ASM/ASM2.S Normal file

File diff suppressed because it is too large Load Diff

3667
EDASM.SRC/ASM/ASM3.S Normal file

File diff suppressed because it is too large Load Diff

210
EDASM.SRC/ASM/EQUATES.S Normal file
View File

@ -0,0 +1,210 @@
Name : EQUATES.S
End of file : 7,281
This file was generated using the DiskBrowser utility with minimal editing.
It is meant for viewing purposes only.
**************************************************
* Symbol names ending with
* B - buffer
* F - flag
* P - pointer
* S - string (can be p,c or otherwise)
* T - table
*
* This would allow us to give more meaningful abbrv
* to symbol names
*
*=================================================
*
* Indices to access file control tables (FCT)
*
ObjFile EQU 0
ChnFile EQU 2
InclFile EQU 4
MacFile EQU 6
LstFile EQU 8
*
* There are flags which describes the
* characteristics of a symbol - ref pg 231
*
undefined equ $80
unrefd equ $40
relative equ $20
external equ $10
entry equ $08
macro equ $04
nosuchlabel equ $02
fwdrefd equ $01
*
* zero page usage
* NB. The contents of $60-$F1 are saved & will be
* restored by the Assembler on exit.
* Some of these locations are re-cycled i.e. they have a
* different meaning when use in another part of the code
*
Z60 EQU $60
BCDNbr EQU $60 ;src file line #s in BCD
StrtSymT EQU $63 ;start of symtable
EndSymT EQU $65 ;curr end of symtable
PassNbr EQU $67 ;pass 1=0, pass 2=1 pass 3=2
ListingF EQU $68 ;$80-LST ON
SubTtlF EQU $69 ;=$00,$40=SBTL, $FF=SBTL str
LineCnt EQU $6A ;# of printed lines
PageNbr EQU $6B
FileNbr EQU $6D
LogPL EQU $6E ;logical page len
PhyPL EQU $6F ;physical page len
SavIndX EQU $70 ;Temp location to save (X)
ByteCnt EQU $70 ;# of generated bytes so far
PrtCol EQU $71 ;Printing col
EIStack EQU $72 ;EdAsm Interpreter's stack ptr
CancelF EQU $73
NbrErrs EQU $74 ;# of errors
PrSlot EQU $76
AbortF EQU $77
SavIndY EQU $78 ;Temp location to save (Y)
SrcP EQU $79 ;Set to point to somewhere within src line
UnsortedP EQU $79 ;Ptr to a record of the unsorted aux work array
Src2P EQU $7B ;Copy of src ptr used during code listing
PC EQU $7D ;position/program counter
SortedP EQU $7D ;Ptr to a record of the sorted aux array
ObjPC EQU $7F ;PC for OBJ code store in mem
SymFBP EQU $7F ;Ptr to a symbol's flag byte field (use during pass1)
CodeLen EQU $7F ;curr len of code image of REL files (stored @ BOF)
AuxAryE EQU $7F ;Ptr to last end of sorted array
FileLen EQU $81 ;curr len of BIN/REL file
CurrORG EQU $83 ;curr origin addr
SymP EQU $85 ;Ptr to symbol
MnemP EQU $85 ;Ptr to mnenmonic table entry
Delimitr EQU $85 ;Double as delimiter
DTEndCol EQU $85 ;end index of DateTime str
StrType EQU $86 ;0=DCI -1=ASC
DTCurIdx EQU $86 ;curr index into DateTime str
MemTop EQU $87
TotLines EQU $89 ;3 bytes
VidSlot EQU $8C
SaveA EQU $8D
SaveY EQU $8E
SaveX EQU $8F
DskListF EQU $90 ;$00,$40,$80-list to txt file
LstDBIdx EQU $91 ;LST Data buf index, double as # of chars to write
WinLeft EQU $92 ;left & right edges
WinRight EQU $93 ;of 40-col window
X6502F EQU $94
HighMem EQU $95 ;HiMem of generated obj code
ExprAccF EQU $97 ;expression's accumulated flag bits
ColCnt EQU $97 ;curr print col
SortF EQU $98
NxtToken EQU $98 ;Flag to indicate nature of next char
LstCodeF EQU $99 ;Bits to control listing of machine code
SymRefCh EQU $99 ;Preceding char printed b4 symbol's addr
GMC EQU $9A ;$9A-$9D Generated Machine Code buf
IsFwdRef EQU $9A ;Forward ref bit was set
NumCols EQU $9B ;=2,4,6 # of print cols
SymIdx EQU $9C ;Save index into symbol record
ERfield EQU $9D ;Expr Result field
SymAddr EQU $9D ;Addr associated w/symbolicname
ValExpr EQU $9F ;value of expression
RLDEntP EQU $9F ;Ptr to RLD entry
WrkP EQU $A1 ;Work ptr to symbol table entry
JJJ EQU $9F ;Running vars used
III EQU $A1 ; during sorting
Length EQU $A3 ;len of inst => 1-1 byte, 2-2 bytes etc
ModWrdL EQU $A4 ;Permitted modes of a 65C02
ModWrdH EQU $A5 ; mnemonic/SW16 pseudo opcode
StrtIdx EQU $A3 ;Starting index of FOR loop
EndIdx EQU $A5 ;Ending Index of FOR loop
LenTIdx EQU $A6 ;Index into inst len table
Filler EQU $A7 ;byte used to fill reserved storage
SavLstF EQU $A7 ;Used to save List flags temporarily
GMCIdx EQU $A7 ;Used to index GMC buf during code generation
RadixCh EQU $A7 ;Char used to check radix during str2bin conversion
Jump EQU $A7 ;Gap btwn 2 elements
SavFByt EQU $A7 ;Save symbol's flag byte temporarily
BitsDig EQU $A8 ;# of bits/digit-use into bin/octal/hex conversion
LabelF EQU $A9 ;Instruction has a label field
RecCnt EQU $A9 ;Use to count the # of recs in aux array
NumRecs EQU $A9 ;Renamed above label
SubTIdx EQU $AA ;offset into a sub-table of opcode table
ZAB EQU $AB
ErrorF EQU $AC ;curr line is flagged as incorrect
ErrTIdx EQU $AC ;Used to index ErrInfo Table
msbF EQU $AD
J.TH EQU $AB ;offset/ptr to the j-th/i-th
I.TH EQU $AD ; elements of the aux array
EndianF EQU $AE ;little/big endian flag
Accum EQU $AF ;Main accumulator ($AF-$B0)
NewPC EQU $AF ;Used temporarily by DS directive
SymPJ EQU $AF
Ret816F EQU $B1 ;-1=16-bits,0-low 8-bits,1-high 8-bits
SymPI EQU $B1
RepChar EQU $B2 ;char used by REP directive
SymNbr EQU $B3 ;# of idfers declared as EXTRN/ENTRY (DEF/RE)
SymLen EQU $B3 ;len of symbolic name
SavSTS EQU $B3 ;Save start of symbol table
GblAbsF EQU $B4 ;Global Abs addr flag $00-ZDEF/ZREF; $01-DEF/REF
DummyF EQU $B5 ;dummy section flag
SavPC EQU $B6
SavObjPC EQU $B8
CodeImgLen EQU $B8
CondAsmF EQU $BA ;Conditional Assembly Flag $00,$40,$80
TabTIdx EQU $BB ;Index into Editor's tab table
SymFByte EQU $BC ;Symbol's curr flag byte
RelCodeF EQU $BD
DskSrcF EQU $BE ;-1=Disk src file, 0-mem src file
GenF EQU $BF ;N=1-suppress code gen,V=1-disk,V=0-mem
ObjDBIdx EQU $C0 ;Gen obj code buf index, double as # of bytes to write
IDskSrcF EQU $C1 ;msb=on - stmts fr INCLUDE file
MacroF EQU $C2 ;0=not using macros,$40,$06,$04,$80-macro file opened
MParmCnt EQU $C3
MacArg EQU $C4 ;macro argument 0-9
ZC5 EQU $C5 ;not used
FCTIndex EQU $C6 ;0,2,4,6,8 - Index of File Control tables (FCT)
PathP EQU $C7 ;Pathname ptr
SrcPathP EQU $C9 ;Curr src filename ptr
RelExprF EQU $CB ;If non-zero, rel addr expr/sub-expr
SavSTE EQU $CC ;temp save for hibyte of EO symbol table
SavSEF EQU $CC ;prev subexpr's RelExprF
NewF EQU $CD ;$80-new file is being assembled
Msg2P EQU $CE ;message ptr
Lower8 EQU $CE ;Low 8 bits of 16-bit val
ParmBIdx EQU $CE ;Index into parm string passed by EI
OnOffSW EQU $CE ;$80=ON,$00=FF
SrcP3 EQU $CE ;Ptr to partial src line-1
ZCE EQU $CE
ZCF EQU $CF
SymNodeP EQU $CE ;Use in printing of symbol table
TotCnt EQU $CF ;total # of bytes generated
RLDEnd EQU $D0 ;Points to end of Rel dict table (build downwards)
ZD2 EQU $D2 ;Not used
SavGenF EQU $D4 ;Save GenF when DSECT is declared
SBufP EQU $D5 ;ptr to SBuf/IBuf data buf
MsgP EQU $D5 ;Message ptr
HashIdx EQU $D7
PrvSymP EQU $D8 ;Ptr to previous symbol's node
NxtSymP EQU $DA ;Ptr to next symbol's node
NumCycles EQU $DD ;instruction's # of cycles
NbrWarns EQU $DE ;2 bytes used
*
* These flags are for the LST directive
* $00-OFF, non-zero=ON
*
LstFlags EQU $E0
LstCyc EQU $E0 ;cycle times (OFF)
LstUnAsm EQU $E1 ;unassembled source (ON)
LstExpMac EQU $E2 ;expansion of macro lines (ON)
LstWarns EQU $E3 ;warnings (ON)
LstGCode EQU $E4 ;generate obj code (OFF)
LstASym EQU $E5 ;Alphabetic symbol (ON)
LstVSym EQU $E6 ;Value-ordered Symbol (OFF)
Lst6Cols EQU $E7 ;6-col symbol dump (OFF)
ZE8 EQU $E8 ;Was init but not used
SW16F EQU $E9
ZPSaveY EQU $EA
RndF EQU $EC ;$80-use random data, $00-use filler byte
ErrNbr4 EQU $EB ;Err # x 4=index
*
DecimalS EQU $ED ;'0000' 4-byte ASCII str ($ED-$F0)
ZPRetAdr EQU $EF
MacPNLen EQU $F1 ;Len byte of Maclib prefix/Macro file PathName
*=================================================

24
EDASM.SRC/ASM/EXTERNALS.S Normal file
View File

@ -0,0 +1,24 @@
Name : EXTERNALS.S
End of file : 884
This file was generated using the DiskBrowser utility with minimal editing.
It is meant for viewing purposes only.
**************************************************
* EXTERN labels used by Assembler
* The 1024-byte buffers are used by ProDOS8 for I/O
*
X0800 EQU $0800
X6E00 EQU $6E00 ;1024-byte buf for MACRO defn file if List to File
MacExpBuf EQU $7200 ;$7200-$727F Use to expand macro lines
MacStrBuf EQU $7280 ;$7280-$72FF Use to store string parms passed
OLDataB EQU $7300 ;Online data buf
LstDBuf EQU $7300 ;256-bytes circular data buf for LST file
X7400 EQU $7400 ;1024-bytes buf for LST/MACRO file
ObjDataB EQU $BD00 ;128-byte data buf for obj code
AsmParmB EQU $BD80 ;128-byte buf use to pass by editor to pass parm to asmbler
XA100 EQU $A100 ;1024-bytes buf for OBJ file
XA500 EQU $A500 ;1024-bytes buf for SRC file
*XA900 EQU $A900 ;1024-bytes buf for INCLUDE file
*
HeaderT EQU $BC00 ;Table of ptrs to 1st node of singly linked lists
*=================================================

782
EDASM.SRC/BUGBYTER/BB1.S Normal file
View File

@ -0,0 +1,782 @@
Name : BB1.S
End of file : 14,078
This file was generated using the DiskBrowser utility with minimal editing.
It is meant for viewing purposes only.
ORG $0800
MSB ON
; BB (ProDOS version) was assembled @ $0800
; but may be run from any location starting
; from $0800 as long as there is enough memory
;
BBSTART EQU *
SEC
BCS SkipSWA
;
XUNDSW DB $80 ;Allow BB to call ProDOS
Btn0SW DB $00 ;Use Paddle button 0 for trace/suspend (ON=$80)
PDL0SW DB $80 ;Use Paddle 0 for trace rate
KBDPOLL DB $00 ;Tr/SS keyboard polling (msb on=OFF)
SNDSW DB $80 ;$80-ON
CYCLEC DW $0000 ;Cycle Counter
BARTC DW $FFFF ;Beginning & Ending Addresses
EARTC DW $FFFF ; of Real Time Code
;
IBuff EQU * ;$080E-$088D (128 chars)
SkipSWA LDA #iRTS
STA Z2F
JSR Z2F
RetHere EQU *
TSX
LDY STACK,X ;Hi
DEX
LDA STACK,X
SBC #>RetHere-1
STA Z44
BCS L0824
DEY
L0824 STY Z44+1 ;($44,$45)=load addr
;
CLC
ADC #>L08CF
STA MONPC ;bugbyter's main entry point
BCC L082E
INY
L082E STY MONPC+1
;
CLC
ADC #>BBDATA-L08CF ;#$46
STA Z46 ;Point to end of bugbyter's program code
TYA
ADC #<BBDATA-L08CF ;#$17
STA Z46+1
;
; This part of the code modifies the instruction @
; the load address to a JMP to BugByter's main entry point
;
LDY #0
LDA #iJMP
L083E STA (Z44),Y
LDA MONPC,Y ;Get load address
INY
CPY #3
BCC L083E
;
LDA Z44+1 ;Only need to modify the Hi byte because BB is
SBC #<BBSTART ; assembled @ $0800 which is the lowest mem page
STA Z44+1 ;($44,45)=offset to be added to abs addrs
L084E BCC L084E ;BB will hang if run addr below $800
;
; On fall thru, (MONPC) is pointing @ BugByter's main entry
; point. Basically, we will be looking for $X9,$XC,$XD,$XE
; $XF are assummed to be abs opcodes
; $29,$49,$69 etc are 2-byte immediate opcodes
;
L0850 LDY #0
LDA (MONPC),Y ;Get instruction's opcode
TAX ;save it temporarily
AND #%00011111 ;xxxx xxxx -> 000x xxxx
CMP #%00011001 ;Checking for opcodes $19,$39,$59 etc
BEQ L0874
AND #$0F ;0000 xxxx
CMP #%00001100 ;This should cover ($XC,$XD,$XE)
BCS L0874
AND #%00001101 ;0000 xx0x
CMP #%00001000 ;$X8 opcodes (1-byte)
BEQ L0890 ;NB: (Y)=0
TXA ;Restore opcode
BEQ L0890 ;BRK instruction
CMP #iJSR
BEQ L0874
AND #%10011111 ;x00x xxxx (Y)=0
BNE L088F ;Assume all are 2-byte instructions
BEQ L0890 ;($40,$60) always
;
; Handle 3-byte 65C02 instructions
; We only need to consider references to memory
; locations btwn BBSTART-BBDATA ($0800-$2150)
;
L0874 INY ;Skip opcode & low byte of abs addr
INY
LDA (MONPC),Y ;Abs addr's hi byte
CMP #<BBSTART ;Modify abs addrs btwn $0800-$2400
BCC L0890
CMP #BBEND+$100/256
BCS L0890
;
DEY
LDA (MONPC),Y ;Get abs addr's lobyte
ADC Z44 ;Add offset to get
STA (MONPC),Y ; relocated addr
INY
LDA (MONPC),Y
ADC Z44+1
STA (MONPC),Y
DEY ;Indexing lobyte
;
; The code in this area will be overwritten by BB.
; Saved area (67 bytes) for instructions and their format bytes
; when real BP addrs are set
;
L088F EQU *
INY
L0890 SEC ;Advance our PC
TYA
ADC MONPC
STA MONPC
BCC L089A
INC MONPC+1
;
L089A CMP Z46 ;Are we done with modifying
LDA MONPC+1
SBC Z46+1 ; all the abs addrs?
BCC L0850 ;nope
;
; Now, modify all JMP addrs of BB's cmd table
;
LDA Z44 ;NB:C set on fall thru
ADC #>CMDTBL-1
STA MONPC
LDA Z44+1
ADC #<CMDTBL
STA MONPC+1
;
LDY #0
L08B0 LDA (MONPC),Y ;Add offset to
ADC Z44
STA (MONPC),Y
INY
LDA (MONPC),Y
ADC Z44+1
STA (MONPC),Y ; the JMP addrs
INY
CPY #NumJmps
BCC L08B0
;
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
;=================================================
; MAIN ENTRY POINT
;
L08CF LDA OURCTLYV ;Ctrl-Y vector
STA USRADR+1
LDA OURCTLYV+1
STA USRADR+2
;
LDA BRKV ;Save curr BREAK vector
STA SVBRKV
LDA BRKV+1
STA SVBRKV+1
LDA OURBRKV ; & use BB's
STA BRKV
LDA OURBRKV+1
STA BRKV+1
;
LDA #>MONZ ;RESET vector
STA SOFTEV
LDA #<MONZ
STA SOFTEV+1
LDA #$5A
STA PWREDUP
LDX #>BBStack ;BB's stack usage ($100-$11F)
TXS
JSR SwapZP
JSR DRegHdr ;Show registers
JSR L0ADD ;Show all SDs
;
; Display copyright notice
;
DCPYRCMD LDX #$26
L0910 LDA COPYRK,X
STA SLIN23+1,X
DEX
BPL L0910
JMP BBGetLn
;=================================================
; BB's ctrl-Y Handler
;
WrmStrt JSR SwapZP
L091F JSR DRegHdr
L0922 JSR L0ADD ;Show all SDs
XDelLin JMP DelLin
;=================================================
; Execute cmd
;
XCmd LDX INPUTLEN ;null entry?
BEQ XDelLin
BIT MemPgDSW ;Mem Page being displayed?
BMI ParseCmd ;Yes
JSR HndlCmd
BEQ ParseCmd ;No hit
;
STX Z40 ;Entry #
TXA
ASL
TAX
LDA CMDTBL+1,X
PHA
LDA CMDTBL,X
PHA
RTS
;
EqSign INY
INY
JSR Bin2Dec
JMP L0982
;
; Convert dec rep to hex rep
;
PlusDecS LDA #$00
BEQ L0953 ;always
NegDecS LDA #$80
L0953 STA Z40
INY
JSR Dec2Bin ;First convert dec str to its binary value
LDA IBuff,Y
CMP #'='
BNE L09D8 ;Input err
INY
INY
LDA #'$'
STA (ScrLoc),Y
INY
BIT Z40
BPL DspHexS ;+ve dec->hex
;
SEC
LDA #0 ;-ve dec->hex
SBC Z3E
STA Z3E
LDA #0
SBC Z3E+1
STA Z3E+1
;
DspHexS LDA Z3E+1 ;Now convert binary value
JSR PUTHEX ; to its hex rep &
LDA Z3E
JSR PUTHEX ; show on cmdln SD
;
L0982 JSR CPY2IB ;Copy scrn ln to input buffer
JMP BOCL
;
ParseCmd LDA #>SLIN23
STA ScrLoc
LDA #<SLIN23
STA ScrLoc+1
;
LDY #0 ;Get 1st char of
LDA IBuff,Y ; user's input
CMP #'+'
BEQ PlusDecS
CMP #'-'
BEQ NegDecS ;DecS -> Bin value -> HexS
CMP #'$'
BNE L09A2
INY ;Skip over $
;
L09A2 JSR Hex2Bin ;Do we have a hexdec str?
BCS InputErr ;No
LDA IBuff,Y
CMP #'='
BEQ EqSign ;HexS -> DecS
;
CMP #':' ;Addr:
BEQ L0A16 ;Mem Page Display or assignment
;
BIT MemPgDSW
BMI InputErr
JSR ToUpper
;
; Debugging modes viz TRACE, SINGLE STEP, EXECUTE
; AddrT, AddrS, AddrG, AddrJ
;
CMP #'T'
BNE L09C1
JMP TKEY1
;
L09C1 CMP #'S'
BNE L09C8
JMP SKEY1
;
L09C8 CMP #'G'
BNE L09CF
JMP GKEY1
;
L09CF CMP #'J'
BNE L09D6
JMP JKEY1
; AddrL
L09D6 CMP #'L' ;DisAssembly
L09D8 BNE InputErr
JMP LKEY1
;
InputErr JSR BELL2
JMP BOCL
;=================================================
; Parse the cmd line for keywords
; Ret Z=1 no hit, Z=0 hit
;
HndlCmd LDX #$00
LDA CMDTBLP
STA Z40PTR ;points @ table of COMMAND keywords
LDA CMDTBLP+1
STA Z40PTR+1
;
L09EF LDY #0
LDA (Z40PTR),Y ;Get entry len
BEQ L0A15 ;end of table
STA Z42
L09F7 INY
CPY Z42
BEQ L0A14 ;got a hit
LDA IBuff-1,Y
JSR ToUpper
CMP (Z40PTR),Y
BEQ L09F7 ;keep searching
;
INX ;cmd # (to be used later as an index)
CLC
LDA Z40 ;bump to next entry
ADC Z42
STA Z40
BCC L09EF
INC Z41
BCS L09EF ;always
L0A14 DEY ;Z=0 to flag a hit
L0A15 RTS
;
; An assignment or memory page display
;
L0A16 INY
STY ALTYSV
CPY INPUTLEN
BEQ L0A8F ;-> display mem page
;
; Altering mem contents
;
JSR SVMONPC
LDA Z3E
STA MONPC
STA IMM1+1
LDA Z3E+1
STA MONPC+1
STA IMM1+2
;
JSR DoAsm ;Try to assemble inst
JSR RSTMONPC
LDY ALTYSV
DEY
L0A3A INY
L0A3B CPY INPUTLEN ;End of input?
BEQ L0AB8 ;Yes, chk if a mem page display is needed
;
LDA IBuff,Y
CMP #SPACE
BEQ L0A3A ;Skip blanks
;
; Memory cell assignment. Altering the contents of mem
; Including 6502 instr & operands
;
CMP #'"'
BEQ L0A5C
CMP #'''
BEQ L0A60 ;-> string assignment
;
JSR Hex2Bin
BCS InputErr
LDA Z3E
JSR L0AC3 ;Assign to mem
JMP L0A3B ;Loop back for more
;
; String assignment
;
L0A5C LDA #$00
BEQ L0A62 ;always
L0A60 LDA #$80
L0A62 STA HIGHB ;string type
L0A65 INY
CPY INPUTLEN
BEQ L0AB8
LDA IBuff,Y
CMP #'/' ;Accepts next char verbatim
BNE L0A7E
INY
CPY INPUTLEN
BEQ L0AB8
LDA IBuff,Y ;Get ASCII char
JMP L0A86
;
L0A7E CMP #'"' ;Check for closing quotes
BEQ L0A3A
CMP #'''
BEQ L0A3A
;
L0A86 EOR HIGHB
JSR L0AC3 ;Assign to mem
JMP L0A65 ;Next char
;
; Do a mem page display
;
L0A8F LDA Z3E ;Starting addr
STA MBStrtAdr
LDA Z3E+1
STA MBStrtAdr+1
BIT MemPgDSW
BMI L0AA1
JSR ClrScrn ;Blank entire scrn if necessary
;
L0AA1 JSR L1D23 ;Display mem page
LDA #$80
STA MemPgDSW
LDA IMM9+1
STA IMM1+1
LDA IMM9+2
STA IMM1+2
JMP L0922
;
L0AB8 BIT MemPgDSW
BPL L0AC0
JSR L1D23
;
L0AC0 JMP L0922
;=================================================
; Change contents of mem cell
;
L0AC3 PHA
STY ALTYSV
JSR SwapZP
PLA
IMM1 STA $FFFF ;curr Mem loc
JSR SwapZP
LDY ALTYSV
INC IMM1+1
BNE L0ADC
INC IMM1+2
L0ADC RTS
;=================================================
; Update BB SDs
;
L0ADD BIT MasDSW
BPL L0ADC
BIT MemPgDSW
BMI L0ADC
;
JSR DBBREGS ;Show (regs)
JSR DMONPC ;Show PC
JSR DREGS
JSR L14C3 ;Show Stack SD
JSR L151A ;Show MC SD
JMP L1719 ;Show BP SD
;=================================================
; ($0AF9) BB Command Level
;
BBGetLn JSR CLRIB
LDY #1
STY Z40
LDX #$00
STX Z41
STX Z42
STX INSFLAG
BEQ L0B36 ;always
;
; This rtn allows user to type up to 128 chars using the
; 39-char CmdLn SD. We may think of this SD as a 39-char
; wide window into the IBuff which can store up to 128 chars
;
; (Z40) - cursor posn within cmdln SD (1-39)
; (Z41) - IBuff index of char at cursor posn
; (Z42) - IBuff index of char at posn 1 of cmdln SD
; Posn 0 of SD is the colon prompt
;
DelLin JSR CLRIB
BOCL LDX #0
STX Z42
LDY #1
CMDCLP CLC
InsChar ROR INSFLAG ;bit7=0 => overwrite mode
L0B18 STY Z40 ;cursor posn
STX Z41 ;index of char under cursor
;
LDY #1 ;Skip past colon
LDX Z42 ;Start refresh of cmdln SD fr here
L0B20 LDA IBuff,X
CMP #SPACE
BCS L0B29
AND #$3F ;Convert to inverse char (00-3F)
L0B29 STA SLIN23,Y
INX
INY
CPY #40 ;Only 1-39 chars are displayed
BNE L0B20 ;next char
;
LDY Z40 ;curr cursor posn
LDX Z41 ;index into IBuff
L0B36 LDA SLIN23,Y
AND #$3F ;$00-$3F
ORA #$40 ;$40-$7F
STA SLIN23,Y ;Flash the char
LDA #':' ;Put a colon in front
STA SLIN23 ; of cmdln SD
;
WAITK1 LDA KBD
BPL WAITK1
;
STA KBDSTROBE
CMP #CTRLX
BEQ DelLin ;Clear every thing and re-start input
CMP #CTRLB
BEQ BOCL
CMP #TAB
BEQ InsChar ;Proceed to set INSERT flag (NB. C=1)
CMP #ESC
BNE L0B6C
CPX #0 ;Was it the 1st char?
BNE BOCL ;No, move cursor to BO input line
;
LSR MemPgDSW ;msb=0
BIT MemPgDSW ;Was MEM PAGE SD displayed?
BVC L0B36 ;No, get 1st char (Y=1, X=0)
JMP L091F
;
L0B6C CMP #SPACE ;Was space bar pressed?
BNE L0B77
CPX #0 ;Was 1st char a space?
BNE L0B77 ;char is a space but it's not 1st char
JMP DNxtMem ;Yes
;
L0B77 CMP #CURSL ;BS key
BEQ ML1CH
CMP #DELCH ;Delete key
BEQ ML1CH
;
CMP #CURSR ;FS
BEQ MR1CH
CMP #CTRLD
BEQ DELCHR
CMP #CTRLC
BEQ ASISST
CMP #CTRLN
BEQ EOCL
CMP #CR
BEQ L0BFA ;Accept input
;
CMP #SPACE ;If ctrl-char,
BCC L0B36 ; ignore input char
BIT INSFLAG ;Insert mode?
BPL Add2IB ;No, Overwrite mode
JSR MVCHARS ;Move chars forward
;
Add2IB STA IBuff,X ;Replace old char w/new one
L0BA2 CPX #127 ;maxlen?
BNE L0BAC
JSR BELL2 ;Too many chars
JMP CMDCLP
;
L0BAC INX
CPY #39 ;Is it at the edge of SD?
BNE L0BB4 ;No, proceed to incr (Y)
INC Z42
DB $24 ;Y=39 on fall thru
L0BB4 INY
JMP L0B18
;
MR1CH CLC
ROR INSFLAG ;Set overwrite mode
BPL L0BA2 ;always
;
ML1CH DEX
BPL L0BC4
JMP BOCL ;(X) was 0
L0BC4 CPY #1 ;Is cursor @ BO SD?
BNE L0BCB ;No, just decr (Y)
DEC Z42 ;Yes
DB $24 ;NB. On fall thru (Y) = 1
L0BCB DEY
JMP CMDCLP
;
; Enter next key verbatim
;
ASISST LDA #$20 ;ASCII space
STA SLIN23,Y
WAITK2 LDA KBD
BPL WAITK2
STA KBDSTROBE ;Clear key latch
STA IBuff,X ;Store key as it is
BMI MR1CH ;always
;
DELCHR STX Z40 ;Save temporarily
L0BE3 CPX #127 ;maxlen
BEQ L0BF0
LDA IBuff+1,X ;Shift chars left
STA IBuff,X ; within input buffer
INX
BNE L0BE3 ;Always since (X) < 128
L0BF0 LDA #SPACE ;Replace with space
STA IBuff,X
LDX Z40 ;Restore
JMP CMDCLP
;
; CR - Accept user input
;
L0BFA LDA #SPACE
STX INPUTLEN
L0BFF STA SLIN23,Y ;Clear rest of scrn line
INY
CPY #40
BNE L0BFF
;
JSR ClrIBZ ;Clear rest of buffer
JMP XCmd
;
EOCL LDX #127
L0C0F LDA IBuff,X ;Trailing spaces
CMP #SPACE
BNE L0C19
DEX
BPL L0C0F
L0C19 INX
BPL L0C1D
DEX ;(X) was 128, so set to 127
;
L0C1D TXA
TAY ;(Y)=(X)
LDA #0
CPX #39
BCC L0C2A
;
TXA
LDY #38 ;Y becomes 39 on looping back
SBC #38
;
L0C2A STA Z42 ;index of char @ posn 1 of SD
INY
JMP CMDCLP
;=================================================
; ($0C30) Fill the input buffer with 128 blanks
;
CLRIB LDX #0
LDA #SPACE
ClrIBZ STA IBuff,X
INX
BPL ClrIBZ
RTS
;=================================================
; Move chars forward in IBuff to make space
; for char to be inserted
;
MVCHARS PHA ;save char to be inserted
STX Z40 ;curr index
LDX #127
L0C40 CPX Z40 ;finish?
BEQ L0C4D ;done
LDA IBuff-1,X
STA IBuff,X
DEX
BPL L0C40
L0C4D PLA
LDX Z40
RTS
;=================================================
; ($0C51) Display next mem location on cmdln SD
;
DNxtMem LDA #>SLIN23
STA STOSCR+1
LDA #<SLIN23
STA STOSCR+2
LDA IMM1+2
JSR STOHEX
LDA IMM1+1
JSR STOHEX
;
LDA #':'
STA SLIN23,Y
JSR CPY2IB
LDY #6 ;scrn offset into cmdln SD
LDX #5 ;Index into IBuff
JMP L0B36
;=================================================
; ($0C76) Convert a hex str into its binary value
; Return result in ($3E,$3F)
;
Hex2Bin LDA #$00
STA Z3E ;result
STA Z3E+1
STY Z43
L0C7E LDA IBuff,Y
JSR Add2Bin
BCS L0C8C ;char is not a hex digit
INY
CPY INPUTLEN
BNE L0C7E ;convert next char
L0C8C CPY Z43
BNE L0CB1 ;--> C=0
RTS
;=================================================
; ($0C91) Convert a ASCII hex digit into its binary
; value & combine it into with the partial result
; ($3E,$3F) - partial result
; C=1 - (A) is not an ASC hex char
; (A) & (X) - changed
;
Add2Bin EOR #'0' ;Change numeric char into its binary value
CMP #10
BCC L0C9F ;Was ASCII '0'-'9';now $00-$09
ADC #$88 ;Adjust
ORA #$20
CMP #$FA ;$FA-$FF (ASCII 'A'-'F')
BCC L0CB3 ;On fall thru (A)=$0A-$0F
;
L0C9F AND #$0F ;Mask off upper nybble
STA Z44 ;$00-$0F
LDX #4
LDA Z3E ;Shift to accommodate
L0CA7 ASL ; the incoming value
ROL Z3E+1
DEX
BNE L0CA7
ORA Z44 ;Combine it
STA Z3E
L0CB1 CLC
DB $24
L0CB3 SEC ;Invalid numeral
RTS
;=================================================
; ($0CB5) Display the topmost line of column
; and the break point headers
;
DRegHdr BIT MasDSW
BPL L0CE8
JSR ClrScrn ;Clear entire screen if necessary
LDX #'C' ;cycle
STX SLIN00
DEX
STX SLIN00+8 ;"B" - break point reg
LDA #'R' ;rate
STA SLIN00+5
;
L0CCB LDX L2105 ;Set (ScrLoc)
JSR VTABX
;
LDY #39
L0CD3 LDA REGSK-11,Y
STA SLIN00,Y
LDA BPHDR-11,Y ;BP header
STA (ScrLoc),Y
DEY
CPY #10
BNE L0CD3
;
LDA #$00
STA MemPgDSW
L0CE8 RTS

1590
EDASM.SRC/BUGBYTER/BB2.S Normal file

File diff suppressed because it is too large Load Diff

1903
EDASM.SRC/BUGBYTER/BB3.S Normal file

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,146 @@
Name : EQUATES.S
End of file : 2,654
This file was generated using the DiskBrowser utility with minimal editing.
It is meant for viewing purposes only.
;---------------------------------------------------------;
; Disassembled with The Flaming Bird Disassembler ;
; (c) Phoenix corp. 1992,93 - All rights reserved ;
; References: ;
; Neil Parker's 6502 instruction set ;
; Apple II Monitor ;
; Appendix C pg 203 of WorkBench Manual ;
;---------------------------------------------------------;
WNDLFT EQU $20
WNDWDTH EQU $21
WNDTOP EQU $22
WNDBTM EQU $23
CH EQU $24
CV EQU $25
BASL EQU $28
BASH EQU $29
CSWL EQU $36
Z2F EQU $2F
;
DSECT
ORG $3A
MONPC EQU *
PZWS EQU *
Z3APTR DS 2
ScrLoc DS 2
Z3E DS 2
Z40 DS 1
Z41 DS 1
Z40PTR EQU Z40
Z42 DS 1
Z43 DS 1
Z44 DS 1
Z43PTR EQU Z43
CPURegs EQU *
HACCUM DS 1 ;$45-$49
HXREG DS 1
HYREG DS 1
HFLAGS DS 1
HSTAKP DS 1
Z46 EQU HXREG
DEND
;
; Apple keycodes
;
CTRLB EQU $82
CTRLC EQU $83
CTRLD EQU $84
BEL EQU $87
CURSL EQU $88 ;ctrl-H
TAB EQU $89
CR EQU $8D
CTRLN EQU $8E
CURSR EQU $95 ;ctrlU
CTRLX EQU $98
ESC EQU $9B
SPACE EQU $A0
DELCH EQU $FF
;
STACK EQU $0100
BBStack EQU $011F
INBUF EQU $200 ;input buffer for BI
DOSWrm EQU $03D0 ;ProDOS warm start vector
BRKV EQU $03F0 ;BREAK vector
SOFTEV EQU $03F2 ;reset vector
PWREDUP EQU $03F4
USRADR EQU $03F8 ;ctl-y handler
;
DSECT
ORG $400
SLIN00 DS 40 ; $0400
SLIN08 DS 40 ; $0428
SLIN16 DS 40 ; $0450
SHOLA0 DS 8 ; $0478..$047F
SLIN01 DS 40 ; $0480
SLIN09 DS 40 ; $04A8
SLIN17 DS 40 ; $04D0
SHOLA1 DS 8 ; $04F8..$04FF
SLIN02 DS 40 ; $0500
SLIN10 DS 40 ; $0528
SLIN18 DS 40 ; $0550
SHOLA2 DS 8 ; $0578..$057F
SLIN03 DS 40 ; $0580
SLIN11 DS 40 ; $05A8
SLIN19 DS 40 ; $05D0
SHOLA3 DS 8 ; $05F8..$05FF
SLIN04 DS 40 ; $0600
SLIN12 DS 40 ; $0628
SLIN20 DS 40 ; $0650
SHOLA4 DS 8 ; $0678..$067F
SLIN05 DS 40 ; $0680
SLIN13 DS 40 ; $06A8
SLIN21 DS 40 ; $06D0
SHOLA5 DS 8 ; $06F8..$06FF
SLIN06 DS 40 ; $0700
SLIN14 DS 40 ; $0728
SLIN22 DS 40 ; $0750
SHOLA6 DS 8 ; $0778..$077F
SLIN07 DS 40 ; $0780
SLIN15 DS 40 ; $07A8
SLIN23 DS 40 ; $07D0
SHOLA7 DS 8 ; $07F8..$07FF
DEND
;
iJSR EQU $20
iRTI EQU $40
iJMP EQU $4C
iRTS EQU $60
iNOP EQU $EA
;
; BI & ProDOS
;
DOSCMD EQU $BE03
PRINTERR EQU $BE0C
PRODOS8 EQU $BF00
;
; I/O Switches
;
KBD EQU $C000
KBDSTROBE EQU $C010
SPKR EQU $C030
TXTCLR EQU $C050
TXTSET EQU $C051
MIXCLR EQU $C052
MIXSET EQU $C053
TXTPAGE1 EQU $C054
TXTPAGE2 EQU $C055
LORES EQU $C056
HIRES EQU $C057
BUTN0 EQU $C061 ;OA key (Paddle Button 0)
PADDL0 EQU $C064
PTRIG EQU $C070
;
; Monitor
;
MONZ EQU $FF69
;
; BB uses 32 bytes of stack space ($100-$11F)
; It is assembled @ $0800 but may be relocated
; to anywhere in memory ($0800-$95FF) as long there
; sufficient mem
;

247
EDASM.SRC/COMMONEQUS.S Normal file
View File

@ -0,0 +1,247 @@
Name : COMMONEQUS.S
End of file : 6,161
This file was generated using the DiskBrowser utility with minimal editing.
It is meant for viewing purposes only.
CHR ";"
;=================================================
; Equates used by EdAsm's modules
;
; ASCII keycodes
;
CTRLA EQU $01
CTRLB EQU $02
CTRLC EQU $03
CTRLD EQU $04
CTRLE EQU $05
CTRLF EQU $06
BEL EQU $07
BS EQU $08
TAB EQU $09
FF EQU $0C
CR EQU $0D
CTRLN EQU $0E
CTRLO EQU $0F
CTRLQ EQU $11
CTRLR EQU $12
CTRLS EQU $13
CTRLT EQU $14
CTRLU EQU $15
CTRLV EQU $16
CTRLW EQU $17
CTRLX EQU $18 ;cancel
ESCAPE EQU $1B
SPACE EQU $20
UNDERSCORE EQU $5F
DEL EQU $7F
;=================================================
; filetypes
;
TXTtype EQU $04
BINtype EQU $06
DIRtype EQU $0D
RELtype EQU $FE
SYStype EQU $FF
;=================================================
; Apple ][ Standard Zero page
;
WNDWDTH EQU $21
CH EQU $24
CV EQU $25
BASL EQU $28
InvFlg EQU $32
Prompt EQU $33
CSWL EQU $36 ;Output hook
KSWL EQU $38 ;Input hook
A1 EQU $3C
A2 EQU $3E
A4 EQU $42
;=================================================
; These zpage locations are referenced by 2 or
; more of EdAsm's modules
;
LoMem EQU $0A ;=$0801
TxtBgn EQU $0A ;Reg5
TxtEnd EQU $0E ;Reg7
HiMem EQU $0C ;=$9900 Not used by EDASM.ASM
StackP EQU $49 ;Save area for H/W stack ptr
VideoSlt EQU $50 ;=$Cs where s=1-3 (if 80-col video card present)
FileType EQU $51 ;filetype
ExecMode EQU $53 ;Exec mode
PtrMode EQU $54 ;=$80,$00 - Printer ON/OFF
TabChar EQU $5F ;Set by Editor
PrColumn EQU $61 ;curr print col
UserTabT EQU $68 ;$68-$71 User defined Table table
PrintF EQU $73 ;-1=Print Cmd 0=List Cmd
StackP2 EQU $73 ;Save area for H/W stack ptr on fatal err
SwapMode EQU $74 ;Split-buf mode 0-normal,1=buf1,2=buf2
CaseMode EQU $75 ;ucase/lcase
CmdDelim EQU $78 ;Cmd Delimiter/Separator
TruncF EQU $79 ;=$FF-truncate comments
;=================================================
X2000 EQU $2000 ;Load & Exec addr of SYS Files
LoadAdrEd EQU $8900 ;Load Addr of Editor Module
;=================================================
; 1024-byte I/O buffers for ProDOS8
;
XA900 EQU $A900
XAD00 EQU $AD00
;=================================================
; Edasm Global Page
; Used to pass parameters btwn EdAsm's
; modules viz Editor, Assembly & Linker
; The EI must be resident all the times
; EdAsm Interpreter's Global Page
; Used to pass parameters btwn EdAsm's
; modules viz Editor, Assembly & Linker
; The EI must be resident all the times
;
XBD00 EQU $BD00 ;General Purpose 128-byte buffers
XBD80 EQU $BD80 ; used by Edasm's modules
XBE00 EQU $BE00 ;$BE00-$BE3F (curr Pathname)
DevCtlS EQU $BE40 ;($BE40-$BE61) Init to $C3 if 80-col card present
TabTable EQU $BE60 ;$BE60-$BE62
DateTime EQU $BE64 ;$BE64-$73
EdAsmDir EQU $BE79 ;Where EDASM lives
PrtError EQU $BEFC ;EdAsm Interpreter error message rtn
;=================================================
; Apple ][
;
Stack EQU $0100
InBuf EQU $0200
TxBuf2 EQU $0280
SOFTEV EQU $03F2 ;RESET vector
PWREDUP EQU $03F4
USRADR EQU $03F8 ;ctrl-Y vector
;=================================================
; ProDOS 8 Global Page
;
PRODOS8 EQU $BF00
LASTDEV EQU $BF30
BitMap EQU $BF58
P8DATE EQU $BF90
P8TIME EQU $BF92
MACHID EQU $BF98
SLTBYT EQU $BF99 ;Slot ROM map
CMDADR EQU $BF9C ;last MLI call return address
MINIVERS EQU $BFFC ;minimum interpreter version
IVERSION EQU $BFFD ;interpreter version
;=================================================
; Soft Switches
;
KBD EQU $C000
CLR80VID EQU $C00C
KBDSTROBE EQU $C010
BUTN3 EQU $C060
BUTN2 EQU $C063
RDBANK2 EQU $C080 ;Read only RAM bank 2; no write
ROMIN2 EQU $C081 ;Read ROM/Write RAM bank 2 (RR)
RDROM2 EQU $C082 ;Read ROM; no write
LCBANK2 EQU $C083 ;Read/Write RAM bank 2 (RR)
BASICINT EQU $C300
XC30B EQU $C30B ;card identification
XC30C EQU $C30C
;
XD000 EQU $D000 ;LC Bank2 - SW16 or Asm's Print Symbol Table
BASCLD EQU $E000 ;AppleSoft ColdStart
;=================================================
; Apple ][ Monitor Entry Points
;
SWEET16 EQU $F689 ;Original IntegerBASIC ROM entry point
PRNTAX EQU $F941
PRBLNK EQU $F948
INIT EQU $FB2F
BELL1 EQU $FBDD
VTABZ EQU $FC24
HOME EQU $FC58
CLREOL EQU $FC9C
WAIT EQU $FCA8
RDKEY EQU $FD0C
RDCHAR EQU $FD35
GETLN EQU $FD6A ;input line w/prompt
CROUT EQU $FD8E ;issue carriage return
COUT EQU $FDED ;output char via user's I/O
COUT1 EQU $FDF0 ;output via video screen
MOVE EQU $FE2C
SETNORM EQU $FE84
SETKBD EQU $FE89
SETVID EQU $FE93
PRERR EQU $FF2D
MON EQU $FF65
MONZ EQU $FF69
IRQV EQU $FFFE
;=================================================
;
; SW16 registers when using 6502 instructions
;
Reg0 EQU $00 ;Doubles as the Accumulator
Reg1 EQU $02
Reg2 EQU $04
Reg3 EQU $06
Reg4 EQU $08
Reg5 EQU $0A ;Points @ 1st char of curr edited file
Reg6 EQU $0C ;HiMem
Reg7 EQU $0E ;Points @ last char of curr edited file
Reg8 EQU $10
Reg9 EQU $12
Reg10 EQU $14
Reg11 EQU $16
Reg12 EQU $18 ;Subroutine return stack pointer
Reg13 EQU $1A ;Result of a comparison instruction
Reg14 EQU $1C ;Status Register
Reg15 EQU $1E ;Program Counter
;=================================================
; Sweet16 registers
; These labels are for the EdAsm assembler
; For Merlin8, Rn are pre-defined and
; do not need to be declared.
;
R0 EQU 0
R1 EQU 1
R2 EQU 2
R3 EQU 3
R4 EQU 4
R5 EQU 5
R6 EQU 6
R7 EQU 7
R8 EQU 8
R9 EQU 9
R10 EQU 10
R11 EQU 11
R12 EQU 12 ;Subroutine return stack pointer
R13 EQU 13 ;Result of a comparison instruction
R14 EQU 14 ;Status Register
R15 EQU 15 ;Program Counter
;=================================================
; Lifted from ProDOS v1.7
; xdos parameters:
;
c.pCnt EQU $0 ; (count)
c.devNum EQU $1 ; (value)
c.refNum EQU $1 ; (value)
c.intNum EQU $1 ; (value)
c.path EQU $1 ;&2 (pointer)
c.isNewl EQU $2 ; (mask)
c.dataBuf EQU $2 ;&3 (value)
c.bufAdr EQU $2 ;&3 (address)
c.intAdr EQU $2 ;&3 (address)
c.mark EQU $2 ;->4 (value)
c.eof EQU $2 ;->4 (value)
c.attr EQU $3 ; (flags)
c.newl EQU $3 ; (character)
c.bufPtr EQU $3 ;&4 (pointer)
c.newPath EQU $3 ;&4 (pointer)
c.fileId EQU $4 ; (value)
c.reqCnt EQU $4 ;&5 (value)
c.blkNum EQU $4 ;&5 (address)
c.outRef EQU $5
c.auxId EQU $5 ;&6 (value)
c.transCnt EQU $6 ;&7 (value)
c.fKind EQU $7 ; (value)
c.date EQU $8 ;&9 (value)
c.outBlk EQU $8 ;&9 (count)
c.time EQU $a ;&b (value)
c.modDate EQU $a ;&b (value)
c.modTime EQU $c ;&d (value)
c.creDate EQU $e ;&f (value)
c.creTime EQU $10 ;&11 (value)

1800
EDASM.SRC/EDITOR/EDITOR1.S Normal file

File diff suppressed because it is too large Load Diff

478
EDASM.SRC/EDITOR/EDITOR2.S Normal file
View File

@ -0,0 +1,478 @@
Name : EDITOR2.S
End of file : 7,116
This file was generated using the DiskBrowser utility with minimal editing.
It is meant for viewing purposes only.
;=================================================
; EXIT cmd
; Default to BASIC.SYSTEM
; The command interpreter's OpenNRd rtn expects
; a ptr to pathname to be stored at Reg4
;
LDCC8 SET R4,XBD80 ;Set ptr to PN
SET R10,XBD80
LDI R10 ;Did user type a pathname?
BNZ LDCD4 ;Yes
SET R4,XBB1A ;No, default to BI's name
LDCD4 RTN
;
LDA #>X2000
STA XBA8A ;Data buf/Load addr
LDA #<X2000
STA XBA8A+1
LDA #$00
STA XBA8C
LDA #$98 ;LEN
STA XBA8C+1
LDA #SYStype
JSR XB937 ;Open and read file into mem
BCS LDD09 ;Error
JSR LA7AB ;Init video card, setup I/O hooks
LDA #$00
STA BITMAP+$13
STA BITMAP+$15
STA BITMAP+$14
STA BITMAP+$16
LDA #$01
STA BITMAP+$17
JMP XB92E ;Go execute and don't come back
;
LDD09 PHA ;Errcode
JSR LA788 ;Reset I/O hooks
PLA
JMP XB602 ;Report err
;=================================================
; Checks keyboard for a ctrl-S, ctrl-C and spacebar
; keypress
; Z=1,C=0 -> ctrl-S
; Z=1,C=1 -> ctrl-C
; Z=0,C=0 -> any other key
;
KeyPress LDA KBD
BPL LDD2C
CMP #CTRLS+$80
BEQ LDD2C ;Z=1
BIT KBDSTROBE
CMP #CTRLC+$80
BNE LDD23
SEC
RTS
;
LDD23 CMP #SPACE+$80 ;Single-step?
BNE LDD2C
LDD27 LDA KBD ;Wait for another
BPL LDD27 ; key press
LDD2C CLC
RTS
;=================================================
; Chk for a ctrl-C
;
LDD2E JSR KeyPress
BCS LDD34 ;ctrl-C
RTS
LDD34 JMP LDCA9
;=================================================
LDD37 JSR LA614 ;Get char fr user's input key rtn
CMP #$60
BCC LDD40
AND #$5F ;To ucase
LDD40 RTS
;=================================================
; Init tab table
;
LDD41 EQU * ;ENTRY
LDA #$00
STA SwapMode
STA XBE00 ;Curr PN
LDY #10
LDD4A LDA DefTabsT,Y ;Only 3 are set
CPY #3
BCC LDD53
LDA #0 ;Zero the rest
LDD53 STA UserTabT,Y
DEY
BPL LDD4A
;
LDA #SPACE
STA TabChar
RTS
;=================================================
; PR# cmd
; Parsed parms are in $BD00 buf
;
LDD5E RTN
LDY #1
LDX XBD00 ;Get Slot #
STX Z59
BEQ LDD8C ;slot 0
CPX #8
BCS LDD99 ;slot > 7
;
LDA #%00000010
LDD6E DEX
BEQ LDD74
ASL
BNE LDD6E
LDD74 BIT SLTBYT
BEQ LDD99 ;Invalid
;
LDA XBD00,Y
STA DevCtlS,Y
LDD7F INY
CPY #33
BEQ LDD8C
LDA XBD00,Y
STA DevCtlS,Y
BNE LDD7F
;
LDD8C LDA #0 ;Set delimiter
STA DevCtlS,Y ; to mark EOS
LDX Z59
STX DevCtlS
JMP XB1CB
LDD99 JMP LD53E
;=================================================
; Tabs cmd
; Input
; Reg12-ptr to $BD00 buf
;
LDD9C SET R9,UserTabT
LD R9
ST R2
SET R8,10 ;Up to 10 tab cols
LD R8
ST R10
SUB R0 ;zero ACC
;
LDDA7 STI R9 ;Zero the table first
DCR R8
BNZ LDDA7
;
LDDAB LDD R12 ;Get tab posn (stored as a 16-bit val)
BM LDDB3 ;If $FFFF, EO list
STI R2 ;Save to UserTabT
LDI R12
DCR R10
BNZ LDDAB
LDDB3 RTN
;
LDA XBD80 ;Is a tab char passed?
BEQ LDDBB ;No
STA TabChar
LDDBB JMP XB1CB
;
DefTabsT DB $10 ;16,22,36
DB $16
DB $24
;=================================================
; TYPE cmd
; The command interpreter's ChkAttrF ($B883)
; rtn expects a ptr to pathname to be stored
; at Reg4
;
LDDC1 SET R4,XBD80 ;Set ptr to PN
RTN
LDA #TXTtype
JSR XB883 ;Chk file's properties
BCC LDDCF
LDDCC JMP XB602 ;Not found, show errmsg
;
LDDCF BNE LDDCC ;Wrong filetype -> err
;
LDX #>XA900 ;1024-byte I/O buf
LDY #<XA900
JSR XB8CE ;Open the TEXT file
LDA XBA87 ;Open Ref #
STA XBAA1 ;NL ref #
JSR L9F34 ;Set NewLine mode
BNE LDDCC
LDA XBA87
STA L9F43 ;read ref #
LDDE9 JSR L9F3B ;Read a line into $BD00 buf
BNE LDE05 ;Err
JSR KeyPress ;Abort listing?
BCS LDE03 ;ctrl-C -> yes
;
LDY #0
LDDF5 LDA XBD00,Y ;Get a char fr buf
JSR XB343 ;Show it
INY
CPY L9F48
BCC LDDF5
LDE01 BCS LDDE9 ;always
;
LDE03 LDA #$4C ;EOF err
LDE05 LDX L9F43
STX XBAF7 ;Close Ref #
JSR XB8FE ;Close file
CMP #$4C
BEQ LDE15
JMP XB602 ;Report err
LDE15 JMP XB1AB ;Back to EI Main loop
;=================================================
; Editor's Cmd table - used by $B20F
;
MSB ON
LDE18 EQU * ;ENTRY
DB $00
ASC "ASM"
DB $0A ;Index into $9D21 table
ASC "," ;comma
DB $0C ;->$9D21
DB $00 ;->$9D21 (Chk for a CR)
DB $00 ;Not used to index $DFA2
ASC "APPEND"
DB $10
DB $0A
DB $00
DB $30 ;->$DFA2
ASC "Add"
DB $10 ;->$9D21
DB $00 ;->$9D21
DB $02 ;->$DFA2 table
ASC "BLOAD"
DB $0A ;->$9D21 table
ASC ","
DB $22 ;->$9D21 table
DB $00
DB $24 ;->$DFA2 table
ASC "BSAVE"
DB $0A
ASC ","
DB $22
ASC ","
DB $24
DB $00
DB $4E
ASC "CATALOG"
DB $12
DB $00
DB $50
ASC "CAT"
DB $12
DB $00
DB $0E
ASC "COLumn"
DB $16
DB $00
DB $44
ASC "COpy"
DB $02
ASC "-"
DB $10
ASC "TO"
DB $02
DB $00
DB $22
ASC "CREATE"
DB $0A
DB $00
DB $5A
ASC "Change"
DB $04
DB $08
DB $00
DB $28
ASC "DELETE"
DB $0A
DB $00
DB $08
ASC "Del"
DB $04
DB $00
DB $16
ASC "END"
DB $00
DB $5C
ASC "EXIT"
DB $12
DB $00
DB $4C
ASC "EXEC"
DB $0A
DB $00
DB $52
ASC "Edit"
DB $04
DB $06
DB $00
DB $2E
ASC "FILE"
DB $00
DB $34
ASC "Find"
DB $04
DB $06
DB $00
DB $2A
ASC "Insert"
DB $02
DB $00
DB $14
ASC "KILL2"
DB $00
DB $1A
ASC "LOaD"
DB $0A
DB $00
DB $10
ASC "LOCK"
DB $0A
DB $00
DB $0A
ASC "List"
DB $04 ;->$9D21
DB $00
DB $26 ;->$DFA2
ASC "MON"
DB $00
DB $04
ASC "NEW"
DB $00
DB $1C
ASC "Online"
DB $00 ;Chk for CR
DB $4A ;->$DFA2
ASC "PR#"
DB $16
ASC ","
DB $0E
DB $00
DB $36
ASC "PreFiX"
DB $12
DB $00
DB $06
ASC "PTRON"
DB $00
DB $46
ASC "PTROFF"
DB $00
DB $48
ASC "Print"
DB $04
DB $00
DB $2C
ASC "RENAME"
DB $1A ;->$9D21
ASC ","
DB $1C ;->$9D21
DB $00
DB $20 ;->$DFA2
ASC "Replace"
DB $04
DB $00
DB $32
ASC "SETDelim"
DB $18
DB $00
DB $38
ASC "SETLcase"
DB $00
DB $3A
ASC "SETUcase"
DB $00
DB $3C
ASC "SWAP"
DB $00
DB $18
ASC "SaVE"
DB $04
DB $12
DB $00
DB $12
ASC "TYPE"
DB $0A
DB $00
DB $58
ASC "TRuncOFf"
DB $00
DB $3E
ASC "TRuncON"
DB $00
DB $40
ASC "Tabs"
DB $04
DB $06
DB $00
DB $1E
ASC "UNLOCK"
DB $0A
DB $00
DB $0C
ASC "Where"
DB $02
DB $00
DB $42
ASC "XLOAD"
DB $0A
ASC ","
DB $26
DB $00
DB $54
ASC "XSAVE"
DB $0A
ASC ","
DB $1E ;->$9D21(A$)
ASC ","
DB $20 ;->$9D21 (L$)
DB $00
DB $56 ;->$DFA2
DB $28 ;What's this
MSB OFF
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; These are the entry points for the various
; SW16 routines utilised by the EI ($B659-B6A3)
; The "JMP" takes place at $B6A3 where the
; SW16 PC is set with the contents of R2 register
; R2 was previously set by EI code at $B680-$B68C
;
LDFA2 EQU *
DW LD33C-1 ;0
DW LD410-1 ;2
DW LD56D-1 ;4
DW LA29E-1 ;6
DW LD2C4-1 ;8
DW LD287-1 ;A
DW LD282-1 ;C
DW LA077-1 ;E
DW LD9B1-1 ;10
DW LDA06-1 ;12
DW LD656-1 ;14
DW LD6BB-1 ;16
DW LD76B-1 ;18
DW LD504-1 ;1A
DW LD521-1 ;1C
DW LDD9C-1 ;1E
DW LD308-1 ;20
DW LD819-1 ;22
DW L9BD6-1 ;24
DW LD631-1 ;26
DW LD8C6-1 ;28
DW LD865-1 ;2A
DW LD533-1 ;2C
DW LDB54-1 ;2E
DW LD9A6-1 ;30 - Append
DW LD6D6-1 ;32
DW LD6EC-1 ;34
DW LDD5E-1 ;36
DW LD5AD-1 ;38
DW LD5CB-1 ;3A
DW LD5C2-1 ;3C
DW LD582-1 ;3E
DW LD58A-1 ;40
DW LD58F-1 ;42
DW LD547-1 ;44
DW LA024-1 ;46
DW LA049-1 ;48
DW LA309-1 ;4A - Online
DW LDCC8-1 ;4C
DW L9BF9-1 ;4E
DW LA072-1 ;50
DW XB9B0-1 ;52
DW L9B19-1 ;54
DW L9B6E-1 ;56
DW LDDC1-1 ;58
DW L9F4A-1 ;5A
DW $C8D3 ;5C - NOT USED?
;

2080
EDASM.SRC/EDITOR/EDITOR3.S Normal file

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,30 @@
Name : EQUATES.S
End of file : 448
This file was generated using the DiskBrowser utility with minimal editing.
It is meant for viewing purposes only.
;=================================================
; Zero page usage
;
Z10 EQU $10 ;cntr
Z12 EQU $12 ;Char
Z4E EQU $4E
Z58 EQU $58
Z59 EQU $59 ;slot #
Z5A EQU $5A
Z5B EQU $5B
Z5C EQU $5C
Z5E EQU $5E ;Char being printed
Z60 EQU $60 ;Tab expansion flag
Z62 EQU $62
Z63 EQU $63
Z64 EQU $64
Z65 EQU $65
Z66 EQU $66
Z67 EQU $67
Z7A EQU $7A
Z7B EQU $7B
Z7D EQU $7D
Z7E EQU $7E ;These 6 locations are used
Z80 EQU $80 ; to move txt within mem
Z82 EQU $82

View File

@ -0,0 +1,111 @@
Name : EXTERNALS.S
End of file : 3,020
This file was generated using the DiskBrowser utility with minimal editing.
It is meant for viewing purposes only.
;
; These externals labels are EDASM.SYSTEM's entry points
;
XB198 EQU $B198 ;warm start
XB1AB EQU $B1AB ;EI main loop
XB1CB EQU $B1CB ;reset I/O hooks
XB211 EQU $B211 ;command parser
XB274 EQU $B274 ;get non-blank char
XB286 EQU $B286 ;cmd table ptr
XB289 EQU $B289 ;do an RTS
XB28E EQU $B28E ;print cmd syntax err
XB290 EQU $B290 ;prt err msg
XB339 EQU $B339 ;output CR
XB33D EQU $B33D ;beep
XB343 EQU $B343 ;output (A)
XB36B EQU $B36B ;call monitor's VTAB
XB375 EQU $B375 ;call monitor's BELL1
XB37F EQU $B37F ;call monitor's PRBLNK
XB389 EQU $B389 ;call monitor's PRNTAX
XB393 EQU $B393 ;call monitor's SETKBD & SETVID
XB3D9 EQU $B3D9 ;Output (A) thru EI's CSW
XB5F8 EQU $B5F8 ;Fatal Error
XB5FF EQU $B5FF ;Close file and fall thru
XB602 EQU $B602 ; to print err msg
XB620 EQU $B620 ;Print "ER:" and beep
XB659 EQU $B659 ;Print err msg and err code
XB6EA EQU $B6EA ;Multi-buffer err msg
XB7AB EQU $B7AB ;Load EDASM.ED
XB836 EQU $B836 ;Set prefix to EDASM's boot dir
XB844 EQU $B844 ;Load EDASM.ED or EDASM.ASM
XB86F EQU $B86F ;Print invalid pathname
XB883 EQU $B883 ;check file's attributes
XB8B2 EQU $B8B2 ;copy file's name to 2 buffers
XB8CE EQU $B8CE ;open a file for reading
XB8EF EQU $B8EF ;close file and proceed to err handler
XB8FE EQU $B8FE ;close file and return to caller
XB904 EQU $B904 ;set file info
XB90B EQU $B90B ;kill file
XB912 EQU $B912 ;rename
XB919 EQU $B919 ;create
XB920 EQU $B920 ;write
XB927 EQU $B927 ;set EOF
XB92E EQU $B92E ;xfer control to another .SYSTEM program
XB937 EQU $B937 ;open and read an EDASM module
XB966 EQU $B966 ;check a file's size
XB99B EQU $B99B ;convert (A) to printable HEX code
XB9B0 EQU $B9B0 ;EXEC command handler
;=================================================
;
; These externals labels are EDASM.SYSTEM's DATA AREAS
;
XB40A EQU $B40A ;text of err messages
XB420 EQU $B420 ;are in $B40A-$B5BE
XB427 EQU $B427
XB432 EQU $B432
XB43E EQU $B43E
XB448 EQU $B448
XB45B EQU $B45B
XB50D EQU $B50D
XB521 EQU $B521
;
XB9EE EQU $B9EE ;used by SWAP command
XBA33 EQU $BA33 ; - ditto -
XBA78 EQU $BA78 ;used by SW16
XBA80 EQU $BA80 ;ptr to free mem
XBA87 EQU $BA87 ;open ref #
XBA8A EQU $BA8A ;read ref #
XBA8C EQU $BA8C ;read request len
XBA8E EQU $BA8E ;actual read len
XBA91 EQU $BA91 ;write ref #
XBA92 EQU $BA92 ;write data buffer
XBA94 EQU $BA94 ;write len
XBAA0 EQU $BAA0 ;New line parm block
XBAA1 EQU $BAA1 ;NL ref #
XBAA4 EQU $BAA4 ;Read park block used by CAT/CATALOG cmd
XBAA5 EQU $BAA5 ;read ref #
XBAA8 EQU $BAA8 ;read len
XBAAC EQU $BAAC ;use to read dir block
XBAAD EQU $BAAD ;read ref #
XBAB5 EQU $BAB5 ;Set EOF ref #
XBAB6 EQU $BAB6 ;new EOF (3 bytes)
XBABC EQU $BABC
XBAC8 EQU $BAC8
XBACA EQU $BACA
XBACB EQU $BACB
XBACC EQU $BACC
XBACE EQU $BACE
XBACF EQU $BACF
XBAD1 EQU $BAD1
XBADA EQU $BADA
XBADC EQU $BADC
XBADD EQU $BADD
XBADE EQU $BADE
XBAE3 EQU $BAE3
XBAE8 EQU $BAE8
XBAEA EQU $BAEA
XBAEB EQU $BAEB
XBAEC EQU $BAEC
XBAEE EQU $BAEE
XBAF4 EQU $BAF4
XBAF7 EQU $BAF7
XBAFB EQU $BAFB
XBAFD EQU $BAFD
XBAFE EQU $BAFE
XBB1A EQU $BB1A
XBB80 EQU $BB80

692
EDASM.SRC/EDITOR/SWEET16.S Normal file
View File

@ -0,0 +1,692 @@
Name : SWEET16.S
End of file : 16,627
This file was generated using the DiskBrowser utility with minimal editing.
It is meant for viewing purposes only.
;---------------------------------------------------------;
; Initial source was disassembled with The Flaming Bird ;
; Disassembler. The Sweet16 code was disassembled with ;
; the Merlin8 disassembler. Final re-assembly must be ;
; done with the EdAsm assembler to produce a binary ;
; image which will be compared against the original ;
; (c) Phoenix corp. 1992,93 - All rights reserved ;
;---------------------------------------------------------;
ORG $D000
;=================================================
; SWEET16 code is executed as if it were running on a
; 16-bit processor with sixteen, internal 16-bit
; little-endian registers, R0 through R15. Some registers
; have well-defined functions:
; R0 is the accumulator.
; R12 subroutine return address stack
; R13 stores the result of all comparison operations for
; branch testing.
; R14 is the status register.
; R15 is the program counter.
; The 16 virtual registers, 32 bytes in total, are located
; in the zero page of the Apple II's real, physical memory
; map (at $00-$1F)
;
; The carry bit is in the lsb of R14H
; Negative and Zero "flags" are the given by the contents
; of the "prior" result register (indexed with X)
;
NEWSW16 EQU * ;ENTRY
STA Z58 ;Preserve the regs
STX Z59
STY Z5A
PHP
PLA
STA Z5B
CLD
PLA
STA Reg15 ;Init the SW16 program counter
PLA ; using the Return Addr
STA Reg15+1
LD011 INC Reg15 ;Increment SW16 PC for fetch
BNE LD017
INC Reg15+1
;
LD017 LDY #0
SW16BK EQU *-1
LDA (Reg15),Y ;Fetch the instruction
AND #$0F ;Mask register specification
ASL ;Double for 2-byte registers
TAX ;(X) is used to index the register Rn
LSR
EOR (Reg15),Y ;Now we have the opcode ($x0) where x=1-F
BEQ ToBR ;If zero, then non-reg op or CPIM
;
STX Reg14+1 ;Indicate "prior" result register
LSR ;opcodex2 to LSB's
LSR
LSR
TAY ;To Y-reg for indexing
LDA LD07F-2,Y
STA Z5C+1
LDA LD05F-2,Y
STA Z5C
JMP (Z5C) ;Go SW16 REG op rtns
;
; Non-register ops are handled here. They include
; the new ops CPIM, BRL and BSL
; NB. On entry, Y=0
;
ToBR INC Reg15 ;Increment SW16 PC
BNE ToBR2
INC Reg15+1
ToBR2 LDA LD080,X
STA Z5C+1
LDA LD060,X
STA Z5C
LDA Reg14+1 ;"Prior" result register
LSR ;Prepare 6502 C-bit for BC, BNC
LDA Reg14+1
; AND #%0001_1110
AND #%00011110
TAX ;(X)=Index to the "prior" result register
JMP (Z5C) ;Go non-reg op rtn
;
; Control is returned to the 6502 and program execution
; continues at the location immediately following the RTN
; instruction. The 6502 registers and status conditions are
; restored to their original contents (prior to entering
; SWEET 16 mode).
;
SW16RTN LDA Z5B ;Restore the contents of the 6502 regs
PHA
LDA Z58
LDX Z59
LDY Z5A
PLP
LD05C JMP (Reg15) ;Return to 6502 code via SW16 PC
;
LD05F DB >SW16SET ;1X
LD060 DB >SW16RTN ;0
DB >SW16LD ;2X
DB >SW16BR ;1
DB >SW16ST ;3X
DB >SW16BNC ;2
DB >SW16LDat ;4X
DB >SW16BC ;3
DB >SW16STat ;5X
DB >SW16BP ;4
DB >SW16LDDat ;6X
DB >SW16BM ;5
DB >SW16STDat ;7X
DB >SW16BZ ;6
DB >SW16POP ;8X
DB >SW16BNZ ;7
DB >SW16STPat ;9X
DB >SW16BM1 ;8
DB >SW16ADD ;AX
DB >SW16BNM1 ;9
DB >SW16SUB ;BX
DB >SW16BK ;A
DB >SW16POPD ;CX
DB >SW16RS ;B
DB >SW16CPR ;DX
DB >SW16BS ;C
DB >SW16INR ;EX
DB >SW16CPIM ;D
DB >SW16DCR ;FX
DB >SW16BRL ;E
DB >LD011 ;Unused
DB >SW16BSL ;F
;
LD07F DB <SW16SET ;1X
LD080 DB <SW16RTN ;0
DB <SW16LD ;2X
DB <SW16BR ;1
DB <SW16ST ;3X
DB <SW16BNC ;2
DB <SW16LDat ;4X
DB <SW16BC ;3
DB <SW16STat ;5X
DB <SW16BP ;4
DB <SW16LDDat ;6X
DB <SW16BM ;5
DB <SW16STDat ;7X
DB <SW16BZ ;6
DB <SW16POP ;8X
DB <SW16BNZ ;7
DB <SW16STPat ;9X
DB <SW16BM1 ;8
DB <SW16ADD ;AX
DB <SW16BNM1 ;9
DB <SW16SUB ;BX
DB <SW16BK ;A
DB <SW16POPD ;CX
DB <SW16RS ;B
DB <SW16CPR ;DX
DB <SW16BS ;C
DB <SW16INR ;EX
DB <SW16CPIM ;D
DB <SW16DCR ;FX
DB <SW16BRL ;E
DB <LD011 ;Unused
DB <SW16BSL ;F
;
; The SW16 accumulator is loaded from Rn and branch
; conditions set according to the data transferred. The
; Carry is cleared and the contents of Rn are not changed.
; Input
; Rn
; Output
; R0 - both bytes
;
SW16LD LDA Reg0,X ;Move Rx to R0 (Acc)
STA Reg0
LDA Reg0+1,X
STA Reg0+1
JMP LD011
;
; The SW16 ACC is stored into Rn and branch
; conditions set according to the data transferred.
; The carry is cleared and the contents of the ACC
; are unchanged
; Input
; R0
; Output
; Rn - both bytes
;
SW16ST LDA Reg0 ;Move R0 (Acc) to Rx
STA Reg0,X
LDA Reg0+1
STA Reg0+1,X
JMP LD011
;
; The low byte of ACC is stored into the memory location
; whose ADDRESS resides in Rn. Branch conditions reflect
; the 2-byte ACC contents. After the transfer, Rn is
; incremented by 1.
; Input
; Rn - ptr to mem location
; R0 - lobyte
; Output
; Rn = Rn+1
; R14H = 0 - carry cleared
;
SW16STat LDA Reg0
STA (Reg0,X) ;Store byte indirect
LDY #0
STY Reg14+1 ;Indicate R0 is result -ve
;
; The contents of Rn are incremented by 1. The carry is
; cleared and other branch conditions reflect the
; incremented value.
;
SW16INR INC Reg0,X ;Increment Rx
BNE LD0C3
INC Reg0+1,X
LD0C3 JMP LD011
;
; The lobyte of the SW16 ACC is loaded from the memory
; location whose ADDRESS resides in Rn and ACC hi-byte
; is zeroed. Branch conditions reflect the final contents
; of the ACC which will always be positive and never
; minus 1. The Carry is cleared and after the transfer,
; Rn is incremented by 1.
; Input
; Rn - ptr to mem location
; Output
; R0 - lobyte
; Rn = Rn+1
; R14H = 0 - carry cleared
;
SW16LDat LDA (Reg0,X)
STA Reg0
LDY #0 ;Zero the ACC's hi-byte
STY Reg0+1
STY Reg14+1 ;Indicate R0 is +ve
INC Reg0,X
BNE LD0D6
INC Reg0+1,X
LD0D6 JMP LD011
;
; Rn is decremented by 1 and the hibyte of ACC is loaded
; from the memory location whose address now resides in Rn.
; Rn is again decremented by 1 and the lobyte of ACC is
; loaded from the corresponding memory location. Branch
; conditions reflect the final ACC contents. The carry
; is cleared. Because Rn is decremented prior to loading
; each of the ACC halves, double-byte stacks may be
; implemented with the STD Rn and POPD Rn ops where Rn
; is the stack pointer.
;
; Input
; Rn - ptr to mem location
; Output
; R0 - both bytes
; Rn = Rn+2
; R14H = 0 - carry cleared
;
SW16POPD LDA Reg0,X
BNE LD0DF
DEC Reg0+1,X
LD0DF DEC Reg0,X
LDA (Reg0,X)
TAY
LDA Reg0,X
BNE LD0EA
DEC Reg0+1,X
LD0EA DEC Reg0,X
LDA (Reg0,X)
STA Reg0
STY Reg0+1
LDY #0
STY Reg14+1
JMP LD011
;
; The lobyte of the ACC is loaded from the memory location
; whose address resides in Rn AFTER Rn is decremented by 1,
; and the hibyte is cleared. Branch conditions reflect
; the final 2-byte ACC contents which will always be
; positive and never minus one. The carry is cleared.
; Because Rn is decremented prior to loading the ACC,
; single byte stacks may be implemented with the
; STI Rn and POP Rn ops where Rn is the stack pointer.
; Input
; Rn - ptr to mem location
; Output
; R0L - changed
; R0H = 0
; Rn = Rn+1
; R14H = 0 - carry cleared
;
SW16POP LDY #0
LDA Reg0,X
JMP LD106
;=================================================
LD100 EQU * ;ENTRY?
LDA ROMIN2
JMP $E000 ;AppleSoft
;=================================================
LD106 BNE LD10A
DEC Reg0+1,X
LD10A DEC Reg0,X
LDA (Reg0,X)
STA Reg0
STY Reg0+1 ;zero hi-byte
LDY #0
STY Reg14+1
JMP LD011
;
; The lobyte of the ACC is loaded from memory location
; whose address resides in Rn, and Rn is then incremented
; by 1. Its hibyte is loaded from the memory location whose
; address resides in the incremented Rn, and Rn is again
; incremented by 1. Branch conditions reflect the contents
; of final ACC. The carry is cleared.
; Input
; Rn - ptr to mem location
; Output
; R0 - both bytes changed
; Rn = Rn+2
; R14H = 0 - carry cleared
;
SW16LDDat LDA (Reg0,X)
STA Reg0
INC Reg0,X
BNE LD123
INC Reg0+1,X
LD123 LDA (Reg0,X)
STA Reg0+1
LDY #0
STY Reg14+1
INC Reg0,X
BNE LD131
INC Reg0+1,X
LD131 JMP LD011
;
; The lobyte of ACC is stored into memory location
; whose address resides in Rn, and Rn is the incremented
; by 1. The hibyte of ACC is stored into the memory
; location whose address resides in the incremented
; Rn, and Rn is again incremented by 1. Branch conditions
; reflect the contents of ACC which are unchanged.
; The carry is cleared.
; Input
; Rn - ptr to mem location
; R0 - both bytes used
; Output
; Rn = Rn+2
; R14H = 0 - carry cleared
;
SW16STDat LDA Reg0
STA (Reg0,X)
LDY #0
STY Reg14+1
INC Reg0,X
BNE LD142
INC Reg0+1,X
LD142 LDA Reg0+1
STA (Reg0,X)
INC Reg0,X
BNE LD14C
INC Reg0+1,X
LD14C JMP LD011
;
; The lobyte of ACC is stored into the memory location
; whose address resides in Rn after Rn is decremented by 1.
; Branch conditions will reflect the 2-byte ACC contents
; which are not modified. STP Rn and POP Rn are used
; together to move data blocks beginning at the greatest
; address and working down. Additionally, single-byte
; stacks may be implemented with the STP Rn ops.
; Input
; R0 - lobyte used
; Rn - ptr to mem location
; Output
; Rn = Rn+1
; R14H = 0 - carry cleared
;
SW16STPat LDA Reg0,X
BNE LD155
DEC Reg0+1,X
LD155 DEC Reg0,X
LDA Reg0
STA (Reg0,X)
LDY #0
STY Reg14+1
JMP LD011
;
; The contents of Rn are decremented by 1. The carry is
; cleared and other branch conditions reflect the
; decremented value.
; Input
; Rn
; Output
; Rn = Rn-1
; R14H = set on entry into SW16
;
SW16DCR LDA Reg0,X
BNE LD168
DEC Reg0+1,X
LD168 DEC Reg0,X
JMP LD011
;
; The low order 16 bits of the subtraction are restored in
; the ACC, the 17-th bit becomes the carry and other branch
; conditions reflect the final ACC contents. If the 16-bit
; unsigned ACC contents are greater than or equal to the
; 16-bit unsigned Rn contents, then the carry is set,
; otherwise it is cleared. Rn is not disturbed.
; For SUB instruction, register specification would be
; changed to indicate R0 (the SW16 ACC)
;
; Output
; R0
; R14H = lsb indicate carry condition (0/1)
;
SW16SUB LDY #0
;
; The ACC (R0) contents are compared to Rn by performing
; the 16 bit binary subtraction ACC-Rn and storing the low
; order 16 difference bits in R13 for subsequent branch
; tests. If the 16 bit unsigned ACC contents are greater
; than or equal to the 16 bit unsigned Rn contents, then
; the carry is set, otherwise it is cleared. No other
; registers, including ACC and Rn, are disturbed.
; Input
; Rn - both bytes used; unchanged
; R0 - both bytes used; unchanged
; Output
; R13 = 0 if ACC == Rn
; R14H = lsb indicate carry condition (26/27)
;
SW16CPR SEC ;(Y)=13;2 for CPR instr
LDA Reg0
SBC Reg0,X
; STA |Reg0,Y
DB $99,$00,$00
LDA Reg0+1
SBC Reg0+1,X
; STA |Reg0+1,Y
DB $99,$01,$00
TYA
ADC #0 ;Propagate the carry as well as indicate
STA Reg14+1 ; the "prior" result reg is R0/R13
JMP LD011
;
; The contents of Rn are added to the contents of ACC,
; and the low-order 16 bits of the sum restored in ACC.
; The 17-th bit becomes the carry and the other branch
; conditions reflect the final ACC contents.
; For ADD instruction, register specification would be
; changed to indicate R0 (the SW16 ACC)
; Input
;
; Rn - both bytes used
; R0 - both bytes used
; Output
; R0 - changed
; R14H = lsb indicate carry condition (0/1)
;
SW16ADD LDA Reg0
ADC Reg0,X
STA Reg0
LDA Reg0+1
ADC Reg0+1,X
LDY #0
; STA |Reg0+1,Y
DB $99,$01,$00
TYA ;(A)=0
ADC #0 ;Propagate the C-bit as well as
STA Reg14+1 ; indicate the "prior" result reg is ACC
JMP LD011
;
; A branch to the effective address (PC + 2 + d) is taken
; and execution is resumed in SWEET 16 mode. The current
; PC is pushed onto a SWEET 16 subroutine return address
; stack whose pointer is R12, and R12 is incremented by 2.
; The carry is cleared and branch conditions set to
; indicate the current ACC contents.
; Input
; R15
; Output
; R12 = R12+2
; (R12) = Mem location pointed to
;
SW16BS LDX #Reg12 ;12;2 (SW16 stack register)
LDA Reg15 ;PC
STA (Reg0,X)
INC Reg12
BNE LD1A9
INC Reg12+1
LD1A9 LDA Reg15+1
STA (Reg0,X)
INC Reg12
BNE SW16BR
INC Reg12
;
; An effective address (ea) is calculated by adding the
; signed displacement byte (d) to the PC. The PC contains
; the address of the instruction immediately following the
; BR, or the address of the BR op plus 2. The displacement
; is a signed two's complement value from -128 to +127.
; Branch conditions are not changed.
;
; NOTE: The effective address calculation is identical to
; that for 6502 relative branches. The Hex add & Subtract
; features of the APPLE ][ monitor may be used to
; calculate displacements.
;
SW16BR CLC
LDA (Reg15),Y ;Get displacement byte
BPL LD1B9
DEY ;=$FF (-1)
LD1B9 ADC Reg15 ;Add to SW16 PC
STA Reg15
TYA
ADC Reg15+1
STA Reg15+1
JMP LD011
;
; A branch is effected only if the carry is set. Branch
; conditions are not changed.
;
SW16BC BCS SW16BR
JMP LD011
;
; A branch to the effective address is taken only is the
; carry is clear, otherwise execution resumes as normal
; with the next instruction. Branch conditions are
; not changed.
;
SW16BNC BCC SW16BR
JMP LD011
;
; A branch is effected only if the prior 'result' (or most
; recently transferred data) was positive. Branch
; conditions are not changed
;
SW16BP LDA Reg0+1,X ;Need to chk hi-byte only
BPL SW16BR
JMP LD011
;
; A branch is effected only if prior 'result' was minus.
; Branch conditions are not changed.
;
SW16BM LDA Reg0+1,X ;Need to chk hi-byte only
BMI SW16BR
JMP LD011
;
; A Branch is effected only if the prior 'result' was zero.
; Branch conditions are not changed.
;
SW16BZ LDA Reg0,X
ORA Reg0+1,X
BEQ SW16BR
JMP LD011
;
; A branch is effected only if the prior 'result' was
; non-zero. Branch conditions are not changed.
;
SW16BNZ LDA Reg0,X
ORA Reg0+1,X
BNE SW16BR
JMP LD011
;
; A branch is effected only if the prior 'result' was -1
; ($FFFF Hex). Branch conditions are not changed.
;
SW16BM1 LDA Reg0,X ;Get 'prior result' register
AND Reg0+1,X
EOR #-1
BEQ SW16BR
JMP LD011
;
; A branch effected only if the prior 'result' was NOT
; -1 ($FFFF). Branch conditions are not changed.
;
SW16BNM1 LDA Reg0,X
AND Reg0+1,X
EOR #-1
BNE SW16BR
JMP LD011
;
; RS terminates execution of a SWEET16 subroutine and
; returns to the SWEET 16 calling program which resumes
; execution (in SWEET 16 mode). R12, which is the SWEET16
; subroutine return stack pointer, is decremented twice.
; Branch conditions are not changed.
;
SW16RS LDX #Reg12 ;12;2 for R12 as stack pointer
LDA Reg12
BNE LD20D
DEC Reg12+1
LD20D DEC Reg12
LDA (Reg0,X) ;Get byte from SW16 stack
STA Reg15+1 ;Modify the PC
LDA Reg12
BNE LD219
DEC Reg12+1
LD219 DEC Reg12
LDA (Reg0,X)
STA Reg15
JMP LD011
;
; $D222 The 2-byte constant is loaded into Rn (n=0-F) and
; branch conditions set accordingly. Carry is cleared.
; Output
; Rn
;
SW16SET LDA (Reg15),Y ;Get hi-byte of constant
STA Reg0+1,X
DEY
LDA (Reg15),Y ;Lo-byte of constant
STA Reg0,X
TYA ;Y=1
SEC ;Add 2 to SW16 PC
ADC Reg15
STA Reg15
BCC LD235
INC Reg15+1
LD235 JMP LD011
;
; Usage: CPIM constant
; The contents of the ACC is compared against the
; 2-byte constant by performing the 16-bit binary
; subtraction ACC-CONSTANT and storing the low order 16
; difference bits in R13 for subsequent branch tests.
; If the 16-bit unsigned ACC contents are greater
; than or equal to the 16-bit unsigned CONSTANT,
; then the carry is set, otherwise it is cleared.
; No other registers, are disturbed.
;
SW16CPIM SEC ;(Y)=0
LDX #Reg13 ;13;2
LDA Reg0
SBC (Reg15),Y
STA Reg0,X
INC Reg15
BNE LD247
INC Reg15+1
LD247 LDA Reg0+1
SBC (Reg15),Y
STA Reg0+1,X
TXA ;=26
ADC #0
STA Reg14+1 ;=27 if there's a C
JMP LD011
;
; A branch to the effective address (PC + 3 + d) is taken
; and execution is resumed in SWEET 16 mode. The current PC
; is pushed onto a SWEET 16 subroutine return address
; stack whose pointer is R12, and R12 is incremented by 2.
; The carry is cleared and branch conditions set to
; indicate the current ACC contents.
;
SW16BSL LDX #Reg12 ;12;2 (SW16 stack register)
LDA Reg15 ;PC
STA (Reg0,X)
INC Reg12
BNE LD261
INC Reg12+1
LD261 LDA Reg15+1
STA (Reg0,X)
INC Reg12
BNE SW16BRL
INC Reg12+1
;
; An effective address (ea) is calculated by adding the
; signed displacement word (d) to the PC. The PC contains
; the address of the instruction immediately following the
; BRL, or the address of the BRL op plus 3. The
; displacement is a signed two's complement value from
; -32768 ($8000) to +32767 ($7FFF).
; Branch conditions are not changed.
;
SW16BRL CLC
LDA (Reg15),Y
INC Reg15
BNE LD274
INC Reg15+1
LD274 ADC Reg15
TAX
LDA (Reg15),Y
ADC Reg15+1
STA Reg15+1
STX Reg15
JMP LD011
;=================================================

1537
EDASM.SRC/EI/EDASMINT.S Normal file

File diff suppressed because it is too large Load Diff

17
EDASM.SRC/EI/EQUATES.S Normal file
View File

@ -0,0 +1,17 @@
Name : EQUATES.S
End of file : 391
This file was generated using the DiskBrowser utility with minimal editing.
It is meant for viewing purposes only.
;=================================================
; zero page usage by EdAsm Interpreter
; Since SW16 is used, the first 32 zero page
; locations must be treated with care
;
Z00 EQU $00 ;Reg0
Z04 EQU $04 ;Reg2
Z12 EQU $12 ;Reg9-Ptr to Msg/Save Char
ErrCode EQU $72 ;error code
BufIndex EQU $76 ;Index into InBuf
MulCmdF EQU $77 ;multiple cmds if msb on
HelpF EQU $7C ;Display Help Menu-$80

33
EDASM.SRC/EI/EXTERNALS.S Normal file
View File

@ -0,0 +1,33 @@
Name : EXTERNALS.S
End of file : 979
This file was generated using the DiskBrowser utility with minimal editing.
It is meant for viewing purposes only.
*=================================================
* EDASM Command Interpreter
* This module references of a number
* of routines and tables of EdAsm.Ed
*
X9AA5 EQU $9AA5 ;set R12 to $BD00
X9C98 EQU $9C98 ;output err msg
X9D11 EQU $9D11 ;Default TAB table
X9D14 EQU $9D14 ;Edasm.AutoSt
X9D21 EQU $9D21 ;JMP table
X9E55 EQU $9E55 ;convert date/time to ASCII
X9F83 EQU $9F83 ;copy right
XA70B EQU $A70B ;cmd line input
XA75B EQU $A75B ;chk for presence of 80-col card
XA788 EQU $A788 ;reset I/O hooks
XA78A EQU $A78A ;alternate entry point of $A788
DoHelp EQU $A7F1
XA872 EQU $A872 ;Load EDASM.SWAP
XA8D1 EQU $A8D1 ;vol/sub-dir header entry
NEWSW16 EQU $D000 ;Modified version of Sweet16 lives here
XD610 EQU $D610 ;printer init
XDD41 EQU $DD41 ;init TAB tabke
XDE18 EQU $DE18 ;Table of cmds (ASM,NEW,ONLINE etc)
XDFA2 EQU $DFA2 ;Cmd SW16 jmp table
*
LoadAdrAsm EQU $6800
X7800 EQU $7800 ;EdAsm.Asm's sub-module load/exec Addr
X9900 EQU $9900 ;EdAsm.Ed's sub-module load/exec addr

493
EDASM.SRC/EI/RELOCATOR.S Normal file
View File

@ -0,0 +1,493 @@
Name : RELOCATOR.S
End of file : 7,244
This file was generated using the DiskBrowser utility with minimal editing.
It is meant for viewing purposes only.
;---------------------------------------------------------;
; EDASM.SYSTEM - loaded into mem at $2000-$2FFE (len $FFF)
; The 1st part of the code is the relocator ($2000-$23FF)
; The 2nd part of the code is the EdAsm Interpreter
; ($2400-2FFE) which is relocated to $B100-$BCFE (len $0BFF).
; The EI is always in memory whether in assembly/edit mode
;---------------------------------------------------------;
SYS
;
ORG $2000
;
L2000 LDX #$F0
TXS
LDX #255
LDA #0
L2007 STA Stack,X ;Zero entire stack
DEX
BNE L2007
;
LDY #19
LDA #$00 ;Mark pages $20-$BF
L2011 STA BitMap+4,Y ; as free
DEY
BPL L2011
;
LDA #<$2000 ;Starting fr $2000
STA TxtBgn+1 ; downto $0800
LDY #3
L201D LDX #8
L201F LDA BitMap,Y ; scan for the
L2022 LSR
BCS L202D ; first non-free page
DEC TxtBgn+1
DEX
BNE L2022
DEY
BNE L201D
;
L202D LDA #$01
STA TxtBgn ;=$0801 (normally)
;
JSR PRODOS8
DB $82 ;Get the date/time
L2035 DW L2035 ;No parms needed
;
LDA ROMIN2 ;Read ROM
LDA ROMIN2 ;Write-enabled RAM LC Bank2
LDA P8DATE
ORA P8DATE+1
PHP ;save Z-bit
L2044 STA CLR80VID ;Disable 80-col display mode
JSR SETNORM
L204A JSR INIT
JSR SETVID
JSR SETKBD
JSR HOME
PLP
BNE L20B6
;
; No clock card
;
LDY #$00
JSR SendBanr
LDA #0
STA CH
JSR L21DE ;enter DD
L2065 LDA #3
STA CH
JSR L22C1 ;enter MMM
BCC L2074
L206E JSR L21FB
JMP L2065
;
; Year
;
L2074 LDA #7
STA CH
JSR L2238 ;enter year digit 1
BCC L2084
L207D JSR L22AF
BCC L2074
BCS L206E
;
L2084 JSR RDKEY
CMP #BS+$80
BNE L2092
JSR L2259
BCC L2084
BCS L207D
L2092 CMP #CR+$80
BEQ L209E
LDA #BEL+$80
JSR COUT
JMP L2084
;
L209E LDA L21CF
LDX L21CE
CPX #$08
ROL
STA P8DATE+1
TXA
ASL
ASL
ASL
ASL
ASL
ORA Day
STA P8DATE
;
L20B6 JSR PRODOS8 ;Get prefix
DB $C7
DW CurrPfxP
LDA CurrPfxB
BNE L20E1
;
; No current prefix
;
LDA LASTDEV
STA OLUnit
JSR PRODOS8
DB $C5
DW OnLineP
;
LDA CurrPfxB+1
AND #$0F ;Get len byte of volname
CLC
ADC #2
STA CurrPfxB
TAY
LDA #'/' ;Prepend and append volname
STA CurrPfxB+1 ; with a slash
STA CurrPfxB,Y
;
; The code below assumes the TxBuf2 area has been
; setup properly by ProDOS8
;
L20E1 LDX TxBuf2 ;Do we have a trailing /?
INX
L20E5 DEX
BEQ L20FC ;No trailing /
LDA #'/'
EOR TxBuf2,X
ASL
BNE L20E5 ;No, keep looking
;
DEX ;Got a trailing /, so remove
STX TxBuf2 ; it by just adjusting len byte
;
JSR PRODOS8 ;Make this the default prefix
DB $C6
DW SDefPfxP
BNE ShowErr
;
; Get the prefix to Edasm's directory
;
L20FC JSR PRODOS8 ;Get prefix
DB $C7
DW PFX3P
BNE ShowErr
JSR L2342 ;Backup ProDOS Quit code
;
; Setup to relocate the EdAsm Interpreter
; to its final location @ $B100
;
LDA #>L2400 ;EI's load addr
STA A1 ;start=$2400
LDA #<L2400
STA A1+1
LDA #$27
STA A2 ;end=$2E27
LDA #$2E
STA A2+1
LDA #>EIStart
STA A4 ;dest
LDA #<EIStart
STA A4+1
LDA #<EIStart-1 ;Jump to $B100 after MOVE completed
PHA
LDA #>EIStart-1
PHA
LDY #0
LDA ROMIN2 ;read ROM
LDA ROMIN2 ;write-enabled LC Bank2 RAM
JMP MOVE
;=================================================
; Use this to set the default prefix
;
SDefPfxP DB $01
DW TxBuf2
;
; Use this parameter block to get the current prefix
;
CurrPfxP DB $01
DW CurrPfxB
;
; EdAsm's Dir is where the 3 files EdAsm.Ed,
; Edasm.Asm and Edasm.System resides
;
PFX3P DB $01
DW EdAsmDir
;
OnLineP DB $02
OLUnit DB $60
DW CurrPfxB+1
;=================================================
ShowErr STA ErrCode
TSX
STX StackP2
LDX #$80
L2144 TXS
L2145 STA CLR80VID
JSR SETNORM
JSR INIT
LDA RDROM2 ;read ROM, write-protect RAM LC Bank2
JSR SETKBD
JSR SETVID
JSR HOME
JSR PRERR ;PRINT "ERR=XX"
LDA ErrCode
JSR $FDD3 ;unsupported mon entry point
JMP MON
;
SendBanr LDA Banner,Y
BPL L2171
JSR COUT
INY
JMP SendBanr
L2171 RTS
;
MSB ON
Banner DB $8D,$8D,$8D
ASC " PRODOS EDITOR-ASSEMBLER //"
DB $8D,$8D,$8D,$8D,$8D,$8D
ASC "ENTER THE DATE AND PRESS RETURN"
DB $8D,$8D
ASC "DD-MMM-YY"
DB 0
MSB OFF
TensT DB 00,10,20,30,40,50,60,70,80,90
Day DB $00
L21CE DB $00
L21CF DB $00
L21D0 DB $00
L21D1 DB $00
MMM DS 3,0
;
L21D5 LDA #BEL+$80
JSR COUT
L21DA LDA #$00
STA CH
L21DE JSR RDKEY
CMP #'0'+$80
BCC L21D5
CMP #'3'+1+$80
BCS L21D5
JSR COUT
AND #$0F
TAX
LDA TensT,X
STA Day
STA L21D0
JMP L220D
;
L21FB LDA L21D0
STA Day
LDA #1
STA CH
JMP L220D ;enter 2nd digit for DD
;
L2208 LDA #BEL+$80
JSR COUT
L220D JSR RDKEY
CMP #BS+$80
BEQ L21DA
CMP #'0'+$80
BCC L2208
CMP #'9'+1+$80
BCS L2208
JSR COUT
AND #$0F
CLC
ADC Day
STA Day
BEQ L21D5
CMP #31+1 ;at most 31
BCS L21D5 ;err
RTS
; Year
L222F LDA #BEL+$80
JSR COUT
L2234 LDA #7
STA CH
L2238 JSR RDKEY
CMP #BS+$80
BEQ L2289
CMP #'0'+$80
BCC L222F
CMP #'9'+1+$80
BCS L222F
JSR COUT
AND #$0F
TAX
LDA TensT,X
STA L21CF
STA L21D1
JMP L226B
;
L2259 LDA L21D1
STA L21CF
LDA #$08
STA CH
JMP L226B
;
L2266 LDA #BEL+$80
JSR COUT
L226B JSR RDKEY
CMP #BS+$80
BEQ L2234
CMP #'0'+$80
BCC L2266
CMP #'9+1+$80
BCS L2266
JSR COUT
AND #$0F
CLC
ADC L21CF
STA L21CF
BEQ L222F
CLC
L2289 RTS
;
L228A DB $A0
MSB ON
Months ASC "JANFEBMARAPRMAYJUNJULAUGSEPOCTNOVDEC"
MSB OFF
;
L22AF LDA #5 ;3rd letter of MMM
STA CH
JMP L22DF
;
L22B6 SEC
RTS
;
; Month entry
;
L22B8 LDA #BEL+$80
JSR COUT
L22BD LDA #3 ;1st letter of MMM
STA CH
L22C1 JSR ToUCase
CMP #BS+$80
BEQ L22B6
JSR PRUCase
BCS L22C1
STA MMM
L22D0 JSR ToUCase
CMP #BS+$80
BEQ L22BD
JSR PRUCase
BCS L22D0
STA MMM+1
L22DF JSR ToUCase
CMP #BS+$80
BNE L22EC
JSR COUT
JMP L22D0
;
L22EC JSR PRUCase
BCS L22DF
STA MMM+2
;
LDX #$00
STX L21CE
L22F9 LDY #$00
INC L21CE
STX L228A
L2301 LDA MMM,Y
CMP Months,X
BNE L2311
INX
INY
CPY #$03
BCC L2301
BEQ L2322 ;match
L2311 LDX L228A
INX
INX
INX
CPX #48 ;bug? (should be 36)
BCC L22F9
;
LDA #3
STA CH
JMP L22B8 ;re-enter
L2322 CLC
RTS
;
; Display char (in A) as uppercase letter
;
PRUCase CMP #'A'+$80
BCC BELL
CMP #'Z'+1+$80
BCS BELL
JSR COUT
CLC
RTS
BELL LDA #BEL+$80
JSR COUT
SEC
RTS
;
ToUCase JSR RDKEY
CMP #$E0 ;should be "a" ($E1)
BCC L2341
AND #$DF
L2341 RTS
;=================================================
; Move ProDOS Quit code fr LCBank2 to main 48K mem
; first. Save code as EdAsm.Swap
;
L2342 LDA RDBANK2 ;read and write-protect RAM LC Bank2
LDA RDBANK2
LDA #>XD000
STA A1 ;start=$D000
LDA #<XD000
STA A1+1
LDA #>X3000
STA A2 ;dest=$3000
LDA #<X3000
STA A2+1
;
LDY #0
L235A LDA (A1),Y
STA (A2),Y
INY
BNE L235A
INC A1+1
INC A2+1
LDA A1+1
CMP #<XD000+$1000 ;$D000-$DFFF
BCC L235A ;Next mem page
;
LDA ROMIN2 ;read ROM
LDA ROMIN2 ;write enable LC Bank2 RAM
JSR PRODOS8
DB $C8
DW OpenSwapP
BEQ L237A
RTS
;
L237A LDA SwapRN
STA WrSwapRN
STA ClsSwapRN
JSR PRODOS8
DB $CB
DW WrSwapP
JSR PRODOS8
DB $CC
DW ClsSwapP
RTS
;=================================================
; These ProDOS parameter blocks are used for EDASM.SWAP
;
X3000 EQU $3000
X4000 EQU $4000 ;addr of 1024-byte file buffer
;
OpenSwapP DB $03
DW SwapFileS
DW X4000
SwapRN DB $00
;
SwapFileS STR 'EDASM.SWAP'
;
WrSwapP DB $04
WrSwapRN DB $B0
DW X3000 ;Data buffer
DW $1000 ;# of bytes to write
DW $0000
;
ClsSwapP DB $01
ClsSwapRN DB $C2
;=================================================
STR ' (c) COPYRIGHT 1983 BY'
STR ' JOHN O. ARKLEY'
STR ' ALL RIGHTS RESERVED'
;DS \,$EA
DS $2400-*,$EA
L2400 EQU *

View File

@ -0,0 +1,60 @@
Name : EQUATES.S
End of file : 1,580
This file was generated using the DiskBrowser utility with minimal editing.
It is meant for viewing purposes only.
SYS
ORG $2000
;=================================================
; Zero page usage by Linker
;
Z80 EQU $80
Z82 EQU $82
SrcP EQU $84 ;ptr into src file data buf
Z86 EQU $86 ;ptr into tempESD buf ($9100)
Z88 EQU $88 ;GP rec ptr
EntRecP EQU $8A ;ptr into DEF/ENTRY table 24-byte records
XtnRecP EQU $8C ;ptr into REF/EXTRN table 8-byte records
SymP EQU $8E ;ptr into $9200-$A8DF 16-byte records (SymbolicName table)
Z8E EQU $8E ;re-cycled
;
cp EQU $90 ;ptr into cmd line buf
MsgP EQU $92
CurrORG EQU $94 ;Starting PC of curr src file
Z96 EQU $96 ;Curr EOF of REL OBJ file
LwrBound EQU $98 ;old offset into curr code image
UprBound EQU $9A ;curr offset into curr code (why is $9B not used?)
Z9C EQU $9C ; image in memory
Z9E EQU $9E ;Flag if a src PN is preceded by an ;
XtnNbr EQU $9F ;# of EXTRNs in REL OBJ file's ESD
FTypeF EQU $A0 ;filetype of target obj file BIN=$01,REL=$80,SYS=$02
;
OptionsF EQU $A1 ;TRUE when the OPTION cmd is encountered
OptFlagT EQU $A2
MapFileF EQU $A2 ;default ON
ERefF EQU $A3 ;default ON
SortLMF EQU $A4 ;default ON
XRefF EQU $A5 ;default ON
NumSortF EQU $A6 ;default OFF
OptDF EQU $A7 ;default OFF
PageF EQU $A8 ;default OFF
;
; Use to help set flags $A2-$A8
; as well as return as a 16-bit value
;
Switch EQU $AB ;ON/OFF ($80/$00)
Value16 EQU $AB ;Value of arithmetic/numeric expression
;
LineCnt EQU $AD
PageCnt EQU $AE
JJJ EQU $AF
III EQU $B1
StrtIdx EQU $B3
EndIdx EQU $B5
Jump EQU $B7
NumRecs EQU $B9 ;Total # of records in ENTRY table
J.TH EQU $BB
I.TH EQU $BD
EntRPJ EQU $BF
EntRPI EQU $C1
;=================================================

View File

@ -0,0 +1,20 @@
Name : EXTERNALS.S
End of file : 826
This file was generated using the DiskBrowser utility with minimal editing.
It is meant for viewing purposes only.
;=================================================
; Memory usage by Linker
;
SrcIOAdr EQU $0800 ;1024-byte buf for REL src file(s) ($0800-$BFFF)
SrcDBuf EQU $0C00 ;R/W data buf for file(s) ($0C00-$1FFF)
X3F00 EQU $3F00 ;1024-byte buf for OBJ/tempESD files ($3F00-$42FF)
X4300 EQU $4300 ;1024-byte buf for LinkMap/tempRLD file ($4300-$46FF)
EntTbl EQU $4700 ;DEFine table (24-byte records) ($4700-$70FF)
XtnTbl EQU $7100 ;REFerence table (8-byte records) ($7100-$90FF)
X9100 EQU $9100 ;databuf-tempESD/REL Obj file ($9100-$91FF)
X9200 EQU $9200 ;1 mem page data buf for code image read
SymTbl EQU $9200 ;SymbolicName table (16-byte records) ($9200-$A8DF?)
XA8E0 EQU $A8E0 ;Upper limit of symbolicname table
;=================================================
CurrPfxB EQU $BB80 ;Curr Prefix set by user in Editor's environment

4543
EDASM.SRC/LINKER/LINK.S Normal file

File diff suppressed because it is too large Load Diff

Binary file not shown.

View File

@ -1,7 +1,7 @@
The disassembled source code of the programs of the PRODOS ASSEMBLER TOOLS RELEASE 1.1 are
distributed in the form of an 800K Universal disk image (.2mg).
distributed in the form of an 800K Universal disk image (.2mg). The relevant source files are in the EDASM.SRC folder and are meant for viewing purposes only.
This disassembled source codes are arranged in 5 folders.
The disassembled source codes are arranged in 5 folders.
If you wish to assemble any of the 5 programs,
1) you should have a copy of the PRODOS Assembler Tools,