* Mass Transfer DSRLNK * * 3.6.2015 Added R15 save to ensure DSRs have the proper value for VDPWA (8c02) * SCLEN EQU >8354 SCNAME EQU >8356 CRULST EQU >83D0 SADDR EQU >83D2 R15SAV DATA 0 3.6.2016 preserve GPLWS R15 for interrupt purposes FLGPTR DATA 0 SVGPRT DATA 0 SAVCRU DATA 0 SAVENT DATA 0 SAVLEN DATA 0 SAVPAB DATA 0 SAVVER DATA 0 NAMBUF DATA 0,0,0,0,0 DLNKWS DATA 0,0,0,0,0 TYPES DATA 0,0,0,0,0,0,0,0,0,0,0 C100 DATA 100 H20 EQU $ H2000 DATA >2000 DECMAL TEXT '.' HAA BYTE >AA CYC1 DATA 0 *MY STORAGE AREA H1300 DATA >1300 DSRLNK DATA DLNKWS,DLENTR DLENTR MOV *R14+,R5 SZCB @H20,R15 MOV @SCNAME,R0 MOV R0,R9 AI R9,-8 BLWP @VSBR MOVB R1,R3 SRL R3,8 SETO R4 LI R2,NAMBUF LNK$LP INC R0 INC R4 CI R4,7 JGT LNKERR C R4,R3 JEQ LNK$LN BLWP @VSBR MOVB R1,*R2+ CB R1,@DECMAL JNE LNK$LP LNK$LN MOV R4,R4 JEQ LNKERR *LNK$LP INC R0 * INC R4 * C R4,R3 * JEQ LNK$LN * BLWP @VSBR * MOVB R1,*R2+ * CB R1,@DECMAL * JNE LNK$LP *LNK$LN MOV R4,R4 * JEQ LNKERR * CI R4,7 * JGT LNKERR CLR @CRULST MOV R4,@SCLEN MOV R4,@SAVLEN INC R4 A R4,@SCNAME MOV @SCNAME,@SAVPAB SROM LWPI GPLWS LIMI 0 MOV R15,@R15SAV 3.6.2016; Must restore R15 for any DSRs LI R15,>8C02 dependent upon it for VDP operations CLR R1 MOV @H2000,@CYC1 *SET UPPER CRU BOUNDARY TO >2000 LI R12,>1100 *CHANGED FROM >0F00 JMP NOROM SROM1 LI R12,>0F00 MOV @H1300,@CYC1 NOROM MOV R12,R12 JEQ NOOFF SBZ 0 NOOFF AI R12,>0100 CLR @CRULST CI R12,>2000 JEQ SROM1 C R12,@CYC1 JEQ NODSR MOV R12,@CRULST SBO 0 LI R2,>4000 CB *R2,@HAA JNE NOROM A @TYPES,R2 JMP SGO2 SGO MOV @SADDR,R2 SBO 0 SGO2 MOV *R2,R2 JEQ NOROM MOV R2,@SADDR INCT R2 MOV *R2+,R9 MOVB @SCLEN+1,R5 JEQ NAME2 CB R5,*R2+ JNE SGO SRL R5,8 LI R6,NAMBUF NAME1 CB *R6+,*R2+ JNE SGO DEC R5 JNE NAME1 NAME2 INC R1 MOV R1,@SAVVER MOV R9,@SAVENT MOV R12,@SAVCRU BL *R9 R15 *must* contain VDP address JMP SGO SBZ 0 MOV @R15SAV,R15 3.6.2016 LWPI DLNKWS MOV R9,R0 BLWP @VSBR SRL R1,13 JNE IOERR RTWP NODSR MOV @R15SAV,R15 3.6.2016 LWPI DLNKWS * NODSR LWPI DLNKWS LNKERR CLR R1 IOERR SWPB R1 MOVB R1,*R13 SOCB @H20,R15 RTWP * eof