; da65 V2.10.5 - (C) Copyright 2000-2005, Ullrich von Bassewitz ; Created: 2005-07-18 12:24:58 ; Input file: ATARIOSB.ROM ; Page: 1 .setcpu "6502" LINZBS := $0000 CASINI := $0002 RAMLO := $0004 TRAMSZ := $0006 TSTDAT := $0007 WARMST := $0008 BOOT_OK := $0009 DOSVEC := $000A DOSINI := $000C APPMHI := $000E POKMSK := $0010 BRKKEY := $0011 RTCLOK := $0012 BUFADR := $0015 ICCOMT := $0017 DSKFMS := $0018 DSKUTL := $001A PTIMOT := $001C PBPNT := $001D PBUFSZ := $001E PTEMP := $001F ICHIDZ := $0020 ICDNOZ := $0021 ICCOMZ := $0022 ICSTAZ := $0023 ICBALZ := $0024 ICBAHZ := $0025 ICPTLZ := $0026 ICPTHZ := $0027 ICBLLZ := $0028 ICBLHZ := $0029 ICAX1Z := $002A ICAX2Z := $002B ICSPRZ := $002C ICIDNO := $002E CIOCHR := $002F STATUS := $0030 CHKSUM := $0031 BUFRLO := $0032 BUFRHI := $0033 BFENLO := $0034 BFENHI := $0035 CRETRY := $0036 DRETRY := $0037 BUFRFL := $0038 RECVDN := $0039 XMTDON := $003A CHKSNT := $003B NOCKSM := $003C BPTR := $003D FTYPE := $003E FEOF := $003F FREQ := $0040 SOUNDR := $0041 CRITIC := $0042 FMSZPG := $0043 CKEY := $004A CASSBT := $004B DSTAT := $004C ATRACT := $004D DRKMSK := $004E COLRSH := $004F TMPCHR := $0050 HOLD1 := $0051 LMARGN := $0052 RMARGN := $0053 ROWCRS := $0054 COLCRS := $0055 DINDEX := $0057 SAVMSC := $0058 OLDROW := $005A OLDCOL := $005B OLDCHR := $005D OLDADR := $005E NEWROW := $0060 NEWCOL := $0061 LOGCOL := $0063 MLTTMP := $0066 SAVADR := $0068 RAMTOP := $006A BUFCNT := $006B BUFSTR := $006C BITMSK := $006E SHFAMT := $006F ROWAC := $0070 COLAC := $0072 ENDPT := $0074 DELTAR := $0076 DELTAC := $0077 L0078 := $0078 ROWINC := $0079 COLINC := $007A SWPFLG := $007B HOLDCH := $007C INSDAT := $007D COUNTR := $007E ZROFRE := $0080 FR0 := $00D4 FRE := $00DA FR1 := $00E0 FR2 := $00E6 FRX := $00EC NSIGN := $00ED ESIGN := $00EF FCHFLG := $00F0 DIGRT := $00F1 CIX := $00F2 INBUFF := $00F3 ZTEMP1 := $00F5 ZTEMP4 := $00F7 ZTEMP3 := $00F9 RADFLG := $00FB FLPTR := $00FC FPTR2 := $00FE 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 SSKCTL := $0232 spare_0233 := $0233 LPENH := $0234 LPENV := $0235 BRKKY := $0236 spare_0238 := $0238 spare_0239 := $0239 CDEVIC := $023A CAUX1 := $023C CAUX2 := $023D TEMP := $023E ERRFLG := $023F DFLAGS := $0240 DBSECT := $0241 BOOTAD := $0242 COLDST := $0244 spare_0245 := $0245 DSKTIM := $0246 LINBUF := $0247 GTIA := $026F CSTAT := $0288 WMODE := $0289 BLIM := $028A spare_028B := $028B L028C := $028C NEWADR := $028E TXTROW := $0290 TXTCOL := $0291 TINDEX := $0293 TXTMSC := $0294 TXTOLD := $0296 spare_0298 := $0298 TMPX1 := $029C 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 HOLD5 := $02BD SHFLOK := $02BE BOTSCR := $02BF PCOLR0 := $02C0 COLOR0 := $02C4 spare_02C9 := $02C9 GLBABS := $02E0 RAMSIZ := $02E4 MEMTOP := $02E5 MEMLO := $02E7 spare_03E9 := $02E9 DVSTAT := $02EA CBAUDL := $02EE CRSINH := $02F0 KEYDEL := $02F1 CH1 := $02F2 CHACT := $02F3 CHBAS := $02F4 CHAR := $02FA ATACHR := $02FB FILDAT := $02FC DSPFLG := $02FE SSFLAG := $02FF DDEVIC := $0300 DUNIT := $0301 DCOMND := $0302 DSTATS := $0303 DBUFLO := $0304 DBUFHI := $0305 DTIMLO := $0306 DBYTLO := $0308 DBYTHI := $0309 DAUX1 := $030A DAUX2 := $030B TIMER1 := $030C ADDCOR := $030E CASFLG := $030F TIMER2 := $0310 TEMP1 := $0312 TEMP2 := $0313 TEMP_xxx := $0314 TEMP3 := $0315 SAVIO := $0316 TIMFLG := $0317 STACKP := $0318 TSTAT := $0319 HATABS := $031A MAXDEV := $0321 PUPBT1 := $033D PUPBT2 := $033E PUPBT3 := $033F ICHID := $0340 ICDNO := $0341 ICCOM := $0342 ICSTA := $0343 ICBAL := $0344 ICBAH := $0345 ICPTL := $0346 ICPTH := $0347 ICBLL := $0348 ICBLH := $0349 ICAX1 := $034A ICAX2 := $034B ICAX3 := $034C ICAX4 := $034D ICAX5 := $034E ICAX6 := $034F PRNBUF := $03C0 L03E8 := $03E8 CASBUF := $03FD L0443 := $0443 USAREA := $0480 L049E := $049E L04F9 := $04F9 PAGE5 := $0500 L0554 := $0554 LBPR1 := $057E LBUFF := $0580 L05AF := $05AF PLYARG := $05E0 FPSCR := $05E6 FPSCR1 := $05EC LBPR2 := $05FE LBFEND := $05FF PAGE6 := $0600 L060A := $060A L0665 := $0665 L06C0 := $06C0 BOOTRG := $0700 L071A := $071A L0775 := $0775 L07D0 := $07D0 L6666 := $6666 RITCAR := $8000 L9FFA := $9FFA L9FFE := $9FFE LFTCAR := $A000 LBFFA := $BFFA LBFFE := $BFFE C0PAGE := $C000 rom_os_base := $C800 CHORG2 := $CC00 HPOSP0 := $D000 SIZEP0 := $D008 SIZEM := $D00C GRAFP0 := $D00D GRAFM := $D011 COLPM0 := $D012 COLPF0 := $D016 PRIOR := $D01B VDELAY := $D01C GRACTL := $D01D HITCLR := $D01E CONSOL := $D01F AUDF1 := $D200 AUDC1 := $D201 AUDCTL := $D208 RANDOM := $D20A IRQEN := $D20E SKCTL := $D20F PORTA := $D300 PORTB := $D301 PACTL := $D302 PBCTL := $D303 DMACTL := $D400 CHACTL := $D401 DLISTL := $D402 DLISTH := $D403 HSCROL := $D404 VSCROL := $D405 PMBASE := $D407 CHBASE := $D409 WSYNC := $D40A VCOUNT := $D40B PENH := $D40C PENV := $D40D NMIEN := $D40E AFP: jsr LDBA1 jsr LDBBB bcs LD841 ldx #$ED ldy #$04 jsr LDA48 ldx #$FF stx DIGRT jsr ZFR0 beq LD81C LD818: lda #$FF sta FCHFLG LD81C: jsr LDB94 bcs LD842 pha ldx $D5 bne LD837 jsr LDBEB pla ora $D9 sta $D9 ldx DIGRT bmi LD818 inx stx DIGRT bne LD818 LD837: pla ldx DIGRT bpl LD83E inc NSIGN LD83E: jmp LD818 LD841: rts LD842: cmp #$2E beq LD85A cmp #$45 beq LD863 ldx FCHFLG bne LD8B6 cmp #$2B beq LD818 cmp #$2D beq LD856 LD856: sta $EE beq LD818 LD85A: ldx DIGRT bpl LD8B6 inx stx DIGRT beq LD818 LD863: lda CIX sta FRX jsr LDB94 bcs LD8A3 LD86C: tax lda NSIGN pha stx NSIGN jsr LDB94 bcs LD88E pha lda NSIGN asl a sta NSIGN asl a asl a adc NSIGN sta NSIGN pla clc adc NSIGN sta NSIGN ldy CIX jsr LDB9D LD88E: lda ESIGN beq LD89B lda NSIGN eor #$FF clc adc #$01 sta NSIGN LD89B: pla clc adc NSIGN sta NSIGN bne LD8B6 LD8A3: cmp #$2B beq LD8AD cmp #$2D bne LD8B2 sta ESIGN LD8AD: jsr LDB94 bcc LD86C LD8B2: lda FRX sta CIX LD8B6: dec CIX lda NSIGN ldx DIGRT bmi LD8C3 beq LD8C3 sec sbc DIGRT LD8C3: pha rol a pla ror a sta NSIGN bcc LD8CE jsr LDBEB LD8CE: lda NSIGN clc adc #$44 sta FR0 jsr LDC00 bcs LD8E5 ldx $EE beq LD8E4 lda FR0 ora #$80 sta FR0 LD8E4: clc LD8E5: rts FASC: jsr LDA51 lda #$30 sta $057F lda FR0 beq LD91A and #$7F cmp #$3F bcc LD920 cmp #$45 bcs LD920 sec sbc #$3F jsr LDC70 jsr LDCA4 ora #$80 sta LBUFF,x lda LBUFF cmp #$2E beq LD914 jmp LD988 LD914: jsr LDCC1 jmp LD99C LD91A: lda #$B0 sta LBUFF rts LD920: lda #$01 jsr LDC70 jsr LDCA4 inx stx CIX lda FR0 asl a sec sbc #$80 ldx LBUFF cpx #$30 beq LD94F ldx $0581 ldy $0582 stx $0582 sty $0581 ldx CIX cpx #$02 bne LD94C inc CIX LD94C: clc adc #$01 LD94F: sta NSIGN lda #$45 ldy CIX jsr LDC9F sty CIX lda NSIGN bpl LD969 lda #$00 sec sbc NSIGN sta NSIGN lda #$2D bne LD96B LD969: lda #$2B LD96B: jsr LDC9F ldx #$00 lda NSIGN LD972: sec sbc #$0A bcc LD97A inx bne LD972 LD97A: clc adc #$0A pha txa jsr LDC9D pla ora #$80 jsr LDC9D LD988: lda LBUFF cmp #$30 bne LD99C clc lda INBUFF adc #$01 sta INBUFF lda $F4 adc #$00 sta $F4 LD99C: lda FR0 bpl LD9A9 jsr LDCC1 ldy #$00 lda #$2D sta (INBUFF),y LD9A9: rts IFP: lda FR0 sta $F8 lda $D5 sta ZTEMP4 jsr ZFR0 sed ldy #$10 LD9B8: asl $F8 rol ZTEMP4 ldx #$03 LD9BE: lda FR0,x adc FR0,x sta FR0,x dex bne LD9BE dey bne LD9B8 cld lda #$42 sta FR0 jmp LDC00 FPI: lda #$00 sta ZTEMP4 sta $F8 lda FR0 bmi LDA42 cmp #$43 bcs LDA42 sec sbc #$40 bcc LDA24 adc #$00 asl a sta ZTEMP1 LD9EA: jsr LDA5A bcs LDA42 lda ZTEMP4 sta ZTEMP3 lda $F8 sta $FA jsr LDA5A bcs LDA42 jsr LDA5A bcs LDA42 clc lda $F8 adc $FA sta $F8 lda ZTEMP4 adc ZTEMP3 sta ZTEMP4 bcs LDA42 jsr LDCB9 clc adc $F8 sta $F8 lda ZTEMP4 adc #$00 bcs LDA42 sta ZTEMP4 dec ZTEMP1 bne LD9EA LDA24: jsr LDCB9 cmp #$05 bcc LDA38 clc lda $F8 adc #$01 sta $F8 lda ZTEMP4 adc #$00 sta ZTEMP4 LDA38: lda $F8 sta FR0 lda ZTEMP4 sta $D5 clc rts LDA42: sec rts ZFR0: ldx #$D4 ZF1: ldy #$06 LDA48: lda #$00 LDA4A: sta LINZBS,x inx dey bne LDA4A rts LDA51: lda #$05 sta $F4 lda #$80 sta INBUFF rts LDA5A: clc rol $F8 rol ZTEMP4 rts FSUB: lda FR1 eor #$80 sta FR1 FADD: lda FR1 and #$7F sta ZTEMP4 lda FR0 and #$7F sec sbc ZTEMP4 bpl LDA85 ldx #$05 LDA77: lda FR0,x ldy FR1,x sta FR1,x tya sta FR0,x dex bpl LDA77 bmi FADD LDA85: beq LDA8E cmp #$05 bcs LDAA4 jsr LDC3E LDA8E: sed lda FR0 eor FR1 bmi LDAB3 ldx #$04 clc LDA98: lda $D5,x adc $E1,x sta $D5,x dex bpl LDA98 cld bcs LDAA7 LDAA4: jmp LDC00 LDAA7: lda #$01 jsr LDC3A lda #$01 sta $D5 jmp LDC00 LDAB3: ldx #$04 sec LDAB6: lda $D5,x sbc $E1,x sta $D5,x dex bpl LDAB6 bcc LDAC5 cld jmp LDC00 LDAC5: lda FR0 eor #$80 sta FR0 sec ldx #$04 LDACE: lda #$00 sbc $D5,x sta $D5,x dex bpl LDACE cld jmp LDC00 FMUL: lda FR0 beq LDB24 lda FR1 beq LDB21 jsr LDCCF sec sbc #$40 sec adc FR1 bmi LDB26 jsr LDCE0 LDAF1: lda $DF and #$0F sta $F6 LDAF7: dec $F6 bmi LDB01 jsr LDD01 jmp LDAF7 LDB01: lda $DF lsr a lsr a lsr a lsr a sta $F6 LDB09: dec $F6 bmi LDB13 jsr LDD05 jmp LDB09 LDB13: jsr LDC62 dec ZTEMP1 bne LDAF1 LDB1A: lda NSIGN sta FR0 jmp LDC04 LDB21: jsr ZFR0 LDB24: clc rts LDB26: sec rts FDIV: lda FR1 beq LDB26 lda FR0 beq LDB24 jsr LDCCF sec sbc FR1 clc adc #$40 bmi LDB26 jsr LDCE0 inc ZTEMP1 jmp LDB4E LDB43: ldx #$00 LDB45: lda $D5,x sta FR0,x inx cpx #$0C bne LDB45 LDB4E: ldy #$05 sec sed LDB52: lda FRE,y sbc FR2,y sta FRE,y dey bpl LDB52 cld bcc LDB65 inc $D9 bne LDB4E LDB65: jsr LDD0F asl $D9 asl $D9 asl $D9 asl $D9 LDB70: ldy #$05 sec sed LDB74: lda FRE,y sbc FR1,y sta FRE,y dey bpl LDB74 cld bcc LDB87 inc $D9 bne LDB70 LDB87: jsr LDD09 dec ZTEMP1 bne LDB43 jsr LDC62 jmp LDB1A LDB94: jsr LDBAF ldy CIX bcc LDB9D lda (INBUFF),y LDB9D: iny sty CIX rts LDBA1: ldy CIX lda #$20 LDBA5: cmp (INBUFF),y bne LDBAC iny bne LDBA5 LDBAC: sty CIX rts LDBAF: ldy CIX lda (INBUFF),y sec sbc #$30 bcc LDBD0 cmp #$0A rts LDBBB: lda CIX pha jsr LDB94 bcc LDBE2 cmp #$2E beq LDBDB cmp #$2B beq LDBD2 cmp #$2D beq LDBD2 LDBCF: pla LDBD0: sec rts LDBD2: jsr LDB94 bcc LDBE2 cmp #$2E bne LDBCF LDBDB: jsr LDB94 bcc LDBE2 bcs LDBCF LDBE2: pla sta CIX clc rts LDBE7: ldx #$E7 bne LDBED LDBEB: ldx #$D5 LDBED: ldy #$04 LDBEF: clc rol RAMLO,x rol $03,x rol CASINI,x rol $01,x rol LINZBS,x rol FRX dey bne LDBEF rts LDC00: ldx #$00 stx FRE LDC04: ldx #$04 lda FR0 beq LDC38 LDC0A: lda $D5 bne LDC28 ldy #$00 LDC10: lda $D6,y sta $D5,y iny cpy #$05 bcc LDC10 dec FR0 dex bne LDC0A lda $D5 bne LDC28 sta FR0 clc rts LDC28: lda FR0 and #$7F cmp #$71 bcc LDC31 rts LDC31: cmp #$0F bcs LDC38 jsr ZFR0 LDC38: clc rts LDC3A: ldx #$D4 bne LDC40 LDC3E: ldx #$E0 LDC40: stx ZTEMP3 sta ZTEMP4 sta $F8 LDC46: ldy #$04 LDC48: lda RAMLO,x sta $05,x dex dey bne LDC48 lda #$00 sta $05,x ldx ZTEMP3 dec ZTEMP4 bne LDC46 lda LINZBS,x clc adc $F8 sta LINZBS,x rts LDC62: ldx #$0A LDC64: lda FR0,x sta $D5,x dex bpl LDC64 lda #$00 sta FR0 rts LDC70: sta ZTEMP4 ldx #$00 ldy #$00 LDC76: jsr LDC93 sec sbc #$01 sta ZTEMP4 lda $D5,x lsr a lsr a lsr a lsr a jsr LDC9D lda $D5,x and #$0F jsr LDC9D inx cpx #$05 bcc LDC76 LDC93: lda ZTEMP4 bne LDC9C lda #$2E jsr LDC9F LDC9C: rts LDC9D: ora #$30 LDC9F: sta LBUFF,y iny rts LDCA4: ldx #$0A LDCA6: lda LBUFF,x cmp #$2E beq LDCB4 cmp #$30 bne LDCB8 dex bne LDCA6 LDCB4: dex lda LBUFF,x LDCB8: rts LDCB9: jsr LDBEB lda FRX and #$0F rts LDCC1: sec lda INBUFF sbc #$01 sta INBUFF lda $F4 sbc #$00 sta $F4 rts LDCCF: lda FR0 eor FR1 and #$80 sta $EE asl FR1 lsr FR1 lda FR0 and #$7F rts LDCE0: ora $EE sta NSIGN lda #$00 sta FR0 sta FR1 jsr LDD28 jsr LDBE7 lda FRX and #$0F sta FR2 lda #$05 sta ZTEMP1 jsr LDD34 jsr ZFR0 rts LDD01: ldx #$D9 bne LDD0B LDD05: ldx #$D9 bne LDD11 LDD09: ldx #$DF LDD0B: ldy #$E5 bne LDD13 LDD0F: ldx #$DF LDD11: ldy #$EB LDD13: lda #$05 sta ZTEMP4 clc sed LDD19: lda LINZBS,x adc LINZBS,y sta LINZBS,x dex dey dec ZTEMP4 bpl LDD19 cld rts LDD28: ldy #$05 LDD2A: lda FR1,y sta FR2,y dey bpl LDD2A rts LDD34: ldy #$05 LDD36: lda FR0,y sta FRE,y dey bpl LDD36 rts PLYEVL: stx FPTR2 sty $FF sta ESIGN ldx #$E0 ldy #$05 jsr FSTOR jsr FMOVE ldx FPTR2 ldy $FF jsr FLD0R dec ESIGN beq LDD88 LDD5B: jsr FMUL bcs LDD88 clc lda FPTR2 adc #$06 sta FPTR2 bcc LDD6F lda $FF adc #$00 sta $FF LDD6F: ldx FPTR2 ldy $FF jsr FLD1R jsr FADD bcs LDD88 dec ESIGN beq LDD88 ldx #$E0 ldy #$05 jsr FLD1R bmi LDD5B LDD88: rts FLD0R: stx FLPTR sty $FD FLD0P: ldy #$05 LDD8F: lda (FLPTR),y sta FR0,y dey bpl LDD8F rts FLD1R: stx FLPTR sty $FD FLD1P: ldy #$05 LDD9E: lda (FLPTR),y sta FR1,y dey bpl LDD9E rts FSTOR: stx FLPTR sty $FD FSTOP: ldy #$05 LDDAD: lda FR0,y sta (FLPTR),y dey bpl LDDAD rts FMOVE: ldx #$05 LDDB8: lda FR0,x sta FR1,x dex bpl LDDB8 rts EXP: ldx #$89 ldy #$DE jsr FLD1R jsr FMUL bcs LDE4B EXP10: lda #$00 sta DIGRT lda FR0 sta FCHFLG and #$7F sta FR0 sec sbc #$40 bmi LDE03 cmp #$04 bpl LDE4B ldx #$E6 ldy #$05 jsr FSTOR jsr FPI lda FR0 sta DIGRT lda $D5 bne LDE4B jsr IFP jsr FMOVE ldx #$E6 ldy #$05 jsr FLD0R jsr FSUB LDE03: lda #$0A ldx #$4D ldy #$DE jsr PLYEVL jsr FMOVE jsr FMUL lda DIGRT beq LDE39 clc ror a sta FR1 lda #$01 bcc LDE20 lda #$10 LDE20: sta $E1 ldx #$04 lda #$00 LDE26: sta $E2,x dex bpl LDE26 lda FR1 clc adc #$40 bcs LDE4B bmi LDE4B sta FR1 jsr FMUL LDE39: lda FCHFLG bpl LDE4A jsr FMOVE ldx #$8F ldy #$DE jsr FLD0R jsr FDIV LDE4A: rts LDE4B: sec rts and $9417,x ora LINZBS,y and $3357,x ora LINZBS brk rol $5405,x ror $62,x brk rol $1932,x .byte $62 .byte $27 brk .byte $3F ora (SAVADR,x) rts bmi LDEA1 .byte $3F .byte $07 .byte $32 .byte $03 .byte $27 eor (FEOF,x) and FMSZPG .byte $34 lsr $75,x .byte $3F ror ICPTHZ .byte $37 bmi LOG rti ora (BUFADR,x) .byte $12 .byte $92 eor FEOF,x sta $9999,y sta $3F99,y .byte $43 .byte $42 sty $48,x ora $0140,y brk brk brk brk LDE95: stx FPTR2 sty $FF ldx #$E0 ldy #$05 jsr FSTOR .byte $A6 LDEA1: inc LFFA4,x jsr FLD1R jsr FADD ldx #$E6 ldy #$05 jsr FSTOR ldx #$E0 ldy #$05 jsr FLD0R ldx FPTR2 ldy $FF jsr FLD1R jsr FSUB ldx #$E6 ldy #$05 jsr FLD1R jsr FDIV rts LOG: lda #$01 bne LDED3 LOG10: lda #$00 LDED3: sta FCHFLG lda FR0 bpl LDEDB sec rts LDEDB: lda FR0 sta FR1 sec sbc #$40 asl a sta DIGRT lda $D5 and #$F0 bne LDEEF lda #$01 bne LDEF3 LDEEF: inc DIGRT lda #$10 LDEF3: sta $E1 ldx #$04 lda #$00 LDEF9: sta $E2,x dex bpl LDEF9 jsr FDIV ldx #$66 ldy #$DF jsr LDE95 ldx #$E6 ldy #$05 jsr FSTOR jsr FMOVE jsr FMUL lda #$0A ldx #$72 ldy #$DF jsr PLYEVL ldx #$E6 ldy #$05 jsr FLD1R jsr FMUL ldx #$6C ldy #$DF jsr FLD1R jsr FADD jsr FMOVE lda #$00 sta $D5 lda DIGRT sta FR0 bpl LDF46 eor #$FF clc adc #$01 sta FR0 LDF46: jsr IFP bit DIGRT bpl LDF53 lda #$80 ora FR0 sta FR0 LDF53: jsr FADD lda FCHFLG beq LDF64 ldx #$89 ldy #$DE jsr FLD1R jsr FDIV LDF64: clc rts rti .byte $03 asl ICCOMZ,x .byte $77 ror FEOF bvc LDF6F LDF6F: brk brk brk .byte $3F eor #$15 .byte $57 ora (WARMST),y .byte $BF eor (ROWAC),y eor #$47 php .byte $3F and $5720,y adc ($95,x) .byte $BF .byte $04 and $0363,y eor FEOF,x bpl LDF96 bmi LDFA1 .byte $64 .byte $3F ora #$39 php .byte $04 rts LDF96: .byte $3F .byte $12 .byte $42 cli .byte $47 .byte $42 .byte $3F .byte $17 .byte $37 .byte $12 .byte $06 LDFA1: php .byte $3F plp sta ICBLHZ,x adc (ICCOMT),y .byte $3F stx $85 dey stx $44,y rol $0516,x .byte $44 eor #$00 ldx $6895,y sec eor LINZBS .byte $3F .byte $02 pla adc $1694,y .byte $BF .byte $04 .byte $92 sei bcc LDF46 .byte $3F .byte $07 .byte $03 ora ICHIDZ,x brk .byte $BF php .byte $92 and #$12 .byte $44 .byte $3F ora (WARMST),y rti .byte $09 LDFD7: ora ($BF),y .byte $14 plp and ($56),y .byte $04 .byte $3F ora $9899,y .byte $77 .byte $44 .byte $BF .byte $33 .byte $33 .byte $33 and ($13),y .byte $3F sta $9999,y sta $3F99,y sei .byte $53 tya asl BFENLO,x tya asl BFENLO,x .byte $FC cpx #$32 bvc LDFD7 pla .byte $11 CHRORG: .byte $00,$00,$00,$00,$00,$00,$00,$00 .byte $00,$18,$18,$18,$18,$00,$18,$00 .byte $00,$66,$66,$66,$00,$00,$00,$00 .byte $00,$66,$FF,$66,$66,$FF,$66,$00 .byte $18,$3E,$60,$3C,$06,$7C,$18,$00 .byte $00,$66,$6C,$18,$30,$66,$46,$00 .byte $1C,$36,$1C,$38,$6F,$66,$3B,$00 .byte $00,$18,$18,$18,$00,$00,$00,$00 .byte $00,$0E,$1C,$18,$18,$1C,$0E,$00 .byte $00,$70,$38,$18,$18,$38,$70,$00 .byte $00,$66,$3C,$FF,$3C,$66,$00,$00 .byte $00,$18,$18,$7E,$18,$18,$00,$00 .byte $00,$00,$00,$00,$00,$18,$18,$30 .byte $00,$00,$00,$7E,$00,$00,$00,$00 .byte $00,$00,$00,$00,$00,$18,$18,$00 .byte $00,$06,$0C,$18,$30,$60,$40,$00 .byte $00,$3C,$66,$6E,$76,$66,$3C,$00 .byte $00,$18,$38,$18,$18,$18,$7E,$00 .byte $00,$3C,$66,$0C,$18,$30,$7E,$00 .byte $00,$7E,$0C,$18,$0C,$66,$3C,$00 .byte $00,$0C,$1C,$3C,$6C,$7E,$0C,$00 .byte $00,$7E,$60,$7C,$06,$66,$3C,$00 .byte $00,$3C,$60,$7C,$66,$66,$3C,$00 .byte $00,$7E,$06,$0C,$18,$30,$30,$00 .byte $00,$3C,$66,$3C,$66,$66,$3C,$00 .byte $00,$3C,$66,$3E,$06,$0C,$38,$00 .byte $00,$00,$18,$18,$00,$18,$18,$00 .byte $00,$00,$18,$18,$00,$18,$18,$30 .byte $06,$0C,$18,$30,$18,$0C,$06,$00 .byte $00,$00,$7E,$00,$00,$7E,$00,$00 .byte $60,$30,$18,$0C,$18,$30,$60,$00 .byte $00,$3C,$66,$0C,$18,$00,$18,$00 .byte $00,$3C,$66,$6E,$6E,$60,$3E,$00 .byte $00,$18,$3C,$66,$66,$7E,$66,$00 .byte $00,$7C,$66,$7C,$66,$66,$7C,$00 .byte $00,$3C,$66,$60,$60,$66,$3C,$00 .byte $00,$78,$6C,$66,$66,$6C,$78,$00 .byte $00,$7E,$60,$7C,$60,$60,$7E,$00 .byte $00,$7E,$60,$7C,$60,$60,$60,$00 .byte $00,$3E,$60,$60,$6E,$66,$3E,$00 .byte $00,$66,$66,$7E,$66,$66,$66,$00 .byte $00,$7E,$18,$18,$18,$18,$7E,$00 .byte $00,$06,$06,$06,$06,$66,$3C,$00 .byte $00,$66,$6C,$78,$78,$6C,$66,$00 .byte $00,$60,$60,$60,$60,$60,$7E,$00 .byte $00,$63,$77,$7F,$6B,$63,$63,$00 .byte $00,$66,$76,$7E,$7E,$6E,$66,$00 .byte $00,$3C,$66,$66,$66,$66,$3C,$00 .byte $00,$7C,$66,$66,$7C,$60,$60,$00 .byte $00,$3C,$66,$66,$66,$6C,$36,$00 .byte $00,$7C,$66,$66,$7C,$6C,$66,$00 .byte $00,$3C,$60,$3C,$06,$06,$3C,$00 .byte $00,$7E,$18,$18,$18,$18,$18,$00 .byte $00,$66,$66,$66,$66,$66,$7E,$00 .byte $00,$66,$66,$66,$66,$3C,$18,$00 .byte $00,$63,$63,$6B,$7F,$77,$63,$00 .byte $00,$66,$66,$3C,$3C,$66,$66,$00 .byte $00,$66,$66,$3C,$18,$18,$18,$00 .byte $00,$7E,$0C,$18,$30,$60,$7E,$00 .byte $00,$1E,$18,$18,$18,$18,$1E,$00 .byte $00,$40,$60,$30,$18,$0C,$06,$00 .byte $00,$78,$18,$18,$18,$18,$78,$00 .byte $00,$08,$1C,$36,$63,$00,$00,$00 .byte $00,$00,$00,$00,$00,$00,$FF,$00 .byte $00,$36,$7F,$7F,$3E,$1C,$08,$00 .byte $18,$18,$18,$1F,$1F,$18,$18,$18 .byte $03,$03,$03,$03,$03,$03,$03,$03 .byte $18,$18,$18,$F8,$F8,$00,$00,$00 .byte $18,$18,$18,$F8,$F8,$18,$18,$18 .byte $00,$00,$00,$F8,$F8,$18,$18,$18 .byte $03,$07,$0E,$1C,$38,$70,$E0,$C0 .byte $C0,$E0,$70,$38,$1C,$0E,$07,$03 .byte $01,$03,$07,$0F,$1F,$3F,$7F,$FF .byte $00,$00,$00,$00,$0F,$0F,$0F,$0F .byte $80,$C0,$E0,$F0,$F8,$FC,$FE,$FF .byte $0F,$0F,$0F,$0F,$00,$00,$00,$00 .byte $F0,$F0,$F0,$F0,$00,$00,$00,$00 .byte $FF,$FF,$00,$00,$00,$00,$00,$00 .byte $00,$00,$00,$00,$00,$00,$FF,$FF .byte $00,$00,$00,$00,$F0,$F0,$F0,$F0 .byte $00,$1C,$1C,$77,$77,$08,$1C,$00 .byte $00,$00,$00,$1F,$1F,$18,$18,$18 .byte $00,$00,$00,$FF,$FF,$00,$00,$00 .byte $18,$18,$18,$FF,$FF,$18,$18,$18 .byte $00,$00,$3C,$7E,$7E,$7E,$3C,$00 .byte $00,$00,$00,$00,$FF,$FF,$FF,$FF .byte $C0,$C0,$C0,$C0,$C0,$C0,$C0,$C0 .byte $00,$00,$00,$FF,$FF,$18,$18,$18 .byte $18,$18,$18,$FF,$FF,$00,$00,$00 .byte $F0,$F0,$F0,$F0,$F0,$F0,$F0,$F0 .byte $18,$18,$18,$1F,$1F,$00,$00,$00 .byte $78,$60,$78,$60,$7E,$18,$1E,$00 .byte $00,$18,$3C,$7E,$18,$18,$18,$00 .byte $00,$18,$18,$18,$7E,$3C,$18,$00 .byte $00,$18,$30,$7E,$30,$18,$00,$00 .byte $00,$18,$0C,$7E,$0C,$18,$00,$00 .byte $00,$18,$3C,$7E,$7E,$3C,$18,$00 .byte $00,$00,$3C,$06,$3E,$66,$3E,$00 .byte $00,$60,$60,$7C,$66,$66,$7C,$00 .byte $00,$00,$3C,$60,$60,$60,$3C,$00 .byte $00,$06,$06,$3E,$66,$66,$3E,$00 .byte $00,$00,$3C,$66,$7E,$60,$3C,$00 .byte $00,$0E,$18,$3E,$18,$18,$18,$00 .byte $00,$00,$3E,$66,$66,$3E,$06,$7C .byte $00,$60,$60,$7C,$66,$66,$66,$00 .byte $00,$18,$00,$38,$18,$18,$3C,$00 .byte $00,$06,$00,$06,$06,$06,$06,$3C .byte $00,$60,$60,$6C,$78,$6C,$66,$00 .byte $00,$38,$18,$18,$18,$18,$3C,$00 .byte $00,$00,$66,$7F,$7F,$6B,$63,$00 .byte $00,$00,$7C,$66,$66,$66,$66,$00 .byte $00,$00,$3C,$66,$66,$66,$3C,$00 .byte $00,$00,$7C,$66,$66,$7C,$60,$60 .byte $00,$00,$3E,$66,$66,$3E,$06,$06 .byte $00,$00,$7C,$66,$60,$60,$60,$00 .byte $00,$00,$3E,$60,$3C,$06,$7C,$00 .byte $00,$18,$7E,$18,$18,$18,$0E,$00 .byte $00,$00,$66,$66,$66,$66,$3E,$00 .byte $00,$00,$66,$66,$66,$3C,$18,$00 .byte $00,$00,$63,$6B,$7F,$3E,$36,$00 .byte $00,$00,$66,$3C,$18,$3C,$66,$00 .byte $00,$00,$66,$66,$66,$3E,$0C,$78 .byte $00,$00,$7E,$0C,$18,$30,$7E,$00 .byte $00,$18,$3C,$7E,$7E,$18,$3C,$00 .byte $18,$18,$18,$18,$18,$18,$18,$18 .byte $00,$7E,$78,$7C,$6E,$66,$06,$00 .byte $08,$18,$38,$78,$38,$18,$08,$00 .byte $10,$18,$1C,$1E,$1C,$18,$10,$00 EDITRV: .addr LF3FB .addr LF633 .addr NOFUNC .addr EOUTCH .addr LF633 .addr LF63C LE40C: jmp KBDORG .byte $00 SCRNV: .addr LF3F5 .addr LF633 .addr LF592 .addr LF5B6 .addr LF633 .addr LFCFB LE41C: jmp KBDORG .byte $00 KEYBDV: .addr LF633 .addr LF633 .addr KGETC2 .addr LF63C .addr LF633 .addr LF63C LE42C: jmp KBDORG .byte $00 PRINTV: .word $EE9E,$EEDB,$EE9D,$EEA6 .word $EE80,$EE9D,$784C,$00EE CASETV: .addr SPECIAL .addr LF02A .addr LEFD5 .addr LF00F .addr LF027 .addr LEF4A LE44C: jmp INIT .byte $00 jmp DINIT DSKINV: jmp DSKIF CIOV: jmp CIO SIOV: jmp SIO LE45C: jmp SETVBL SYSVBV: .byte $4C VBIVAL: .byte $AE .byte $E7 XITVBV: .byte $4C VBIXVL: ora $E9 LE465: jmp SIOORG LE468: jmp SENDEN LE46B: jmp INTORG LE46E: jmp CIOINT BLKBDV: .byte $4C LE472: .byte $23 LE473: .byte $F2 WARMSV: jmp RESET COLDSV: jmp PWRUP LE47A: jmp RBLOK LE47D: jmp OPINP VCTABL: .addr SYRTI .addr SYIRQB .addr SYIRQB .addr SYIRQB .addr PIRQ5 .addr ISRSIR .addr ISRODN .addr ISRTD .addr SYIRQB .addr SYIRQB .addr SYIRQB .addr SYIRQ .addr LINZBS .addr LINZBS .addr LINZBS .addr LINZBS .addr LINZBS .addr SYSVBL .addr XITVBL CIOINT: ldx #$00 CIOI1: lda #$FF sta ICHID,x lda #$C0 sta ICPTL,x lda #$E4 sta ICPTH,x txa clc adc #$10 tax cmp #$80 bcc CIOI1 rts ldy #$85 rts CIO: sta CIOCHR stx ICIDNO txa and #$0F bne CIERR cpx #$80 bcc IOC1 CIERR: ldy #$86 jmp CIRTN1 IOC1: ldy #$00 IOC1A: lda ICHID,x sta ICHIDZ,y inx iny cpy #$0C bcc IOC1A ldy #$84 lda ICCOMZ cmp #$03 bcc CIERR4 tay cpy #$0E bcc IOC2 ldy #$0E IOC2: sty ICCOMT lda eeek_1,y beq CIOPEN cmp #$02 beq CICLOS cmp #$08 bcs CISTSP cmp #$04 beq CIREAD jmp CIWRIT CIOPEN: lda ICHIDZ cmp #$FF beq IOC6 ldy #$81 CIERR4: jmp CIRTN1 IOC6: jsr DEVSRC IOC7: bcs CIERR4 jsr COMENT bcs CIERR4 jsr GOHAND lda #$0B sta ICCOMT jsr COMENT lda ICSPRZ sta ICPTLZ lda $2D sta ICPTHZ jmp CIRTN2 CICLOS: ldy #$01 sty ICSTAZ jsr COMENT bcs CICLO2 jsr GOHAND CICLO2: lda #$FF sta ICHIDZ lda #$E4 sta ICPTHZ lda #$C0 sta ICPTLZ jmp CIRTN2 CISTSP: lda ICHIDZ cmp #$FF bne CIST1 jsr DEVSRC bcs CIERR4 CIST1: jsr COMENT jsr GOHAND ldx ICIDNO lda ICHID,x sta ICHIDZ jmp CIRTN2 CIREAD: lda ICCOMZ and ICAX1Z bne RCI1A ldy #$83 RCI1B: jmp CIRTN1 RCI1A: jsr COMENT bcs RCI1B lda ICBLLZ ora ICBLHZ bne RCI3 jsr GOHAND sta CIOCHR jmp CIRTN2 RCI3: jsr GOHAND sta CIOCHR bmi RCI14 ldy #$00 sta (ICBALZ),y jsr INCBFP lda ICCOMZ and #$02 bne RCI1 lda CIOCHR cmp #$9B bne RCI1 jsr DECBFL jmp RCI14 RCI1: jsr DECBFL bne RCI3 RCI2: lda ICCOMZ and #$02 bne RCI14 RCI6: jsr GOHAND sta CIOCHR bmi RCI14 lda CIOCHR cmp #$9B bne RCI6 RCI11: lda #$89 sta ICSTAZ RCI14: jsr SUBBFL jmp CIRTN2 CIWRIT: lda ICCOMZ and ICAX1Z bne WCI1A ldy #$87 WCI1B: jmp CIRTN1 WCI1A: jsr COMENT bcs WCI1B lda ICBLLZ ora ICBLHZ bne WCI3 lda CIOCHR inc ICBLLZ bne WCI4 WCI3: ldy #$00 lda (ICBALZ),y sta CIOCHR WCI4: jsr GOHAND bmi WCI5 jsr INCBFP lda ICCOMZ and #$02 bne WCI1 lda CIOCHR cmp #$9B bne WCI1 jsr DECBFL jmp WCI5 WCI1: jsr DECBFL bne WCI3 WCI2: lda ICCOMZ and #$02 bne WCI5 lda #$9B jsr GOHAND WCI5: jsr SUBBFL jmp CIRTN2 CIRTN1: sty ICSTAZ CIRTN2: ldy ICIDNO lda ICBAL,y sta ICBALZ lda ICBAH,y sta ICBAHZ ldx #$00 CIRT3: lda ICHIDZ,x sta ICHID,y inx iny cpx #$0C bcc CIRT3 lda CIOCHR ldx ICIDNO ldy ICSTAZ rts COMENT: ldy ICHIDZ cpy #$22 bcc COM1 ldy #$85 bcs COM2 COM1: lda $031B,y sta ICSPRZ lda $031C,y sta $2D ldy ICCOMT lda eeek_1,y tay lda (ICSPRZ),y tax iny lda (ICSPRZ),y sta $2D stx ICSPRZ clc COM2: rts DECBFL: dec ICBLLZ lda ICBLLZ cmp #$FF bne DECBF1 dec ICBLHZ DECBF1: ora ICBLHZ rts INCBFP: inc ICBALZ bne INCBF1 inc ICBAHZ INCBF1: rts SUBBFL: ldx ICIDNO sec lda ICBLL,x sbc ICBLLZ sta ICBLLZ lda ICBLH,x sbc ICBLHZ sta ICBLHZ rts GOHAND: ldy #$92 jsr CIJUMP sty ICSTAZ cpy #$00 rts CIJUMP: tax lda $2D pha lda ICSPRZ pha txa ldx ICIDNO rts DEVSRC: ldy #$00 lda (ICBALZ),y beq CIERR2 ldy #$21 DEVS1: cmp HATABS,y beq DEVS2 dey dey dey bpl DEVS1 CIERR2: ldy #$82 sec bcs DEVS4 DEVS2: tya sta ICHIDZ sec ldy #$01 lda (ICBALZ),y sbc #$30 cmp #$0A bcc DEVS3 lda #$01 DEVS3: .byte $85 eeek_1: and (DSKFMS,x) DEVS4: rts COMTAB: .byte $00,$04,$04,$04,$04,$06,$06,$06 .byte $06,$02,$08,$0A INTORG: lda #$40 sta NMIEN lda #$38 sta PACTL sta PBCTL lda #$00 sta PORTA nop nop nop lda #$3C sta PACTL sta PBCTL rts PIRQ: jmp (VIMIRQ) CMPTAB: .byte $80,$40,$04,$02,$01,$08,$10,$20 ADRTAB: .byte $36,$08,$14,$12,$10,$0E,$0C,$0A SYIRQ: pha lda IRQEN and #$20 bne SYIRQ2 lda #$DF sta IRQEN lda POKMSK sta IRQEN jmp (VSERIN) SYIRQ2: txa pha ldx #$06 LOOPM: lda CMPTAB,x cpx #$05 bne LOOPM2 and POKMSK beq LL LOOPM2: bit IRQEN beq JMPP LL: dex bpl LOOPM jmp SYIRQ8 JMPP: eor #$FF sta IRQEN lda POKMSK sta IRQEN lda ADRTAB,x tax lda VDSLST,x sta L028C lda $0201,x sta $028D pla tax jmp (L028C) lda #$00 sta BRKKEY sta SSFLAG sta CRSINH sta ATRACT pla rti SYIRQ8: pla tax bit PACTL bpl SYIRQ9 lda PORTA jmp (VPRCED) SYIRQ9: bit PBCTL bpl SYIRQA lda PORTB jmp (VINTER) SYIRQA: pla sta L028C pla pha and #$10 beq SYRTI2 lda L028C pha jmp (VBREAK) SYRTI2: lda L028C pha SYIRQB: pla SYRTI: rti PNMI: bit $D40F bpl PNMI1 jmp (VDSLST) PNMI1: pha lda $D40F and #$20 beq LE7A4 jmp WARMSV LE7A4: txa pha tya pha sta $D40F jmp (VVBLKI) SYSVBL: inc $14 bne SYSVB1 inc ATRACT inc $13 bne SYSVB1 inc RTCLOK SYSVB1: lda #$FE ldx #$00 ldy ATRACT bpl VBATRA sta ATRACT ldx $13 lda #$F6 VBATRA: sta DRKMSK stx COLRSH ldx #$00 jsr DCTIMR bne SYSVB2 jsr JTIMR1 SYSVB2: lda CRITIC bne XXIT tsx lda $0104,x and #$04 beq SYSVB3 XXIT: jmp XITVBL SYSVB3: lda PENV sta LPENV lda PENH sta LPENH lda $0231 sta DLISTH lda SDLSTL sta DLISTL lda SDMCTL sta DMACTL lda GTIA sta PRIOR ldx #$08 stx CONSOL SCOLLP: cli lda PCOLR0,x eor COLRSH and DRKMSK sta COLPM0,x dex bpl SCOLLP lda CHBAS sta CHBASE lda CHACT sta CHACTL ldx #$02 jsr DCTIMR bne SYSVB4 jsr JTIMER2 SYSVB4: ldx #$02 SYSVBB: inx inx lda CDTMV1,x ora $0219,x beq SYSVBA jsr DCTIMR sta CDTMA1,x SYSVBA: cpx #$08 bne SYSVBB lda SKCTL and #$04 beq SYSVB6A lda KEYDEL beq SYSVB6A dec KEYDEL SYSVB6A:lda SRTIMR beq SYSVB7 lda SKCTL and #$04 bne SYSVB6 dec SRTIMR bne SYSVB7 lda #$06 sta SRTIMR lda $D209 sta FILDAT SYSVB7: ldy #$01 ldx #$03 STLOOP: lda PORTA,y lsr a lsr a lsr a lsr a sta $0278,x dex lda PORTA,y and #$0F sta $0278,x dex dey bpl STLOOP ldx #$03 STRL: lda $D010,x sta $0284,x lda AUDF1,x sta $0270,x lda $D204,x sta $0274,x dex bpl STRL sta $D20B ldx #$06 ldy #$03 PRTLP: lda $0278,y lsr a lsr a lsr a sta $027D,x lda #$00 rol a sta $027C,x dex dex dey bpl PRTLP jmp (VVBLKD) SYSVB6: lda #$00 sta SRTIMR beq SYSVB7 JTIMR1: jmp (CDTMA1) JTIMER2:jmp (CDTMA2) DCTIMR: ldy CDTMV1,x bne DCTIM1 ldy $0219,x beq DCTXF dec $0219,x DCTIM1: dec CDTMV1,x bne DCTXF ldy $0219,x bne DCTXF lda #$00 rts DCTXF: lda #$FF rts SETVBL: asl a sta INTEMP txa ldx #$05 sta WSYNC SETLOP: dex bne SETLOP ldx INTEMP sta $0217,x tya sta VIMIRQ,x rts XITVBL: pla tay pla tax pla rti ror MLTTMP ror a:MLTTMP,x brk .byte $7C jmp SETVBL ror HOLDCH brk brk .byte $3C ror NEWROW rts ror NOCKSM brk brk sei jmp (L6666) jmp (L0078) brk ror $7C60,x rts rts ror a:LINZBS,x ror $7C60,x rts rts rts brk brk rol $6060,x ror $3E66 brk brk ror MLTTMP .byte $7E SIOORG: lda #$3C sta PACTL lda #$3C sta PBCTL lda #$03 sta SSKCTL sta SOUNDR sta SKCTL rts SIO: tsx stx STACKP lda #$01 sta CRITIC lda DDEVIC cmp #$60 bne NOTCST jmp CASENT NOTCST: lda #$00 sta CASFLG lda #$01 sta DRETRY COMMND: lda #$0D sta CRETRY COMFRM: lda #$28 sta $D204 lda #$00 sta $D206 clc lda DDEVIC adc DUNIT adc #$FF sta CDEVIC lda DCOMND sta $023B lda DAUX1 sta CAUX1 lda DAUX2 sta CAUX2 clc lda #$3A sta BUFRLO adc #$04 sta BFENLO lda #$02 sta BUFRHI sta BFENHI lda #$34 sta PBCTL jsr SENDIN lda ERRFLG bne BADCOM tya bne ACKREC BADCOM: dec CRETRY bpl COMFRM jmp DERR1 ACKREC: lda DSTATS bpl WATCOM lda #$0D sta CRETRY jsr LDPNTR jsr SENDIN beq BADCOM WATCOM: jsr STTMOT lda #$00 sta ERRFLG jsr WAITER beq DERR bit DSTATS bvs MODATA lda ERRFLG bne DERR1 beq RETURN MODATA: jsr LDPNTR jsr RECEIV DERR: lda ERRFLG beq NOTERR lda TSTAT sta STATUS NOTERR: lda STATUS cmp #$01 beq RETURN DERR1: dec DRETRY bmi RETURN jmp COMMND RETURN: jsr SENDDS lda #$00 sta CRITIC ldy STATUS sty DSTATS rts WAIT: lda #$00 sta ERRFLG clc lda #$3E sta BUFRLO adc #$01 sta BFENLO lda #$02 sta BUFRHI sta BFENHI lda #$FF sta NOCKSM jsr RECEIV ldy #$FF lda STATUS cmp #$01 bne NWOK lda TEMP cmp #$41 beq GOOD cmp #$43 beq GOOD cmp #$45 bne NOTDER lda #$90 sta STATUS bne NWOK NOTDER: lda #$8B sta STATUS NWOK: lda STATUS cmp #$8A beq BAD lda #$FF sta ERRFLG bne GOOD BAD: ldy #$00 GOOD: lda STATUS sta TSTAT rts SEND: lda #$01 sta STATUS jsr SENDEN ldy #$00 sty CHKSUM sty CHKSNT sty XMTDON lda (BUFRLO),y sta $D20D sta CHKSUM NOTDON: lda BRKKEY bne NTBRK0 jmp BROKE NTBRK0: lda XMTDON beq NOTDON jsr SENDDS rts ISRODN: tya pha inc BUFRLO bne NOWRPO inc BUFRHI NOWRPO: lda BUFRLO cmp BFENLO lda BUFRHI sbc BFENHI bcc NOTEND lda CHKSNT bne RELONE lda CHKSUM sta $D20D lda #$FF sta CHKSNT bne CHKDON RELONE: lda POKMSK ora #$08 sta POKMSK sta IRQEN CHKDON: pla tay pla rti NOTEND: ldy #$00 lda (BUFRLO),y sta $D20D clc adc CHKSUM adc #$00 sta CHKSUM jmp CHKDON ISRTD: lda CHKSNT beq FOOEY sta XMTDON lda POKMSK and #$F7 sta POKMSK sta IRQEN FOOEY: pla rti RECEIV: lda #$00 ldy CASFLG bne NOCLR sta CHKSUM NOCLR: sta BUFRFL sta RECVDN lda #$01 sta STATUS jsr RECVEN lda #$3C sta PBCTL CHKTIM: lda BRKKEY bne NTBRK1 jmp BROKE NTBRK1: lda TIMFLG beq TOUT lda RECVDN beq CHKTIM GOBACK: rts TOUT: lda #$8A sta STATUS RRETRN: rts ISRSIR: tya pha lda SKCTL sta RANDOM bmi NTFRAM ldy #$8C sty STATUS NTFRAM: and #$20 bne NTOVRN ldy #$8E sty STATUS NTOVRN: lda BUFRFL beq NOTYET lda $D20D cmp CHKSUM beq SRETRN ldy #$8F sty STATUS SRETRN: lda #$FF sta RECVDN SUSUAL: pla tay pla rti NOTYET: lda $D20D ldy #$00 sta (BUFRLO),y clc adc CHKSUM adc #$00 sta CHKSUM inc BUFRLO bne NTWRP1 inc BUFRHI NTWRP1: lda BUFRLO cmp BFENLO lda BUFRHI sbc BFENHI bcc SUSUAL lda NOCKSM beq GOON lda #$00 sta NOCKSM beq SRETRN GOON: lda #$FF sta BUFRFL bne SUSUAL LDPNTR: clc lda DBUFLO sta BUFRLO adc DBYTLO sta BFENLO lda DBUFHI sta BUFRHI adc DBYTHI sta BFENHI rts CASENT: lda DSTATS bpl CASRED lda #$CC sta $D204 lda #$05 sta $D206 jsr SENDEN ldy #$0F lda DAUX2 bmi SRTIRO ldy #$B4 SRTIRO: ldx #$00 jsr SETVBX lda #$34 sta PACTL TIMIT: lda TIMFLG bne TIMIT jsr LDPNTR jsr SEND jmp CRETRN CASRED: lda #$FF sta CASFLG ldy #$0A lda DAUX2 bmi SRTIR1 ldy #$78 SRTIR1: ldx #$00 jsr SETVBX lda #$34 sta PACTL TIMIT1: lda TIMFLG bne TIMIT1 jsr LDPNTR jsr STTMOT jsr SETVBX jsr BEGIN jsr RECEIV CRETRN: lda DAUX2 bmi SRTIR2 lda #$3C sta PACTL SRTIR2: jmp RETURN lda #$00 sta TIMFLG rts SENDEN: lda #$07 and SSKCTL ora #$20 ldy DDEVIC cpy #$60 bne NOTCAS ora #$08 ldy #$07 sty $D202 ldy #$05 sty AUDF1 NOTCAS: sta SSKCTL sta SKCTL lda #$C7 and POKMSK ora #$10 jmp CONTIN RECVEN: lda #$07 and SSKCTL ora #$10 sta SSKCTL sta SKCTL sta RANDOM lda #$C7 and POKMSK ora #$20 CONTIN: sta POKMSK sta IRQEN lda #$28 sta AUDCTL ldx #$06 lda #$A8 ldy SOUNDR bne NOISE1 lda #$A0 NOISE1: sta AUDC1,x dex dex bpl NOISE1 lda #$A0 sta $D205 ldy DDEVIC cpy #$60 beq CAS31 sta AUDC1 sta $D203 CAS31: rts SENDDS: nop RECVDS: lda #$C7 and POKMSK sta POKMSK sta IRQEN ldx #$06 lda #$00 ZERIT: sta AUDC1,x dex dex bpl ZERIT rts STTMOT: lda DTIMLO ror a ror a tay and #$3F tax tya ror a and #$C0 tay rts .addr ISRSIR .addr ISRODN .addr ISRTD SENDIN: ldx #$01 DELAY0: ldy #$FF DELAY1: dey bne DELAY1 dex bne DELAY0 jsr SEND ldy #$02 ldx #$00 WAITER: jsr SETVBX jsr WAIT tya rts COMPUT: sta TIMER2 sty $0311 jsr ADJUST sta TIMER2 lda TIMER1 jsr ADJUST sta TIMER1 lda TIMER2 sec sbc TIMER1 sta TEMP1 lda $0311 sec sbc $030D tay lda #$7D HITIMR: clc adc #$83 dey bpl HITIMR clc adc TEMP1 FINDX: tay lsr a lsr a lsr a asl a sec sbc #$16 tax tya and #$07 tay lda #$F5 DOINTP: clc adc #$0B dey bpl DOINTP ENINTP: ldy #$00 sty ADDCOR sec sbc #$07 bpl PLUS dec ADDCOR PLUS: clc adc POKTAB,x tay lda ADDCOR adc POKTAB+1,x rts ADJUST: cmp #$7C bmi ADJ1 sec sbc #$7C rts ADJ1: clc adc #$07 rts BEGIN: lda BRKKEY bne NTBRK2 jmp BROKE NTBRK2: sei lda TIMFLG bne OKTIM1 beq TOUT1 OKTIM1: lda SKCTL and #$10 bne BEGIN sta SAVIO ldx VCOUNT ldy $14 stx TIMER1 sty $030D ldx #$01 stx TEMP3 ldy #$0A COUNT: lda BRKKEY beq BROKE lda TIMFLG bne OKTIMR TOUT1: cli jmp TOUT OKTIMR: lda SKCTL and #$10 cmp SAVIO beq COUNT sta SAVIO dey bne COUNT dec TEMP3 bmi GOREAD lda VCOUNT ldy $14 jsr COMPUT sty CBAUDL sta $02EF ldy #$09 bne COUNT GOREAD: lda CBAUDL sta $D204 lda $02EF sta $D206 lda #$00 sta SKCTL lda SSKCTL sta SKCTL lda #$55 sta (BUFRLO),y iny sta (BUFRLO),y lda #$AA sta CHKSUM clc lda BUFRLO adc #$02 sta BUFRLO lda BUFRHI adc #$00 sta BUFRHI cli rts BROKE: jsr SENDDS lda #$3C sta PACTL sta PBCTL lda #$80 sta STATUS ldx STACKP txs dec BRKKEY cli jmp RETURN SETVBX: lda #$EC sta CDTMA1 lda #$EB sta $0227 lda #$01 sei jsr LE45C lda #$01 sta TIMFLG cli rts POKTAB: .addr L03E8 .addr L0443 .addr L049E .addr L04F9 .addr L0554 .addr L05AF .addr L060A .addr L0665 .addr L06C0 .addr L071A .addr L0775 .addr L07D0 bit $85 DINIT: lda #$A0 sta DSKTIM rts DSKIF: lda #$31 sta DDEVIC lda DSKTIM ldx DCOMND cpx #$21 beq PUTDTO lda #$07 PUTDTO: sta DTIMLO ldx #$40 ldy #$80 lda DCOMND cmp #$57 bne CKSTC ldx #$80 CKSTC: cmp #$53 bne PUTCNT lda #$EA sta DBUFLO lda #$02 sta DBUFHI ldy #$04 PUTCNT: stx DSTATS sty DBYTLO lda #$00 sta DBYTHI jsr SIOV bpl GOODST rts GOODST: lda DCOMND cmp #$53 bne PUTBC jsr PUTADR ldy #$02 lda (BUFADR),y sta DSKTIM PUTBC: lda DCOMND cmp #$21 bne ENDDIF FMTD: jsr PUTADR ldy #$FE TWICE: iny iny RDBAD: lda (BUFADR),y cmp #$FF bne TWICE iny lda (BUFADR),y iny cmp #$FF bne RDBAD dey dey sty DBYTLO lda #$00 sta DBYTHI ENDDIF: ldy DSTATS rts PUTADR: lda DBUFLO sta BUFADR lda DBUFHI sta $16 rts CASORG: lda #$1E sta PTIMOT rts PHSTLO: nop LEE7E: .byte $02 PHCHLO: .byte $C0 LEE80: .byte $03 PHSTAT: lda #$04 sta PBUFSZ ldx PHSTLO ldy LEE7E lda #$53 sta DCOMND sta DAUX1 jsr SETDCB jsr SIOV bmi BADST jsr PHPUT BADST: rts PHOPEN: jsr PHSTAT lda #$00 sta PBPNT rts PHWRIT: sta PTEMP jsr PRMODE ldx PBPNT lda PTEMP sta PRNBUF,x inx cpx PBUFSZ beq BUFFUL stx PBPNT cmp #$9B beq BLFILL ldy #$01 rts BLFILL: lda #$20 FILLBF: sta PRNBUF,x inx cpx PBUFSZ bne FILLBF BUFFUL: lda #$00 sta PBPNT ldx PHCHLO ldy LEE80 jsr SETDCB jsr SIOV PHCLOS: rts jsr PRMODE ldx PBPNT bne BLFILL ldy #$01 rts SETDCB: stx DBUFLO sty DBUFHI lda #$40 sta DDEVIC lda #$01 sta DUNIT lda #$80 ldx DCOMND cpx #$53 bne PSIOC lda #$40 PSIOC: sta DSTATS lda PBUFSZ sta DBYTLO lda #$00 sta DBYTHI lda PTIMOT sta DTIMLO rts PHPUT: lda $02EC sta PTIMOT rts PRMODE: ldy #$57 lda ICAX2Z CMODE: cmp #$4E bne CDUBL ldx #$28 bne SETBSZ CDUBL: cmp #$44 bne CSIDE ldx #$14 bne SETBSZ CSIDE: cmp #$53 bne GOERR ldx #$1D SETBSZ: stx PBUFSZ sty DCOMND sta DAUX1 rts GOERR: lda #$4E bne CMODE INIT: lda #$CC sta CBAUDL lda #$05 .byte $8D .byte $EF LEF4A: .byte $02 SPECIAL:rts OPENC: lda ICAX2Z sta FTYPE lda ICAX1Z and #$0C cmp #$04 beq OPINP cmp #$08 beq OPOUT rts OPINP: lda #$00 sta WMODE sta FEOF SFH: lda #$01 jsr BEEP bmi OPNRTN lda #$34 sta PACTL ldy #$40 ldx #$02 lda #$03 sta CDTMF3 jsr LE45C WAITM: lda CDTMF3 bne WAITM lda #$80 sta BPTR sta BLIM jmp OPOK PBRK: ldy #$80 dec BRKKEY OPNRTN: lda #$00 sta WMODE rts OPOUT: lda #$80 sta WMODE lda #$02 jsr BEEP bmi OPNRTN lda #$CC sta $D204 lda #$05 sta $D206 lda #$60 sta DDEVIC jsr LE468 lda #$34 sta PACTL lda #$03 ldx #$04 ldy #$80 jsr LE45C lda #$FF sta CDTMF3 WDLR: lda BRKKEY beq PBRK lda CDTMF3 bne WDLR lda #$00 sta BPTR OPOK: ldy #$01 LEFD5: rts GBYTE: lda FEOF bmi ISEOF ldx BPTR cpx BLIM beq RBLOK lda $0400,x inc BPTR ldy #$01 GBX: rts RBLOK: lda #$52 jsr SIOSB tya bmi GBX lda #$00 sta BPTR ldx #$80 lda $03FF cmp #$FE beq ATEOF cmp #$FA bne NLR ldx $047F NLR: stx BLIM jmp GBYTE ATEOF: dec FEOF ISEOF: ldy #$88 LF00F: rts PBYTE: ldx BPTR sta $0400,x inc BPTR ldy #$01 cpx #$7F beq LF01E rts LF01E: lda #$FC jsr WSIOB lda #$00 sta BPTR LF027: rts STATU: ldy #$01 LF02A: rts CLOSEC: lda WMODE bmi CLRWT ldy #$01 FCAX: lda #$3C sta PACTL rts CLRWT: ldx BPTR beq WTLR stx $047F lda #$FA jsr WSIOB bmi FCAX WTLR: ldx #$7F lda #$00 ZTBUF: sta $0400,x dex bpl ZTBUF lda #$FE jsr WSIOB jmp FCAX BEEP: sta FREQ BEEP1: lda $14 clc adc #$1E tax WFL: lda #$FF sta CONSOL lda #$00 ldy #$F0 LF069: dey bne LF069 sta CONSOL ldy #$F0 LF071: dey bne LF071 cpx $14 bne WFL dec FREQ beq WFAK txa clc adc #$0A tax LF081: cpx $14 bne LF081 beq BEEP1 WFAK: jsr WFAK1 tya rts WFAK1: lda KEYBDV+5 pha lda KEYBDV+4 pha rts SIOSB: sta DCOMND lda #$00 sta DBYTHI lda #$83 sta DBYTLO lda #$03 sta DBUFHI lda #$FD sta DBUFLO CSIO: lda #$60 sta DDEVIC lda #$00 sta DUNIT lda #$23 sta DTIMLO lda DCOMND ldy #$40 cmp #$52 beq LF0C6 ldy #$80 LF0C6: sty DSTATS lda FTYPE sta DAUX2 jsr SIOV rts WSIOB: sta $03FF lda #$55 sta CASBUF sta $03FE lda #$57 jsr SIOSB rts TBLENT: .byte $50,$30,$E4,$43,$40,$E4,$45,$00 .byte $E4,$53,$10,$E4,$4B,$20,$E4 IDENT: .byte $7D,$41,$54,$41,$52,$49,$20,$43 .byte $4F,$4D,$50,$55,$54,$45,$52,$20 .byte $2D,$20,$4D,$45,$4D,$4F,$20,$50 .byte $41,$44,$9B DERR5: .byte $42,$4F,$4F,$54,$20,$45,$52,$52 .byte $4F,$52,$9B OPNEDT: .byte $45,$3A,$9B RESET: sei lda COLDST bne PWRUP lda #$FF bne LF128 PWRUP: sei lda #$00 LF128: sta WARMST cld ldx #$FF txs jsr LF244 jsr HARDI lda WARMST bne ZOSRAM ZERORM: lda #$00 ldy #$08 sta RAMLO sta $05 CLRRAM: sta (RAMLO),y iny cpy #$00 bne CLRRAM inc $05 ldx $05 cpx TRAMSZ bne CLRRAM lda LE472 sta DOSVEC lda LE473 sta $0B lda #$FF sta COLDST bne ESTSCM ZOSRAM: ldx #$00 txa ZOSRM2: sta VDSLST,x sta DDEVIC,x dex bne ZOSRM2 ldx #$10 ZOSRM3: sta LINZBS,x inx bpl ZOSRM3 ESTSCM: lda #$02 sta LMARGN lda #$27 sta RMARGN OPSYS: ldx #$25 MOVVEC: lda VCTABL,x sta VDSLST,x dex bpl MOVVEC jsr OSRAM cli ldx #$0E NXTENT: lda TBLENT,x sta HATABS,x dex bpl NXTENT ldx #$00 stx TSTDAT stx TRAMSZ ldx RAMSIZ cpx #$90 bcs ENDBCK lda $9FFC bne ENDBCK inc TSTDAT jsr CBINI ENDBCK: ldx RAMSIZ cpx #$B0 bcs ENDACK ldx $BFFC bne ENDACK inc TRAMSZ jsr CAINI ENDACK: lda #$03 ldx #$00 sta ICCOM,x lda #$18 sta ICBAL,x lda #$F1 sta ICBAH,x lda #$0C sta ICAX1,x jsr CIOV bpl SCRNOK jmp PWRUP SCRNOK: inx bne SCRNOK iny bpl SCRNOK jsr CSBOOT lda TRAMSZ ora TSTDAT beq NOCART lda TRAMSZ beq NOA1 lda $BFFD NOA1: ldx TSTDAT beq NOB1 ora $9FFD NOB1: and #$01 beq NOBOOT NOCART: jsr BOOT NOBOOT: lda #$00 sta COLDST lda TRAMSZ beq NOA2 lda $BFFD and #$04 beq NOA2 jmp (LBFFA) NOA2: lda TSTDAT beq NOCAR2 lda $9FFD and #$04 beq NOCART jmp (L9FFA) NOCAR2: jmp (DOSVEC) SIGNON: ldx #$F2 ldy #$F0 jsr PUTLIN BALCKB: jsr BLKB2 jmp BALCKB BLKB2: lda EDITRV+5 pha lda EDITRV+4 pha rts CAINI: jmp (LBFFE) CBINI: jmp (L9FFE) SPECL: cmp #$D0 bne HOWMCH LF243: rts LF244: inc $BFFC lda $BFFC bne ENSPEC lda $BFFD bpl ENSPEC jmp (LBFFE) ENSPEC: dec $BFFC ENSPE2: ldy #$00 sty $05 lda #$10 sta TRAMSZ HOWMCH: lda ($05),y eor #$FF sta ($05),y cmp ($05),y bne LF243 eor #$FF sta ($05),y lda TRAMSZ clc adc #$10 sta TRAMSZ .byte $4C .byte $3F ENDRAM: .byte $F2 HARDI: lda #$00 tax CLRCHP: sta HPOSP0,x sta DMACTL,x sta AUDF1,x nop nop nop inx bne CLRCHP rts OSRAM: dec BRKKEY lda #$54 sta BRKKY lda #$E7 sta $0237 lda TRAMSZ sta RAMSIZ sta $02E6 lda #$00 sta MEMTOP lda #$00 sta MEMLO lda #$07 sta $02E8 jsr LE40C jsr LE41C jsr LE42C jsr PRINTV+12 jsr LE44C jsr LE46E jsr LE465 jsr LE46B lda CONSOL and #$01 bne NOKEY inc CKEY NOKEY: rts BOOT: lda WARMST beq NOWARM lda BOOT_OK and #$01 beq NOINIT jsr DINI NOINIT: rts NOWARM: lda #$01 sta DUNIT lda #$53 sta DCOMND jsr DSKINV bpl DOOBOOT rts DOOBOOT:lda #$00 sta DAUX2 lda #$01 sta DAUX1 lda #$00 sta DBUFLO lda #$04 sta DBUFHI SECT1: jsr GETSEC bpl ALLSEC BADDSK: jsr DSKRDE lda CASSBT beq DOOBOOT rts ALLSEC: ldx #$03 RDBYTE: lda $0400,x sta DFLAGS,x dex bpl RDBYTE lda BOOTAD sta RAMLO lda $0243 sta $05 lda $0404 sta DOSINI lda $0405 sta $0D MVBUFF: ldy #$7F MVNXB: lda $0400,y sta (RAMLO),y dey bpl MVNXB clc lda RAMLO adc #$80 sta RAMLO lda $05 adc #$00 sta $05 dec DBSECT beq ENBOOT inc DAUX1 SECTX: jsr GETSEC bpl MVBUFF jsr DSKRDE lda CASSBT bne BADDSK beq SECTX ENBOOT: lda CASSBT beq XBOOT jsr GETSEC XBOOT: jsr BLOAD bcs BADDSK jsr DINI inc BOOT_OK rts BLOAD: clc lda BOOTAD adc #$06 sta RAMLO lda $0243 adc #$00 sta $05 jmp (RAMLO) DINI: jmp (DOSINI) DSKRDE: ldx #$0D ldy #$F1 PUTLIN: txa ldx #$00 sta ICBAL,x tya sta ICBAH,x lda #$09 sta ICCOM,x lda #$FF sta ICBLL,x jsr CIOV rts GETSEC: lda CASSBT beq DISKM jmp LE47A DISKM: lda #$52 sta DCOMND lda #$01 sta DUNIT jsr DSKINV rts CSBOOT: lda WARMST beq CSBOT2 lda BOOT_OK and #$02 beq NOCSB2 jsr CINI NOCSB2: rts CSBOT2: lda CKEY beq NOCSBT lda #$80 sta FTYPE inc CASSBT jsr LE47D jsr SECT1 lda #$00 sta CASSBT sta CKEY asl BOOT_OK lda DOSINI sta CASINI lda $0D sta $03 NOCSBT: rts CINI: jmp (CASINI) KBDORG: lda #$FF sta FILDAT lda $02E6 and #$F0 sta RAMTOP lda #$40 .byte $8D .byte $BE PWRONA: .byte $02 LF3F5: rts DOPEN: lda ICAX2Z and #$0F .byte $D0 LF3FB: php EOPEN: lda ICAX1Z and #$0F sta ICAX1Z lda #$00 OPNCOM: sta DINDEX lda #$E0 sta CHBAS lda #$02 sta CHACT sta SDMCTL lda #$01 sta DSTAT lda #$C0 ora POKMSK sta POKMSK sta IRQEN lda #$00 sta TINDEX sta $64 sta SWPFLG sta CRSINH ldy #$0E lda #$01 CLRTBS: sta TABMAP,y dey bpl CLRTBS ldx #$04 LF438: lda COLRTB,x sta COLOR0,x dex bpl LF438 ldy RAMTOP dey sty $0295 lda #$60 sta TXTMSC ldx DINDEX lda ANCONV,x bne LF457 OPNERR: lda #$91 sta DSTAT LF457: sta HOLD1 lda RAMTOP sta $65 ldy ALOCAT,x DOPEN1: lda #$28 jsr DBSUB dey bne DOPEN1 lda GTIA and #$3F sta $67 tay cpx #$08 bcc NOT8 txa ror a ror a ror a and #$C0 ora $67 tay lda #$10 jsr DBSUB cpx #$0B bne NOT8 lda #$06 sta $02C8 NOT8: sty GTIA lda $64 sta SAVMSC lda $65 sta $59 VBWAIT: lda VCOUNT cmp #$7A bne VBWAIT jsr DBDEC lda PAGETB,x beq NOMOD lda #$FF sta $64 dec $65 NOMOD: lda $64 sta SAVADR lda $65 sta $69 jsr DBDDEC lda #$41 jsr STORE stx MLTTMP lda #$18 sta BOTSCR lda DINDEX cmp #$09 bcs NOTMXD lda ICAX1Z and #$10 beq NOTMXD lda #$04 sta BOTSCR ldx #$02 DOPEN2: lda #$02 jsr STORE dex bpl DOPEN2 ldy RAMTOP dey tya jsr STORE lda #$60 jsr STORE lda #$42 jsr STORE clc lda #$0C adc MLTTMP sta MLTTMP NOTMXD: ldy MLTTMP ldx NUMDLE,y DOPEN3: lda HOLD1 jsr STORE dex bne DOPEN3 lda DINDEX cmp #$08 bcc DOPEN5 ldx #$5D lda RAMTOP sec sbc #$10 jsr STORE lda #$00 jsr STORE lda #$4F jsr STORE DOPEN4: lda HOLD1 jsr STORE dex bne DOPEN4 DOPEN5: lda $59 jsr STORE lda SAVMSC jsr STORE lda HOLD1 ora #$40 jsr STORE lda #$70 jsr STORE lda #$70 jsr STORE lda $64 sta SDLSTL lda $65 sta $0231 lda #$70 jsr STORE lda $64 sta MEMTOP lda $65 sta $02E6 lda SAVADR sta $64 lda $69 sta $65 lda $0231 jsr STORE lda SDLSTL jsr STORE lda DSTAT bpl DOPEN9 pha jsr EOPEN pla tay rts DOPEN9: lda ICAX1Z and #$20 bne DOPEN7 jsr CLRSCR sta TXTROW lda LMARGN sta TXTCOL DOPEN7: lda #$22 ora SDMCTL sta SDMCTL .byte $4C .byte $21 LF592: .byte $F6 GETCH: jsr RANGE jsr GETPLT jsr INATAC jsr INCRSB jmp RETUR1 GETPLT: jsr CONVRT lda ($64),y and DMASK SHIFTD: lsr SHFAMT bcs SHIFT1 lsr a bpl SHIFTD SHIFT1: sta CHAR cmp #$00 LF5B6: rts OUTCH: sta ATACHR jsr RANGE OUTCHA: lda ATACHR cmp #$7D bne OUTCHE jsr CLRSCR jmp RETUR2 OUTCHE: lda ATACHR cmp #$9B bne OUTCHB jsr DOCRWS jmp RETUR2 OUTCHB: jsr OUTPLT jsr INCRSR jmp RETUR2 OUTPLT: lda SSFLAG bne OUTPLT ldx #$02 CRLOOP: lda ROWCRS,x sta OLDROW,x dex bpl CRLOOP lda ATACHR tay rol a rol a rol a rol a and #$03 tax tya and #$9F ora ATAINT,x OUTCH2: sta CHAR jsr CONVRT lda CHAR SHIFTV: lsr SHFAMT bcs SHIFT2 asl a jmp SHIFTV SHIFT2: and DMASK sta TMPCHR lda DMASK eor #$FF and ($64),y ora TMPCHR sta ($64),y rts RETUR2: jsr GETPLT sta OLDCHR ldx DINDEX bne RETUR1 ldx CRSINH bne RETUR1 eor #$80 .byte $20 .byte $FF LF633: .byte $F5 RETUR1: ldy DSTAT lda #$01 sta DSTAT .byte $AD .byte $FB LF63C: .byte $02 NOFUNC: rts jsr SWAP jsr ERANGE lda BUFCNT bne EGETC3 lda ROWCRS sta BUFSTR lda COLCRS sta $6D EGETC1: jsr KGETCH sty DSTAT lda ATACHR cmp #$9B beq EGETC2 jsr DOSS jsr SWAP lda LOGCOL cmp #$71 bne EGETC6 jsr BELL EGETC6: jmp EGETC1 EGETC2: jsr OFFCRS jsr DOBUFC lda BUFSTR sta ROWCRS lda $6D sta COLCRS EGETC3: lda BUFCNT beq EGETC5 EGETC7: dec BUFCNT beq EGETC5 lda DSTAT bmi EGETC7 jsr GETCH sta ATACHR jmp SWAP EGETC5: jsr DOCRWS lda #$9B sta ATACHR jsr RETUR2 sty DSTAT jmp SWAP JSRIND: .byte $6C .byte $64 EOUTCH: brk sta ATACHR jsr SWAP jsr ERANGE DOSS: jsr OFFCRS jsr TSTCTL beq ERETN EOUTC6: asl ESCFLG jsr OUTCHE jmp SWAP ERETN: lda DSPFLG ora ESCFLG bne EOUTC6 asl ESCFLG inx lda CNTRLS,x sta $64 lda LFEC7,x sta $65 jsr JSRIND jsr RETUR2 jmp SWAP EOUTC5: lda #$FF .byte $8D .byte $FC KGETC2: .byte $02 KGETCH: lda ICAX1Z lsr a bcs GETOUT lda #$80 ldx BRKKEY beq K7 lda FILDAT cmp #$FF beq KGETCH sta HOLDCH ldx #$FF stx FILDAT jsr CLICK KGETC3: tax cpx #$C0 bcc ASCC01 ldx #$03 ASCC01: lda ATASCI,x sta ATACHR cmp #$80 beq EOUTC5 cmp #$81 bne KGETC1 lda INVFLG eor #$80 sta INVFLG jmp EOUTC5 KGETC1: cmp #$82 bne K1 lda #$00 sta SHFLOK beq EOUTC5 K1: cmp #$83 bne K2 lda #$40 sta SHFLOK bne EOUTC5 K2: cmp #$84 bne K3 lda #$80 sta SHFLOK bne EOUTC5 K3: cmp #$85 bne K6 lda #$88 K7: sta DSTAT sta BRKKEY GETOUT: lda #$9B bne K8 K6: lda HOLDCH cmp #$40 bcs K5 lda ATACHR cmp #$61 bcc K5 cmp #$7B bcs K5 lda SHFLOK beq K5 ora HOLDCH jmp KGETC3 K5: jsr TSTCTL beq K4 lda ATACHR eor INVFLG K8: sta ATACHR K4: jmp RETUR1 lda #$80 sta ESCFLG rts CRSRUP: dec ROWCRS bpl COMRET ldx BOTSCR dex VPDNCM: stx ROWCRS COMRET: jmp STRBEG inc ROWCRS lda ROWCRS cmp BOTSCR bcc COMRET ldx #$00 beq VPDNCM CRSRLF: dec COLCRS lda COLCRS bmi CRSRL1 cmp LMARGN bcs COMRE1 CRSRL1: lda RMARGN LFRTCM: sta COLCRS COMRE1: jmp DOLCOL CRSRRT: inc COLCRS lda COLCRS cmp RMARGN bcc COMRE1 beq COMRE1 lda LMARGN jmp LFRTCM CLRSCR: jsr PUTMSC ldy #$00 tya CLRSC2: sta ($64),y iny bne CLRSC2 inc $65 ldx $65 cpx RAMTOP bcc CLRSC2 lda #$FF CLRSC3: sta LOGMAP,y iny cpy #$04 bcc CLRSC3 HOME: jsr COLCR sta LOGCOL sta $6D lda #$00 sta ROWCRS sta $56 sta BUFSTR rts lda LOGCOL cmp LMARGN beq BS1 lda COLCRS cmp LMARGN bne BS3 jsr DELTIM BS3: jsr CRSRLF lda COLCRS cmp RMARGN bne BS2 lda ROWCRS beq BS2 jsr CRSRUP BS2: lda #$20 sta ATACHR jsr OUTPLT BS1: jmp DOLCOL TAB: jsr CRSRRT lda COLCRS cmp LMARGN bne TAB1 jsr DOCR jsr LOGGET bcc TAB1 bcs TAB2 TAB1: lda LOGCOL jsr BITGET bcc TAB TAB2: jmp DOLCOL lda LOGCOL jmp BITSET lda LOGCOL jmp BITCLR jsr PHACRS jsr GETPLT sta INSDAT lda #$00 sta SCRFLG INSCH4: jsr OUTCH2 lda LOGCOL pha jsr INCRSA pla cmp LOGCOL bcs INSCH3 INSCH1: lda INSDAT pha jsr GETPLT sta INSDAT pla jmp INSCH4 INSCH3: jsr PLACRS INSCH6: dec SCRFLG bmi INSCH5 dec ROWCRS bne INSCH6 INSCH5: jmp DOLCOL jsr PHACRS DELCH1: jsr CONVRT lda $64 sta SAVADR lda $65 sta $69 lda LOGCOL pha jsr INCRSB pla cmp LOGCOL bcs DELCH2 lda ROWCRS cmp BOTSCR bcs DELCH2 jsr GETPLT ldy #$00 sta (SAVADR),y beq DELCH1 DELCH2: ldy #$00 tya sta (SAVADR),y jsr DELTIA jsr PLACRS jmp DOLCOL INSLIN: sec INSLIA: jsr EXTEND lda LMARGN sta COLCRS jsr CONVRT lda $64 sta SAVADR clc adc #$28 sta MLTTMP lda $65 sta $69 adc #$00 sta $67 ldx ROWCRS cpx #$17 beq INSLI2 INSLI1: jsr MOVLIN inx cpx #$17 bne INSLI1 INSLI2: jsr CLRLIN jmp DOLCOL DELLIN: jsr DOLCOL DELLIA: ldy HOLD1 sty ROWCRS DELLIB: ldy ROWCRS DELLI1: tya sec jsr LO2GET php tya clc adc #$78 plp jsr BITPUT iny cpy #$18 bne DELLI1 lda $02B4 ora #$01 sta $02B4 DELLI2: lda LMARGN sta COLCRS jsr CONVRT jsr SCROL1 jsr LOGGET bcc DELLIB jmp DOLCOL BELL: rts .byte $20 BELL1: jsr CLICK dey bpl BELL1 rts DBDDEC: lda #$02 bne DBSUB STORE: ldy DSTAT bmi STROK ldy #$00 STORE1: sta ($64),y DBDEC: lda #$01 DBSUB: sta SUBTMP lda DSTAT bmi STROK lda $64 sec sbc SUBTMP sta $64 bcs DBSUB1 dec $65 DBSUB1: lda $0F cmp $65 bcc STROK bne STRERR lda APPMHI cmp $64 bcc STROK STRERR: lda #$93 sta DSTAT STROK: rts CONVRT: lda ROWCRS pha lda COLCRS pha lda $56 pha jsr PUTMSC lda ROWCRS sta MLTTMP lda #$00 sta $67 lda MLTTMP asl a rol $67 sta HOLD1 ldy $67 sty HOLD2 asl a rol $67 asl a rol $67 clc adc HOLD1 sta MLTTMP lda $67 adc HOLD2 sta $67 ldx DINDEX ldy DHLINE,x CONVR1: dey bmi CONVR2 asl MLTTMP rol $67 jmp CONVR1 CONVR2: ldy DIV2TB,x lda COLCRS ldx #$07 CONVR3: dey bmi CONVR4 dex lsr $56 ror a ror TMPLBT jmp CONVR3 CONVR4: iny clc adc MLTTMP sta MLTTMP bcc CONVR5 inc $67 CONVR5: sec CONVR6: ror TMPLBT clc dex bpl CONVR6 ldx TMPLBT lda MLTTMP clc adc $64 sta $64 sta OLDADR lda $67 adc $65 sta $65 sta $5F lda DMASKT,x sta DMASK sta SHFAMT pla sta $56 pla sta COLCRS pla sta ROWCRS rts INCRSB: lda #$00 beq INCRSC INCRSR: lda #$9B INCRSC: sta INSDAT INCRSA: inc LOGCOL inc COLCRS bne INCRS2 inc $56 INCRS2: lda COLCRS ldx DINDEX cmp COLUMN,x beq INC2A cpx #$00 bne INCRS3 cmp RMARGN beq INCRS3 bcs INC2A INCRS3: rts INC2A: cpx #$08 bcc DOCR1 lda $56 beq INCRS3 DOCR1: lda DINDEX bne DOCR lda LOGCOL cmp #$51 bcc DOCR1B lda INSDAT beq DOCR jsr DOCRWS jmp INCRS1 DOCR1B: jsr DOCR lda ROWCRS clc adc #$78 jsr BITGET bcc DOCR1A lda INSDAT beq DOCR1A clc jsr INSLIA DOCR1A: jmp DOLCOL NOSCRL: lda #$00 beq NOSCR1 DOCRWS: lda #$9B NOSCR1: sta INSDAT DOCR: jsr COLCR lda #$00 sta $56 inc ROWCRS DOCR2: ldx DINDEX ldy #$18 bit SWPFLG bpl DOCR2A ldy #$04 tya bne DOCR2B DOCR2A: lda NOROWS,x DOCR2B: cmp ROWCRS bne INCRS1 sty $029D txa bne INCRS1 lda INSDAT beq INCRS1 cmp #$9B sec beq DOCR4B clc DOCR4B: jsr SCROLL inc SCRFLG dec BUFSTR dec $029D lda LOGMAP sec bpl DOCR4B lda $029D sta ROWCRS INCRS1: jmp DOLCOL SUBEND: sec lda ROWAC,x sbc ENDPT sta ROWAC,x lda $71,x sbc $75 sta $71,x rts ERANGE: lda BOTSCR cmp #$04 beq RANGE lda DINDEX beq RANGE jsr EOPEN RANGE: lda #$27 cmp RMARGN bcs RANGE3 sta RMARGN RANGE3: ldx DINDEX lda NOROWS,x cmp ROWCRS bcc RNGERR beq RNGERR cpx #$08 bne RANGE1 lda $56 beq RNGOK cmp #$01 bne RNGERR beq RANGE2 RANGE1: lda $56 bne RNGERR RANGE2: lda COLUMN,x cmp COLCRS bcc RNGERR beq RNGERR RNGOK: lda #$01 sta DSTAT lda #$80 ldx BRKKEY sta BRKKEY beq RNGER2 rts RNGERR: jsr HOME lda #$8D RNGER2: sta DSTAT RNGER1: pla pla lda SWPFLG bpl RETUR3 jsr SWAPA RETUR3: jmp RETUR1 OFFCRS: ldy #$00 lda OLDCHR sta (OLDADR),y rts BITCON: pha and #$07 tax lda MASKTB,x sta BITMSK pla lsr a lsr a lsr a tax rts BITROL: rol $02B4 rol $02B3 rol LOGMAP rts BITPUT: bcc BITCLR BITSET: jsr BITCON lda TABMAP,x ora BITMSK sta TABMAP,x rts BITCLR: jsr BITCON lda BITMSK eor #$FF and TABMAP,x sta TABMAP,x rts LOGGET: lda ROWCRS LO1GET: clc LO2GET: adc #$78 BITGET: jsr BITCON clc lda TABMAP,x and BITMSK beq BITGE1 sec BITGE1: rts INATAC: lda CHAR ldy DINDEX cpy #$03 bcs INATA1 rol a rol a rol a rol a and #$03 tax lda CHAR and #$9F ora INTATA,x INATA1: sta ATACHR rts MOVLIN: lda #$02 sta $65 lda #$47 sta $64 ldy #$27 MOVLI1: lda (MLTTMP),y sta TMPCHR lda (SAVADR),y sta (MLTTMP),y lda TMPCHR sta ($64),y dey bpl MOVLI1 lda $65 sta $69 lda $64 sta SAVADR clc lda MLTTMP adc #$28 sta MLTTMP bcc MOVLI2 inc $67 MOVLI2: rts EXTEND: php ldy #$17 EXTEN1: tya jsr LO1GET php tya clc adc #$79 plp jsr BITPUT EXTEN3: dey bmi EXTEN4 cpy ROWCRS bcs EXTEN1 EXTEN4: lda ROWCRS clc adc #$78 plp jmp BITPUT CLRLIN: lda LMARGN sta COLCRS jsr CONVRT ldy #$27 lda #$00 CLRI1: sta ($64),y dey bpl CLRI1 rts SCROLL: jsr BITROL lda SAVMSC sta $64 lda $59 sta $65 SCROL1: ldy #$28 lda ($64),y ldx RAMTOP dex cpx $65 bne SCROL2 ldx #$D7 cpx $64 bcs SCROL2 lda #$00 SCROL2: ldy #$00 sta ($64),y inc $64 bne SCROL1 inc $65 lda $65 cmp RAMTOP bne SCROL1 jmp DOLCOL DOLCOL: lda #$00 sta LOGCOL lda ROWCRS sta HOLD1 DOLCO1: lda HOLD1 jsr LO1GET bcs DOLCO2 lda LOGCOL clc adc #$28 sta LOGCOL dec HOLD1 jmp DOLCO1 DOLCO2: clc lda LOGCOL adc COLCRS sta LOGCOL rts DOBUFC: jsr PHACRS lda LOGCOL pha lda BUFSTR sta ROWCRS lda $6D sta COLCRS lda #$01 sta BUFCNT DOBUF1: ldx #$17 lda SWPFLG bpl DOB1 ldx #$03 DOB1: cpx ROWCRS bne DOBU1A lda COLCRS cmp RMARGN bne DOBU1A inc BUFCNT jmp DOBUF2 DOBU1A: jsr INCRSB inc BUFCNT lda LOGCOL cmp LMARGN bne DOBUF1 dec ROWCRS jsr CRSRLF DOBUF2: jsr GETPLT bne DOBUF4 dec BUFCNT lda LOGCOL cmp LMARGN beq DOBUF4 jsr CRSRLF lda COLCRS cmp RMARGN bne DOBUF3 dec ROWCRS DOBUF3: lda BUFCNT bne DOBUF2 DOBUF4: pla sta LOGCOL jsr PLACRS rts STRBEG: jsr DOLCOL lda HOLD1 sta BUFSTR lda LMARGN sta $6D rts DELTIA: lda LOGCOL cmp LMARGN bne DELTIB dec ROWCRS DELTIB: jsr DOLCOL DELTIM: lda LOGCOL cmp LMARGN beq DELTI3 jsr CONVRT lda RMARGN sec sbc LMARGN tay DELTI1: lda ($64),y bne DELTI3 dey bpl DELTI1 DELTI2: jmp DELLIB DELTI3: rts TSTCTL: ldx #$2D TSTCT1: lda CNTRLS,x cmp ATACHR beq TSTCT2 dex dex dex bpl TSTCT1 TSTCT2: rts PHACRS: ldx #$02 PHACR1: lda ROWCRS,x sta TMPROW,x dex bpl PHACR1 rts PLACRS: ldx #$02 PLACR1: lda TMPROW,x sta ROWCRS,x dex bpl PLACR1 rts SWAP: jsr SWAPA jmp RETUR1 SWAPA: lda BOTSCR cmp #$18 beq SWAP3 ldx #$0B SWAP1: lda ROWCRS,x pha lda TXTROW,x sta ROWCRS,x pla sta TXTROW,x dex bpl SWAP1 lda SWPFLG eor #$FF sta SWPFLG SWAP3: rts CLICK: ldx #$7F CLICK1: stx CONSOL stx WSYNC dex bpl CLICK1 rts COLCR: lda #$00 ldx SWPFLG bne COLCR1 ldx DINDEX bne COLCR2 COLCR1: lda LMARGN COLCR2: sta COLCRS rts PUTMSC: lda SAVMSC sta $64 lda $59 sta $65 LFCFB: rts DRAW: ldx #$00 lda ICCOMZ cmp #$11 beq DRAWA cmp #$12 beq DRAWB ldy #$84 rts DRAWB: inx DRAWA: stx FILFLG lda ROWCRS sta NEWROW lda COLCRS sta NEWCOL lda $56 sta $62 lda #$01 sta ROWINC sta COLINC sec lda NEWROW sbc OLDROW sta DELTAR bcs DRAW1 lda #$FF sta ROWINC lda DELTAR eor #$FF clc adc #$01 sta DELTAR DRAW1: sec lda NEWCOL sbc OLDCOL sta DELTAC lda $62 sbc $5C sta L0078 bcs DRAW2 lda #$FF sta COLINC lda DELTAC eor #$FF sta DELTAC lda L0078 eor #$FF sta L0078 inc DELTAC bne DRAW2 inc L0078 DRAW2: ldx #$02 ldy #$00 sty $73 DRAW3A: tya sta ROWAC,x lda OLDROW,x sta ROWCRS,x dex bpl DRAW3A lda DELTAC inx tay lda L0078 sta $7F sta $75 bne DRAW3 lda DELTAC cmp DELTAR bcs DRAW3 lda DELTAR ldx #$02 tay DRAW3: tya sta COUNTR sta ENDPT pha lda $75 lsr a pla ror a sta ROWAC,x DRAW4A: lda COUNTR ora $7F bne DRAW11 jmp DRAW10 DRAW11: clc lda ROWAC adc DELTAR sta ROWAC bcc DRAW5 inc $71 DRAW5: lda $71 cmp $75 bcc DRAW6 bne DRAW5A lda ROWAC cmp ENDPT bcc DRAW6 DRAW5A: clc lda ROWCRS adc ROWINC sta ROWCRS ldx #$00 jsr SUBEND DRAW6: clc lda COLAC adc DELTAC sta COLAC lda $73 adc L0078 sta $73 cmp $75 bcc DRAW8 bne DRAW6A lda COLAC cmp ENDPT bcc DRAW8 DRAW6A: bit COLINC bpl DRAW6B dec COLCRS lda COLCRS cmp #$FF bne DRAW7 lda $56 beq DRAW7 dec $56 bpl DRAW7 DRAW6B: inc COLCRS bne DRAW7 inc $56 DRAW7: ldx #$02 jsr SUBEND DRAW8: jsr RANGE jsr OUTPLT lda FILFLG beq DRAW9 jsr PHACRS lda ATACHR sta HOLD4 DRAW8A: lda ROWCRS pha jsr INCRSA pla sta ROWCRS DRAW8C: jsr RANGE jsr GETPLT bne DRAW8B lda $02FD sta ATACHR jsr OUTPLT jmp DRAW8A DRAW8B: lda HOLD4 sta ATACHR jsr PLACRS DRAW9: sec lda COUNTR sbc #$01 sta COUNTR lda $7F sbc #$00 sta $7F bmi DRAW10 jmp DRAW4A DRAW10: jmp RETUR1 ALOCAT: .byte $18,$10,$0A,$0A,$10,$1C,$34,$64 .byte $C4,$C4,$C4,$C4 NUMDLE: .byte $17,$17,$0B,$17,$2F,$2F,$5F,$5F .byte $61,$61,$61,$61 MXDMDE: .byte $13,$13,$09,$13,$27,$27,$4F,$4F .byte $41,$41,$41,$41 ANCONV: .byte $02,$06,$07,$08,$09,$0A,$0B,$0D .byte $0F,$0F,$0F,$0F PAGETB: .byte $00,$00,$00,$00,$00,$00,$00,$01 .byte $01,$01,$01,$01 DHLINE: .byte $02,$01,$01,$00,$00,$01,$01,$02 .byte $02,$02,$02,$02 COLUMN: .byte $28,$14,$14,$28,$50,$50,$A0,$A0 .byte $40,$50,$50,$50 NOROWS: .byte $18,$18,$0C,$18,$30,$30,$60,$60 .byte $C0,$C0,$C0,$C0 DIV2TB: .byte $00,$00,$00,$02,$03,$02,$03,$02 .byte $03,$01,$01,$01 DMASKT: .byte $00,$FF,$F0,$0F,$C0,$30,$0C,$03 MASKTB: .byte $80,$40,$20,$10,$08,$04,$02,$01 COLRTB: .byte $28,$CA,$94,$46,$00 CNTRLS: .byte $1B LFEC7: .byte $79,$F7,$1C,$7F,$F7,$1D,$8C,$F7 .byte $1E,$99,$F7,$1F,$AA,$F7,$7D,$B9 .byte $F7,$7E,$E6,$F7,$7F,$10,$F8,$9B .byte $30,$FA,$9C,$D4,$F8,$9D,$A4,$F8 .byte $9E,$32,$F8,$9F,$2D,$F8,$FD,$0A .byte $F9,$FE,$6D,$F8,$FF,$37,$F8 ATAINT: .byte $40,$00,$20,$60 INTATA: .byte $20,$40,$00,$60 ATASCI: .byte $6C,$6A,$3B,$80,$80,$6B,$2B,$2A .byte $6F,$80,$70,$75,$9B,$69,$2D,$3D .byte $76,$80,$63,$80,$80,$62,$78,$7A .byte $34,$80,$33,$36,$1B,$35,$32,$31 .byte $2C,$20,$2E,$6E,$80,$6D,$2F,$81 .byte $72,$80,$65,$79,$7F,$74,$77,$71 .byte $39,$80,$30,$37,$7E,$38,$3C,$3E .byte $66,$68,$64,$80,$82,$67,$73,$61 .byte $4C,$4A,$3A,$80,$80,$4B,$5C,$5E .byte $4F,$80,$50,$55,$9B,$49,$5F,$7C .byte $56,$80,$43,$80,$80,$42,$58,$5A .byte $24,$80,$23,$26,$1B,$25,$22,$21 .byte $5B,$20,$5D,$4E,$80,$4D,$3F,$81 .byte $52,$80,$45,$59,$9F,$54,$57,$51 .byte $28,$80,$29,$27,$9C,$40,$7D,$9D .byte $46,$48,$44,$80,$83,$47,$53,$41 .byte $0C,$0A,$7B,$80,$80,$0B,$1E,$1F .byte $0F,$80,$10,$15,$9B,$09,$1C,$1D .byte $16,$80,$03,$80,$80,$02,$18,$1A .byte $80,$80,$85,$80,$1B,$80,$FD,$80 .byte $00,$20,$60,$0E,$80,$0D LFFA4: .byte $80,$81,$12,$80,$05,$19,$9E,$14 .byte $17,$11,$80,$80,$80,$80,$FE,$80 .byte $7D,$FF,$06,$08,$04,$80,$84,$07 .byte $13,$01 PIRQ5: lda $D209 cmp CH1 bne PIRQ3 lda KEYDEL bne PIRQ4 PIRQ3: lda $D209 cmp #$9F bne PIRQ1 lda SSFLAG eor #$FF sta SSFLAG bcs PIRQ4 PIRQ1: sta FILDAT sta CH1 lda #$03 sta KEYDEL lda #$00 sta ATRACT PIRQ4: lda #$30 sta SRTIMR PIRQ2: pla rti unused: .byte $FF,$FF,$FF,$FF,$FF,$FF HA_xxx: .addr PIRQ HANMI: .addr PNMI HARES: .addr PWRUP HAIRQ: .addr PIRQ