A2osX/BASIC.FX/BASIC.S.txt
2022-05-25 20:46:02 +02:00

314 lines
7.3 KiB
Plaintext
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

NEW
AUTO 3,1
.LIST OFF
.OP 65c02
.OR $2000
.TF BASIC.SYSTEM,TSYS
*--------------------------------------
.MA DEBUG
:1 bit $C000
bpl :1
sta $C010
.EM
*--------------------------------------
.INB inc/io.d2.i
*--------------------------------------
HIMEM .EQ $A000
LOWERCASE .EQ 1
*--------------------------------------
BS.E.RANGE .EQ $02
BS.E.NODEV .EQ $03
BS.E.WPROT .EQ $04
BS.E.ENDOFDATA .EQ $05
BS.E.PATHNFND6 .EQ $06
BS.E.PATHNFND7 .EQ $07
BS.E.IO .EQ $08
BS.E.DISKFULL .EQ $09
BS.E.LOCKED .EQ $0A
BS.E.INVOPT .EQ $0B
BS.E.NOBUFFER .EQ $0C
BS.E.MISMATCH .EQ $0D
BS.E.TOOLARGE .EQ $0E
BS.E.NODIRECT .EQ $0F
BS.E.SYNTAX .EQ $10
BS.E.DIRFULL .EQ $11
BS.E.FNOTOPEN .EQ $12
BS.E.DUPFILE .EQ $13
BS.E.FBUSTY .EQ $14
BS.E.FSTILLOPEN .EQ $15
*--------------------------------------
CMDBITS0.PFIX .EQ $80 Prefix needs fetching, pathname optional
CMDBITS0.SLOT .EQ $40 No parameters to be processed
CMDBITS0.RRUN .EQ $20 Command only valid during program
CMDBITS0.FNOPT .EQ $10 Filename is optional
CMDBITS0.CRFLG .EQ $08 CREATE allowed
CMDBITS0.T .EQ $04 File type
CMDBITS0.FN2 .EQ $02 Filename '2' for RENAME
CMDBITS0.FN1 .EQ $01 Filename expected
CMDBITS1.A .EQ $80 Address
CMDBITS1.B .EQ $40 Byte
CMDBITS1.E .EQ $20 End address
CMDBITS1.L .EQ $10 Length
CMDBITS1.LINE .EQ $08 '@' line number
CMDBITS1.SD .EQ $04 Slot and drive numbers
CMDBITS1.F .EQ $02 Field
CMDBITS1.R .EQ $01 Record
CMDBITS1.V .EQ $00 Volume number ignored
*--------------------------------------
ZPPtr1 .EQ 0
ZPPtr2 .EQ 2
ZPInBufPtr .EQ 4
ZPOutBufPtr .EQ 6
ZPnCnt .EQ 8
ZPInMask .EQ 10
ZPBLOfsLBits .EQ 11
ZPBLOfsHBits .EQ 12
ZPBLLenBits .EQ 13
bRAMFlag .EQ 14
ZPCode .EQ 15
ZP.WNDLFT .EQ $20
ZP.WNDWDT .EQ $21
ZP.WNDTOP .EQ $22
ZP.WNDBOT .EQ $23
ZP.CH .EQ $24
ZP.CV .EQ $25
ZP.BASL .EQ $28
ZP.BASH .EQ $29
ZP.PROMPT .EQ $33
ZP.CSW .EQ $36
ZP.KSW .EQ $38
ZP.PCL .EQ $3A
ZP.PCH .EQ $3B
ZP.A1L .EQ $3C
ZP.A1H .EQ $3D
ZP.A2L .EQ $3E
ZP.A2H .EQ $3F
ZP.A4L .EQ $40
ZP.A4H .EQ $41
ZP.CMD .EQ $42
ZP.UNITNUM .EQ $43
ZP.BUFPTR .EQ $44
ZP.BLKNUM .EQ $46
AS.LINNUM .EQ $50
AS.PGRMSTART .EQ $67
AS.VARSTART .EQ $69
AS.ARRAYSTART .EQ $6B
AS.ARRAYEND .EQ $6D
AS.STRINGSTART .EQ $6F
AS.STRINGPTR .EQ $71
AS.HIMEM .EQ $73
AS.CURLINE .EQ $75
AS.LOWTR .EQ $9B
AS.PGRMEND .EQ $AF
AS.TXTPTR .EQ $B8
AS.ERRFLG .EQ $D8
AS.ERRNUM .EQ $DE
AS.TRCFLG .EQ $F2
AS.REMSTK .EQ $F8
*--------------------------------------
ZPXPtr1 .EQ 0
ZPXPtr2 .EQ 2
*--------------------------------------
IO.LINEBUF .EQ $200
*--------------------------------------
DIRENTBUF .EQ $259
DIRENTBUF.STNL .EQ $25D
DIRENTBUF.TYPE .EQ $269
DIRENTBUF.UBLK .EQ $26C
DIRENTBUF.EOF .EQ $26E
DIRENTBUF.ACCESS .EQ $277
DIRENTBUF.AUXT .EQ $278
MLI.PATHBUF .EQ $280
*--------------------------------------
AUX.RAMSIG .EQ $3D0 FFFEF3+"RAM"
*--------------------------------------
DOS.WARMSTART .EQ $03D0
DOS.COLDSTART .EQ $03D3
DOS.FILEMGR .EQ $03D6
DOS.RWTS .EQ $03D9
DOS.FILEMGRPARM .EQ $03DC
DOS.RWTSPARM .EQ $03E3
DOS.RECONNECT .EQ $03DA
DOS.JMPBRKVECT .EQ $03EF
MON.AMPERSANDJMP .EQ $03F5
MON.USRJMP .EQ $03F8
MON.NMIJMP .EQ $03FB
MON.IRQVECT .EQ $03FE
MON.BRKVECT .EQ $03F0
MON.POWERUP .EQ $03F2
MON.POWERUPBYTE .EQ $03F4
*--------------------------------------
MLI.MAXPATH .EQ 64
MLI.C.ALLOCIRQ .EQ $40
MLI.C.DEALLOCIRQ .EQ $41
MLI.C.ATALK .EQ $42
MLI.C.QUIT .EQ $65
MLI.C.READBLOCK .EQ $80
MLI.C.WRITEBLOCK .EQ $81
MLI.C.GETTIME .EQ $82
MLI.C.CREATE .EQ $C0
MLI.C.DESTROY .EQ $C1
MLI.C.RENAME .EQ $C2
MLI.C.SETFILEINFO .EQ $C3
MLI.C.GETFILEINFO .EQ $C4
MLI.C.ONLINE .EQ $C5
MLI.C.SETPREFIX .EQ $C6
MLI.C.GETPREFIX .EQ $C7
MLI.C.OPEN .EQ $C8
MLI.C.NEWLINE .EQ $C9
MLI.C.READ .EQ $CA
MLI.C.WRITE .EQ $CB
MLI.C.CLOSE .EQ $CC
MLI.C.FLUSH .EQ $CD
MLI.C.SETMARK .EQ $CE
MLI.C.GETMARK .EQ $CF
MLI.C.SETEOF .EQ $D0
MLI.C.GETEOF .EQ $D1
MLI.C.SETBUF .EQ $D2
MLI.C.GETBUF .EQ $D3
*--------------------------------------
MLI .EQ $BF00
MLI.DEVPTRS .EQ $BF10
MLI.DEVPTRS3D2 .EQ $BF26
MLI.DEVNUM .EQ $BF30
MLI.DEVCNT .EQ $BF31
MLI.DEVLST .EQ $BF32
MLI.MEMTABL .EQ $BF58
MLI.DATETIME .EQ $BF90
MLI.LEVEL .EQ $BF94
MLI.MACHID .EQ $BF98
MLI.SLTBYT .EQ $BF99
MLI.PFIXPTR .EQ $BF9A
MLI.MLIACTV .EQ $BF9B
MLI.IVERSION .EQ $BFFD
*--------------------------------------
IO.KBD .EQ $C000 R
IO.CLR80STORE .EQ $C000 W
IO.SET80STORE .EQ $C001 W
IO.CLRREADAUX .EQ $C002 W
IO.SETREADAUX .EQ $C003 W
IO.CLRWRITEAUX .EQ $C004 W
IO.SETWRITEAUX .EQ $C005 W
IO.CLRALTZP .EQ $C008 W
IO.SETALTZP .EQ $C009 W
IO.CLR80DISP .EQ $C00C W
IO.SET80DISP .EQ $C00D W
IO.KSTROBE .EQ $C010 W
IO.RROMBNK2 .EQ $C082 R
IO.RRAMWRAMBNK2 .EQ $C083 RR
IO.RROMBNK1 .EQ $C08A R
IO.RRAMWRAMBNK1 .EQ $C08B RR
*--------------------------------------
AS.RESTART .EQ $D43C
AS.RESTART1 .EQ $D43F
AS.FINDLINE .EQ $D61A
AS.CLEAR1 .EQ $D665
AS.NEXTSTMT .EQ $D7D2
AS.EXECSTMT .EQ $D820
AS.BITERRFLG .EQ $D865
AS.NORMAL .EQ $F273
AS.COLDBOOT .EQ $E000
AS.INTPRINTAX .EQ $ED24
*--------------------------------------
MON.BREAKV .EQ $FA59
MON.INIT .EQ $FB2F
MON.HOME .EQ $FC58
MON.CLREOL .EQ $FC9C
MON.RDKEY .EQ $FD0C
MON.KEYIN0 .EQ $FD10
MON.KEYIN .EQ $FD1B
MON.GETLN .EQ $FD6A
MON.CROUT .EQ $FD8E
MON.COUT .EQ $FDED
MON.COUT1 .EQ $FDF0
MON.IIGSID .EQ $FE1F
MON.SETINV .EQ $FE80
MON.SETNORM .EQ $FE84
MON.SETKBD .EQ $FE89
MON.SETVID .EQ $FE93
MON.ENTERMON .EQ $FF69
*--------------------------------------
.INB usr/src/basic.fx/basic.s.ldr
*--------------------------------------
X.Unpak.XatYA sty ZPOutBufPtr
sta ZPOutBufPtr+1
lda PAKME.Table,x
sta ZPInBufPtr
lda PAKME.Table+1,x
sta ZPInBufPtr+1
.INB usr/src/shared/x.unpak.s
*--------------------------------------
PAKME.Table
PAKME.MAIN .DA MAIN.PAK
PAKME.GP .DA GP.PAK
PAKME.AUX .DA AUX.PAK
MAIN.PAK .DA #0
.DA MAIN.LEN
LDR.MAIN.SRC .PH HIMEM
LDR.MAIN.DST .EQ *
.INB usr/src/basic.fx/basic.s.a
.INB usr/src/basic.fx/basic.s.b
.INB usr/src/basic.fx/basic.s.c
.INB usr/src/basic.fx/basic.s.d
MAIN.LEN .EQ *-LDR.MAIN.DST
.EP
GP.PAK .DA #0
.DA GP.LEN
LDR.GP.SRC .PH $BE00
LDR.GP.DST .EQ *
.INB usr/src/basic.fx/basic.s.gp
GP.LEN .EQ *-LDR.GP.DST
.EP
AUX.PAK .DA #0
.DA AUX.LEN
LDR.AUX.SRC .EQ *
LDR.AUX.DST .EQ $E000
BB.PRODOS .EQ $E000
.INB usr/src/shared/x.bb.prodos.s
BB.SOS .EQ $E200
.INB usr/src/shared/x.bb.sos.s
BB.FX2 .EQ $E400
.INB usr/src/shared/x.bb.fx2.s
X.TRkFMT.Z .EQ $10
.PH $E800
.INB usr/src/shared/x.trkfmt.s
.BS $E900-*
.LIST OFF
.INB usr/src/basic.fx/basic.s.xf
.INB usr/src/basic.fx/basic.s.xm
.INB usr/src/basic.fx/basic.s.x
.EP
AUX.LEN .EQ *-LDR.AUX.SRC
*--------------------------------------
.AS "PAKME" TAG
.DA $2000 BIN ORG
.DA #3 Chunk Count
.DA PAKME.Table Chunks
*--------------------------------------
MAN
SAVE usr/src/basic.fx/basic.s
ASM