AGET81 PLA STA RETADR PLA STA RETADR+1 PLA STA :IDX PLA STA ADDR1 PLA STA ADDR1+1 LDA #0 STA :IDX+1 LDA RETADR+1 PHA LDA RETADR PHA LDY #1 LDA (ADDR1),Y STA :ESIZE STA RETLEN DEY LDA (ADDR1),Y STA :ALEN LDA ERRCTRL CMP #1 BEQ :CHKERR JMP :ERREND :CHKERR LDA :IDX CMP :ALEN BCS :OVF JMP :ERREND :OVF _ERR #:E_SID;#:E_OVF1;#:E_DUMP;#:RES;#6 :ERREND LDY #0 LDA #0 TAY STY SCRATCH BEQ :ENTLP :DOADD CLC ADC :IDX TAX TYA ADC SCRATCH TAY TXA :LP ASL :IDX ROL SCRATCH :ENTLP LSR :ESIZE BCS :DOADD BNE :LP STX :IDX STY :IDX+1 CLC LDA #2 ADC :IDX STA :RES LDA #0 ADC :IDX+1 STA :RES+1 CLC LDA :RES ADC ADDR1 STA :RES LDA :RES+1 ADC ADDR1+1 STA :RES+1 LDY #0 LDA :RES STA ADDR1 LDA :RES+1 STA ADDR1+1 :LDLOOP LDA (ADDR1),Y STA RETURN,Y INY CPY RETLEN BCC :LDLOOP BEQ :LDLOOP LDY :RES LDX :RES+1 LDA RETLEN RTS :RES DS 2 :IDX DS 2 :ESIZE DS 1 :ALEN DS 1 :E_SID ASC "AGET81 (GET81 MACRO)",00 :E_DUMP ASC "DUMPING RES(2) IDX(2) ESIZE(1) ALEN(1)",00 :E_OVF1 ASC "OUT OF BOUNDS! INDEX > ARRAY LENGTH",00