; ; System equates ; ; OS EQUATES ; ---------- ; ; Syntax: ; Use '=' for addresses ; and '#' for values ; ; IO EQUATES ; ICHID = $0000 ICDNO = $0001 ICCOM = $0002 ICSTA = $0003 ICBAL = $0004 ICBAH = $0005 ICPTL = $0006 ICPTH = $0007 ICBLL = $0008 ICBLH = $0009 ICAX1 = $000A ICAX2 = $000B ICAX3 = $000C ICAX4 = $000D ICAX5 = $000E ICAX6 = $000F ; ; OS VARIABLES FOR XL/XE ; ; PAGE 0 ; NGFLAG = $0001 CASINI = $0002 RAMLO = $0004 TRAMSZ = $0006 CMCMD = $0007 WARMST = $0008 BOOT = $0009 DOSVEC = $000A DOSINI = $000C APPMHI = $000E POKMSK = $0010 BRKKEY = $0011 RTCLOK = $0012 BUFADR = $0015 ICCOMT = $0017 DSKFMS = $0018 DSKUTL = $001A ABUFPT = $001C ICHIDZ = $0020 ICDNOZ = $0021 ICCOMZ = $0022 ICSTAZ = $0023 ICBALZ = $0024 ICBAHZ = $0025 ICPTLZ = $0026 ICPTHZ = $0027 ICBLLZ = $0028 ICBLHZ = $0029 ICAX1Z = $002A ICAX2Z = $002B ICAX3Z = $002C ICAX4Z = $002D ICAX5Z = $002E ICAX6Z = $002F CHKSUM = $0031 BUFRLO = $0032 BUFRHI = $0033 BFENLO = $0034 BFENHI = $0035 LTEMP = $0036 BUFRFL = $0038 RECVDN = $0039 XMTDON = $003A CHKSNT = $003B NOCKSM = $003C BPTR = $003D FTYPE = $003E FEOF = $003F FREQ = $0040 SOUNDR = $0041 CRITIC = $0042 FMSZPG = $0043 ZCHAIN = $004A DSTAT = $004C ATRACT = $004D DRKMSK = $004E COLRSH = $004F TEMP = $0050 HOLD1 = $0051 LMARGN = $0052 RMARGN = $0053 ROWCRS = $0054 COLCRS = $0055 DINDEX = $0057 SAVMSC = $0058 OLDROW = $005A OLDCOL = $005B OLDCHR = $005D OLDADR = $005E FKDEF = $0060 PALNTS = $0062 LOGCOL = $0063 ADRESS = $0064 MLTTMP = $0066 RAMTOP = $006A BUFCNT = $006B BUFSTR = $006C BITMSK = $006E SHFAMT = $006F ROWAC = $0070 COLAC = $0072 ENDPT = $0074 DELTAR = $0076 DELTAC = $0077 KEYDEF = $0079 SWPFLG = $007B HOLDCH = $007C INSDAT = $007D COUNTR = $007E LOMEM = $0080 VNTP = $0082 VNTD = $0084 VVTP = $0086 STMTAB = $0088 STMCUR = $008A STARP = $008C TOPSTK = $0090 POKADR = $0095 DATAD = $00B6 DATALN = $00B7 STOPLN = $00BA SAVCUR = $00BE IOCMD = $00C0 IODVC = $00C1 ERRSAVE = $00C3 COLOUR = $00C8 PTABW = $00C9 LOADFLG = $00CA FR0 = $00D4 FRE = $00DA FR1 = $00E0 FR2 = $00E6 FRX = $00EC EEXP = $00ED NSIGN = $00EE ESIGN = $00EF FCHRFLG = $00F0 DIGRT = $00F1 CIX = $00F2 INBUFF = $00F3 ZTEMP1 = $00F5 ZTEMP4 = $00F7 ZTEMP3 = $00F9 RADFLG = $00FB FLPTR = $00FC FPTR2 = $00FE ; ; PAGE 2 ; VDSLST = $0200 VPRCED = $0202 VINTER = $0204 VBREAK = $0206 VKEYBD = $0208 VSERIN = $020A VSEROR = $020C VSEROC = $020E VTIMR1 = $0210 VTIMR2 = $0212 VTIMR4 = $0214 VIMIRQ = $0216 CDTMV1 = $0218 CDTMV2 = $021A CDTMV3 = $021C CDTMV4 = $021E CDTMV5 = $0220 VVBLKI = $0222 VVBLKD = $0224 CDTMA1 = $0226 CDTMA2 = $0228 CDTMF3 = $022A SRTIMR = $022B CDTMF4 = $022C INTEMP = $022D CDTMF5 = $022E SDMCTL = $022F SDLSTL = $0230 SDLSTH = $0231 SSKCTL = $0232 SPARE = $0233 LPENH = $0234 LPENV = $0235 BRKKY = $0236 VPIRQ = $0238 CDEVIC = $023A CCOMND = $023B CAUX1 = $023C CAUX2 = $023D TMPSIO = $023E ERRFLG = $023F DFLAGS = $0240 DBSECT = $0241 BOOTAD = $0242 COLDST = $0244 RECLEN = $0245 DSKTIM = $0246 PDVMSK = $0247 SHPDVS = $0248 PDMSK = $0249 PPTMPA = $024C PPTMPX = $024D CHSALT = $026B VSFLAG = $026C KEYDIS = $026D FINE = $026E GPRIOR = $026F PADDL0 = $0270 PADDL1 = $0271 PADDL2 = $0272 PADDL3 = $0273 PADDL4 = $0274 PADDL5 = $0275 PADDL6 = $0276 PADDL7 = $0277 STICK0 = $0278 STICK1 = $0279 STICK2 = $027A STICK3 = $027B PTRIG0 = $027C PTRIG1 = $027D PTRIG2 = $027E PTRIG3 = $027F PTRIG4 = $0280 PTRIG5 = $0281 PTRIG6 = $0282 PTRIG7 = $0283 STRIG0 = $0284 STRIG1 = $0285 STRIG2 = $0286 STRIG3 = $0287 HIBYTE = $0288 WMODE = $0289 BLIM = $028A IMASK = $028B JVECK = $028C NEWADR = $028E TXTROW = $0290 TXTCOL = $0291 TINDEX = $0293 TXTMSC = $0294 TXTOLD = $0296 CRETRY = $029C HOLD3 = $029D SUBTMP = $029E HOLD2 = $029F DMASK = $02A0 TMPLBT = $02A1 ESCFLG = $02A2 TABMAP = $02A3 LOGMAP = $02B2 INVFLG = $02B6 FILFLG = $02B7 TMPROW = $02B8 TMPCOL = $02B9 SCRFLG = $02BB HOLD4 = $02BC DRETRY = $02BD SHFLOC = $02BE BOTSCR = $02BF PCOLR0 = $02C0 PCOLR1 = $02C1 PCOLR2 = $02C2 PCOLR3 = $02C3 COLOR0 = $02C4 COLOR1 = $02C5 COLOR2 = $02C6 COLOR3 = $02C7 COLOR4 = $02C8 RUNADR = $02C9 HIUSED = $02CB ZHIUSE = $02CD GBYTEA = $02CF LOADAD = $02D1 ZLOADA = $02D3 DSCTLN = $02D5 ACMISR = $02D7 KRPDER = $02D9 KEYREP = $02DA NOCLIK = $02DB HELPFG = $02DC DMASAV = $02DD PBPNT = $02DE PBUFSZ = $02DF RUNAD = $02E0 INITAD = $02E2 RAMSIZ = $02E4 MEMTOP = $02E5 MEMLO = $02E7 HNDLOD = $02E9 DVSTAT = $02EA CBAUDL = $02EE CBAUDH = $02EF CRSINH = $02F0 KEYDEL = $02F1 CH1 = $02F2 CHACT = $02F3 CHBAS = $02F4 NEWROW = $02F5 NEWCOL = $02F6 ROWINC = $02F8 COLINC = $02F9 CHAR = $02FA ATACHR = $02FB CH = $02FC FILDAT = $02FD DSPFLG = $02FE SSFLAG = $02FF ; ; PAGE 3 ; DDEVIC = $0300 DUNIT = $0301 DCOMND = $0302 DSTATS = $0303 DBUFLO = $0304 DBUFHI = $0305 DTIMLO = $0306 DUNUSE = $0307 DBYTLO = $0308 DBYTHI = $0309 DAUX1 = $030A DAUX2 = $030B TIMER1 = $030C ADDCOR = $030E CASFLG = $030F TIMER2 = $0310 TEMP1 = $0312 TEMP2 = $0314 TEMP3 = $0315 SAVIO = $0316 TIMFLG = $0317 STACKP = $0318 TSTAT = $0319 HATABS = $031A PUPBT1 = $033D PUPBT2 = $033E PUPBT3 = $033F IOCB0 = $0340 IOCB1 = $0350 IOCB2 = $0360 IOCB3 = $0370 IOCB4 = $0380 IOCB5 = $0390 IOCB6 = $03A0 IOCB7 = $03B0 PRNBUF = $03C0 SUPERF = $03E8 CKEY = $03E9 CASSBT = $03EA CARTCK = $03EB DERRF = $03EC ACMVAR = $03ED BASICF = $03F8 MINTLK = $03F9 GINTLK = $03FA CHLINK = $03FB CASBUF = $03FD ; ; HARDWARE REGISTERS ; ; POKEY ; AUDF1 = $D200 AUDC1 = $D201 AUDF2 = $D202 AUDC2 = $D203 AUDF3 = $D204 AUDC3 = $D205 AUDF4 = $D206 AUDC4 = $D207 AUDCTL = $D208 STIMER = $D209 SKREST = $D20A POTGO = $D20B SEROUT = $D20D IRQEN = $D20E SKCTL = $D20F ; ; PIA ; PORTA = $D300 PORTB = $D301 PACTL = $D302 PBCTL = $D303 ; ; ROM VECTORS ; CHARSET1 = $E000 EDITRV = $E400 SCRENV = $E410 KEYBDV = $E420 PRINTV = $E430 CASETV = $E440 DSKIV = $E450 DSKINV = $E453 CIOV = $E456 SIOV = $E459 SETVBV = $E45C SYSVBV = $E45F XITVBV = $E462 SIOINV = $E465 SENDEV = $E468 INTINV = $E46B CIOINV = $E46E SELFSV = $E471 WARMSV = $E474 COLDSV = $E477 RBLOKV = $E47A CSOPIV = $E47D PUPDIV = $E480 SELFTSV = $E483 PENTV = $E486 PHUNLV = $E489 PHINIV = $E48C GPDVV = $E48F ; Added by Nathan Hartwell ICIO = $E4C1 IIN = $E4DC CIO = $E4DF CIO_NERR = $E510 CIO_LPHO = $E515 CIO_CIO = $E51A CIO_OPEN = $E53F CIO_INIT = $E55C CIO_POLL = $E576 CIO_CLOS = $E57C CIO_ESSC = $E597 CIO_GET = $E5B2 CIO_PUT = $E610 CIO_SETS = $E670 CIO_CCO = $E672 CIO_CHEP = $E695 CIO_DBL = $E6BB CIO_DBP = $E6C8 CIO_IBP = $E6D1 CIO_SFBL = $E6D8 CIO_EHC = $E6EA CIO_IDH = $E6F4 CIO_SHT = $E6FF CIO_FDH = $E716 PHR = $E739 PHR_POLL = $E7BE PHR_LH = $E7DE PHR_GBR = $E816 PHR_GNLB = $E833 PHR_SHC = $E85D PHR_HWSI = $E894 PHR_WSIC = $E898 PHR_CSI = $E89E PHR_IHUM = $E8C0 PHR_IH = $E900 PHR_HU = $E915 SIO = $E95C SIO_MAIN = $E971 SIO_CSO = $EA2A SIO_WCA = $EA37 SIO_SBSB = $EA88 SIO_PSOR = $EAAD SIO_PSOC = $EAEC SIO_RCV = $EAFD SIO_TOUT = $EB27 SIO_PSIR = $EB2C SIO_SBP = $EB87 SIO_PCIO = $EB9D SIO_TEXP = $EC11 SIO_ESS = $EC17 SIO_ESR = $EC40 SIO_SSR = $EC56 SIO_DSR = $EC84 SIO_GDT = $EC9A SIO_TSIH = $ECA9 SIO_SID = $ECAF SIO_STW = $ECC0 SIO_CBR = $ECC8 SIO_AVV = $ED2E SIO_SIBR = $ED3D SIO_PBK = $EDC7 SIO_SSVP = $EDE2 TPFV = $EDF9 NTSC_PAL = $EE11 SMA = $EE1D DLEC = $EE2D AGM = $EE4D DLV = $EE5D LSCOLS = $EE6D MCOLCNTS = $EE7D MROWCNTS = $EE8D RSCNTS = $EE9D DSPMSKS = $EEAD PHE = $EEBC PHE_POLL = $EEF9 PHE_PUT = $EF26 SIN = $EF6E SIN_PSO = $EF8E SIN_PEO = $EF94 SIN_COC = $EF9C SIN_SGBR = $F180 SIN_GDUC = $F18F SIN_SPBR = $F184 ; SIN_CEOL = $F184 SIN_PPNT = $F1CA SIN_DISP = $F1E9 SIN_SEC = $F208 SIN_STAT = $F21E SIN_SES = $F22D SIN_SECL = $F22E ; SIN_EGB = $F24A ; SIN_EPB = $F2B0 SIN_PC = $F2BE GETCHAR = $F24A PUTCHAR = $F2B0 IGN = $F2F8 KGB = $F2FD KGB_ECH = $F3E0 KGB_MCU = $F3E6 KGB_MCD = $F3F3 KGB_MCL = $F400 KGB_MCRM = $F40A KGB_SCC = $F40C KGB_MCP = $F411 KGB_MCLM = $F41B KGB_CLRS = $F420 KGB_MCH = $F440 KGB_TCH = $F47A KGB_STAB = $F495 KGB_CTAB = $F49A KGB_INSC = $F49F KGB_DELC = $F4D5 KGB_INSL = $F50C KGB_DELL = $F52D KGB_BELL = $F556 KGB_CBOT = $F55F KGB_DBDD = $F565 KGB_SDFS = $F569 KGB_DBSD = $F578 KGB_SSDL = $F5A0 KGB_CCRC = $F5AC KGB_ACR = $F60A KGB_RWS = $F661 KGB_RTRN = $F665 KGB_SEP = $F6AE KGB_CCRR = $F6BC KGB_RDUC = $F718 OS_BMI = $F723 SCR = $F7F7 CBC = $F8B1 CBC_DELL = $F918 CBC_CCC = $F93C CBC_SRCV = $F94C CBC_RRC = $F957 CBC_SWAP = $F962 CBC_SKC = $F983 CBC_SCLE = $F997 CBC_SMSC = $F9A6 CBC_PSSC = $F9AF TMSK = $FB04 TMSK_DSC = $FB08 TMSK_CCR = $FB0D TMSK_SFK = $FB3D TMSK_AIC = $FB49 TMSK_IAC = $FB4D TMSK_KD = $FB51 TMSK_FKD = $FC11 KIR = $FC19 FDL = $FCC4 CIN = $FCD8 PIN = $FE99 PIN_OPEN = $FEC2 PIN_PUT = $FECB PIN_FILL = $FEED PIN_PPUT = $FEF6 PIN_CLOS = $FF07 PIN_STUP = $FF17 PIN_PTS = $FF44 PIN_PPM = $FF4B VFR = $FF73 VSR = $FF92 OSREVDD = $FFEE OSREVMM = $FFEF OSREVYY = $FFF0 OSOPT = $FFF1 OSPNA1 = $FFF2 OSPNA2 = $FFF3 OSPNN1 = $FFF4 OSPNN2 = $FFF5 OSPNN3 = $FFF6 OSREV = $FFF7 OS_CSUML = $FFF8 OS_CSUMH = $FFF9 NMIV = $FFFA RESETV = $FFFC IRQV = $FFFE ; ; XL/XE ROM INFO ; CSUM1L = $C000 CSUM1H = $C001 ROMREVDD = $C002 ROMREVMM = $C003 ROMREVYY = $C004 ROMOPT = $C005 PARTNOA1 = $C006 PARTNOA2 = $C007 PARTNON1 = $C008 PARTNON2 = $C009 PARTNON3 = $C00A ROMREVNO = $C00B INIT_IH = $C00C NMI_INIT = $C018 IRQ_PROC = $C02C BRK_IRQ = $C092 IRQ_CNT = $C0A0 IRQ_TBL = $C0CF IMM_VBI = $C0E2 ; ugh____unimportant stuff in here____later WARMSTRT = $C290 RST_PROC = $C2AA COLDSTRT = $C2C8 PRESTMEM = $C2CA INITCART = $C429 PROCACMI = $C42C BTERRMSG = $C43D ; more misc stuff here HW_INIT = $C4DA SW_INIT = $C535 TRY_DISK = $C58B BOOTDISK = $C5BB FINIBOOT = $C5C9 EXECBLDR = $C629 INIT_SW = $C63B D_B_E_M = $C63E NXT_SECT = $C659 TRY_CASS = $C66E INIT_DIO = $C6A3 DIO = $C6B3 SET_BUFF = $C73A RELOCATE = $C745 END_RCRD = $C795 GET.BYTE = $C7CF EXEC_RUN = $C7D2 TXT_RCRD = $C7D5 RELO_TXT = $C851 HWR_RCRD = $C86D HLO_RCRD = $C892 GOSLFTST = $C8FC INIT_GPD = $C90C PIO = $C933 PIOVT = $C991 NEXT_GPD = $C9AF INVOK_PD = $C9CA INIT_PH = $CA29 STSTDATA = $CA57 ;LCD Modification Routines LCD_DELAY= $CB65 LCD_WCTRL= $CB70 LCD_WDATA= $CB77 LCD_WRSTR= $CB7E LCD_INIT = $CB9F LCD_RAT = $CBB8 LCD_STCRS= $CBBC LCD_MSG = $CBC7 LCD_RESET= $CBDA LCD_DBYTE= $CBE8 LCD_DNYBL= $CBF1 ; ; User equates ; SDOS_RAM_OFF= $0737 SDOS_RAM_ON= $0732 ; ; Code equates ; MODE = $0091 INVFLAG = $0092 PROMPT = $0093 YSAV = $0094 YSAV1 = $0095 VGETKEY = $0098 PCL = $009A PCH = $009B A1L = $009C A1H = $009D A2L = $009E A2H = $009F A3L = $00A0 A3H = $00A1 A4L = $00A2 A4H = $00A3 A5L = $00A4 A5H = $00A5 ACC = $00A6 XREG = $00A7 YREG = $00A8 STATUS = $00A9 SPNT = $00AA SPKFLG = $00AB LMNEM = $00AC RMNEM = $00AD LENGTH = $00AE FORMAT = $00AF STRPL = $00B0 STRPH = $00B1 BASL = $00B2 BASH = $00B3 IN = $0400 CART_INIT= $BFFE ; ; Start of code ; *= $5000 ; START LDA # PUT_CHR STA FKDEF+1 LDA # GET_KEY STA VGETKEY+1 LDA # MONZ STA PCH LDA # SHOW_BRK STA VBREAK+1 LDA #$15 STA ROWCRS LDX #$FF TXS JSR SAVE JSR PROC_SB JMP MONZ CLR_LINE LDA COLCRS PHA TAY CL_LOOP LDA #$20 JSR COUT INY CPY #$27 BCC CL_LOOP LDA #$FE JSR COUT LDA #$FF JSR COUT PLA STA COLCRS RTS SHOW_BRK JSR PRSTR .BYTE "BRK" .BYTE $FF LDX #$FF TXS CLI JMP MONZ CLR_SCRN LDA #$7D JMP COUT PRINT_CR LDA #$9B JMP COUT PRSTR PLA STA STRPL PLA STA STRPH PRSTR1 INC STRPL BNE PRSTR2 INC STRPH PRSTR2 LDY #$00 LDA (STRPL),Y CMP #$FF BEQ PRSTR3 JSR COUT JMP PRSTR1 PRSTR3 LDA STRPH PHA LDA STRPL PHA RTS SRCH1 LDA (A1L),Y CMP A4L BNE SRCH2 JSR PRA1 LDA (A1L),Y JSR PRBYTE LDA #$20 JSR COUT LDA #$28 JSR COUT LDA A4L JSR PRBYTE LDA #$29 JSR COUT SRCH2 JSR NXTA1 BCC SRCH1 RTS GET_KEY STX XREG JSR KGB LDX XREG RTS PUT_CHR STY YREG STA ACC STX XREG CMP #$1B BCC ISCHR_BS JSR PUTCHAR PUT_DONE LDY YREG LDA ACC LDX XREG RTS ISCHR_BS CMP #$08 BNE IS_DEL PHA LDA #$7E JSR COUT PLA BNE PUT_DONE IS_DEL CMP #$7E BNE IS_LEFT PHA LDA #$7E JSR COUT PLA BNE PUT_DONE IS_LEFT CMP #$1E BNE IS_RIGHT PHA LDA #$7E JSR COUT PLA BNE PUT_DONE IS_RIGHT CMP #$1F BNE PUT_DONE PHA LDA #$1F JSR COUT PLA BNE PUT_DONE SCRN2 BCC RTMSKZ LSR A LSR A LSR A LSR A RTMSKZ AND #$0F RTS INSDS1 LDX PCL LDY PCH JSR PRYX2 JSR PRBLNK LDA (PCL,X) TAY LSR A BCC IEVEN ROR A BCS ERR CMP #$A2 BEQ ERR AND #$87 IEVEN LSR A TAX LDA FMT1,X JSR SCRN2 BNE GETFMT ERR LDY #$80 LDA #$00 GETFMT TAX LDA FMT2,X STA FORMAT AND #$03 STA LENGTH TYA AND #$8F TAX TYA LDY #$03 CPX #$8A BEQ MNNDX3 MNNDX1 LSR A BCC MNNDX3 LSR A MNNDX2 LSR A ORA #$20 DEY BNE MNNDX2 INY MNNDX3 DEY BNE MNNDX1 RTS INSTDSP JSR INSDS1 PHA PRNTOP LDA (PCL),Y JSR PRBYTE LDX #$01 PRNTBL JSR PRBL2 CPY LENGTH INY BCC PRNTOP LDX #$03 CPY #$04 BCC PRNTBL PLA TAY LDA MNEML,Y STA LMNEM LDA MNEMR,Y STA RMNEM PRMN1 LDA #$00 LDY #$05 PRMN2 ASL RMNEM ROL LMNEM ROL A DEY BNE PRMN2 ADC #$3F JSR COUT DEX BNE PRMN1 JSR PRBLNK LDY LENGTH LDX #$06 PRADR1 CPX #$03 BEQ PRADR5 PRADR2 ASL FORMAT BCC PRADR3 LDA CHAR1-1,X JSR COUT LDA CHAR2-1,X BEQ PRADR3 JSR COUT PRADR3 DEX BNE PRADR1 RTS PRADR4 DEY BMI PRADR2 JSR PRBYTE PRADR5 LDA FORMAT CMP #$E8 LDA (PCL),Y BCC PRADR4 RELADR JSR PCADJ3 TAX INX BNE PRNTYX INY PRNTYX TYA PRNTAX JSR PRBYTE PRNTX TXA JMP PRBYTE PRBLNK LDX #$03 PRBL2 LDA #$20 PRBL3 JSR COUT DEX BNE PRBL2 RTS PCADJ SEC PCADJ2 LDA LENGTH PCADJ3 LDY PCH TAX BPL PCADJ4 DEY PCADJ4 ADC PCL BCC RTS2 INY RTS2 RTS ; FMT1 BYTES: XXXXXXY0 INSTRS ; IF Y=0 THEN LEFT HALF BYTE ; IF Y=1 THEN RIGHT HALF BYTE ; (X=INDEX) FMT1 .BYTE $04,$20,$54,$30 .BYTE $0D,$80,$04,$90 .BYTE $03,$22,$54,$33 .BYTE $0D,$80,$04,$90 .BYTE $04,$20,$54,$33 .BYTE $0D,$80,$04,$90 .BYTE $04,$20,$54,$3B .BYTE $0D,$80,$04,$90 .BYTE $00,$22,$44,$33 .BYTE $0D,$C8,$44,$00 .BYTE $11,$22,$44,$33 .BYTE $0D,$C8,$44,$A9 .BYTE $01,$22,$44,$33 .BYTE $0D,$80,$04,$90 .BYTE $01,$22,$44,$33 .BYTE $0D,$80,$04,$90 .BYTE $26,$31,$87,$9A FMT2 .BYTE $00 ; ERR .BYTE $21 ; IMM .BYTE $81 ; Z-PAGE .BYTE $82 ; ABS .BYTE $00 ; IMPLIED .BYTE $00 ; ACCUMULATOR .BYTE $59 ; (ZPAG,X) .BYTE $4D ; (ZPAG),Y .BYTE $91 ; ZPAG,X .BYTE $92 ; ABS,X .BYTE $86 ; ABS,Y .BYTE $4A ; (ABS) .BYTE $85 ; ZPAG,Y .BYTE $9D ; RELATIVE CHAR1 .BYTE ",),#($" CHAR2 .BYTE $59,$00,$58,$24,$24,$00 ;CHAR2: "Y",0,"X$$",0 ; MNEML IS OF FORM: ; (A) XXXXX000 ; (B) XXXYY100 ; (C) 1XXX1010 ; (D) XXXYYY10 ; (E) XXXYYY01 ; (X=INDEX) MNEML .BYTE $1C,$8A,$1C,$23 .BYTE $5D,$8B,$1B,$A1 .BYTE $9D,$8A,$1D,$23 .BYTE $9D,$8B,$1D,$A1 .BYTE $00,$29,$19,$AE .BYTE $69,$A8,$19,$23 .BYTE $24,$53,$1B,$23 .BYTE $24,$53,$19,$A1 ;FORMAT A .BYTE $00,$1A,$5B,$5B .BYTE $A5,$69,$24,$24 ;FORMAT B .BYTE $AE,$AE,$A8,$AD .BYTE $29,$00,$7C,$00 ;FORMAT C .BYTE $15,$9C,$6D,$9C .BYTE $A5,$69,$29,$53 ;FORMAT D .BYTE $84,$13,$34,$11 .BYTE $A5,$69,$23,$A0 ;FORMAT E MNEMR .BYTE $D8,$62,$5A,$48 .BYTE $26,$62,$94,$88 .BYTE $54,$44,$C8,$54 .BYTE $68,$44,$E8,$94 .BYTE $00,$B4,$08,$84 .BYTE $74,$B4,$28,$6E .BYTE $74,$F4,$CC,$4A .BYTE $72,$F2,$A4,$8A ;FORMAT A .BYTE $00,$AA,$A2,$A2 .BYTE $74,$74,$74,$72 ;FORMAT B .BYTE $44,$68,$B2,$32 .BYTE $B2,$00,$22,$00 ;FORMAT C .BYTE $1A,$1A,$26,$26 .BYTE $72,$72,$88,$C8 ;FORMAT D .BYTE $C4,$CA,$26,$48 .BYTE $44,$44,$A2,$C8 ;FORMAT E REGDSP JSR CROUT RGDSP1 LDA #ACC STA A3H LDX #$FB RDSP1 LDA #$20 JSR COUT LDA RTBL-$FB,X JSR COUT LDA #$3D JSR COUT LDA ACC+5,X JSR PRBYTE INX BMI RDSP1 RTS RTBL .BYTE "AXYPS" BASCALC PHA LDA SAVMSC STA BASL LDA SAVMSC+1 STA BASH PLA TAX LDA BASL BASCLC2 ADC #$28 BCC BASCLC3 INC BASH BASCLC3 DEX BNE BASCLC2 RTS STOADV LDY COLCRS STA (BASL),Y ADVANCE INC COLCRS LDA COLCRS CMP ICDNOZ BCS CR RTS3 RTS BS DEC COLCRS BPL RTS3 LDA #$27 STA COLCRS DEC COLCRS UP LDA #$00 CMP ROWCRS BCS RTS4 DEC ROWCRS LDA ROWCRS VTABZ JSR BASCALC RTS4 RTS ESC1 EOR #$C0 BEQ HOME ADC #$FD BCC ADVANCE BEQ BS ADC #$FD BCC LF BEQ UP ADC #$FD BCC CLREOL BNE RTS4 HOME JMP CLR_SCRN CR LDA #$00 STA COLCRS LF INC ROWCRS LDA ROWCRS CMP #$17 BCC VTABZ DEC ROWCRS RTS CLREOL JMP CLR_LINE NXTA4 INC A4L BNE NXTA1 INC A4H NXTA1 LDA A1L CMP A2L LDA A1H SBC A2H INC A1L BNE RTS4B INC A1H RTS4B RTS RD_KEY JMP (VGETKEY) KEYIN2 JMP RD_KEY ESC JSR RD_KEY JSR ESC1 RDCHAR JSR RD_KEY CMP #$1B BEQ ESC RTS NOTCR LDA INVFLAG PHA LDA IN,X JSR COUT PLA STA INVFLAG LDA IN,X CMP #$08 BEQ BCKSPC CMP #$7E BEQ BCKSPC CMP #$1E BEQ BCKSPC CMP #$18 BEQ CANCEL CPX #$F8 BCC NOTCR1 JSR BELL NOTCR1 INX BNE NXTCHAR CANCEL LDA #$5C JSR COUT GETLNZ JSR CROUT GETLN LDA PROMPT JSR COUT LDX #$01 BCKSPC TXA BEQ GETLN DEX NXTCHAR JSR RDCHAR CMP #$15 BNE CAPTST CAPTST CMP #$60 BCC ADDINP AND #$FF ADDINP STA IN,X CMP #$9B BNE NOTCR JSR CLREOL CROUT LDA #$9B BNE COUT PRA1 LDY A1H LDX A1L PRYX2 JSR CROUT JSR PRNTYX LDY #$00 LDA #$2D JMP COUT XAM8 LDA A1L ORA #$07 STA A2L LDA A1H STA A2H MODSCHK LDA A1L AND #$07 BNE DATAOUT XAM JSR PRA1 DATAOUT LDA #$20 JSR COUT LDA (A1L),Y JSR PRBYTE JSR NXTA1 BCC MODSCHK RTS XAMPM LSR A BCC XAM LSR A LSR A LDA A2L BCC ADD EOR #$FF ADD ADC A1L PHA LDA #$3D JSR COUT PLA PRBYTE PHA LSR A LSR A LSR A LSR A JSR PRHEX2 PLA PRHEX AND #$0F PRHEX2 ORA #$30 CMP #$3A BCC COUT ADC #$06 COUT JMP (FKDEF) BL1 DEC YSAV BEQ XAM8 BLANK DEX BNE SETMDZ CMP #$3A BNE XAMPM STA MODE LDA A2L STA (A3L),Y INC A3L BNE RTS5 INC A3H RTS5 RTS SETMODE LDY YSAV LDA IN-1,Y SETMDZ STA MODE RTS LT LDX #$01 LT2 LDA A2L,X STA A4L,X STA A5L,X DEX BPL LT2 RTS MOVE LDA (A1L),Y STA (A4L),Y JSR NXTA4 BCC MOVE RTS VFY LDA (A1L),Y CMP (A4L),Y BEQ VFYOK JSR PRA1 LDA (A1L),Y JSR PRBYTE LDA #$20 JSR COUT LDA #$28 JSR COUT LDA (A4L),Y JSR PRBYTE LDA #$29 JSR COUT VFYOK JSR NXTA4 BCC VFY RTS LIST JSR A1PC LDA #$14 LIST2 PHA JSR INSTDSP JSR PCADJ STA PCL STY PCH PLA SEC SBC #$01 BNE LIST2 RTS A1PC TXA BEQ A1PCRTS A1PCLP LDA A1L,X STA PCL,X DEX BPL A1PCLP A1PCRTS RTS GO JSR A1PC JSR RESTORE JMP (PCL) REGZ JMP REGDSP SEARCH JMP SRCH1 CRMON JSR BL1 PLA PLA BNE MONZ SETNORM USR RTS GOCART JMP (CART_INIT) EXIT JMP $E477 BELL LDA #$FD JMP COUT RESTORE LDA STATUS PHA LDA ACC RESTR1 LDX XREG LDY YREG PLP RTS SAVE STA ACC SAV1 STX XREG STY YREG PHP PLA STA STATUS TSX STX SPNT CLD RTS MON CLD JSR BELL MONZ LDA #'] STA PROMPT JSR GETLNZ JSR ZMODE NXTITM JSR GETNUM STY YSAV LDY #$11 CHRSRCH DEY BMI MON CMP CHRTBL,Y BNE CHRSRCH JSR TOSUB LDY YSAV JMP NXTITM DIG LDX #$03 ASL A ASL A ASL A ASL A NEXTBIT ASL A ROL A2L ROL A2H DEX BPL NEXTBIT NXTBAS LDA MODE BNE NXTBS2 LDA A2H,X STA A1H,X STA A3H,X NXTBS2 INX BEQ NXTBAS BNE NXTCHR GETNUM LDX #$00 STX A2L STX A2H NXTCHR LDA IN,Y INY EOR #$30 CMP #$0A BCC DIG ADC #$88 CMP #$FA BCS DIG RTS TOSUB LDA SUBTBH,Y PHA LDA SUBTBL,Y PHA LDA MODE ZMODE LDY #$00 STY MODE RTS CHRTBL .BYTE $BC ; ^C .BYTE $B2 ; ^Y .BYTE $BE ; ^E .BYTE $EF ; V .BYTE $EC ; S .BYTE $BB ; ^B .BYTE $A6 ; - .BYTE $A4 ; + .BYTE $06 ; M .BYTE $95 ; < .BYTE $07 ; N .BYTE $05 ; L .BYTE $00 ; G .BYTE $93 ; (colon) .BYTE $A7 ; (period) .BYTE $34 ; ENTER .BYTE $99 ; (blank) SUBTBL .BYTE EXIT .BYTE >USR .BYTE >REGZ .BYTE >VFY .BYTE >SEARCH .BYTE >GOCART .BYTE >SETMODE .BYTE >SETMODE .BYTE >MOVE .BYTE >LT .BYTE >SETNORM .BYTE >LIST .BYTE >GO .BYTE >SETMODE .BYTE >SETMODE .BYTE >CRMON .BYTE >BLANK PROC_SB JSR HOME JSR BASCALC BANNER JSR PRINT_CR JSR PRINT_CR LDX #$00 LDY #$0E TTL_LOOP LDA PRG_TTL,X STA (SAVMSC),Y INY INX CPX #$0C BNE TTL_LOOP RTS PRG_TTL .SBYTE "Atari MegaXE"