; SAVE#D:MDUP1.M65 ; ; ;*Resident MDUP code ; ;*INITIALIZE MYDOS INTERFACE ; INIT LDA # >DUPENT STA DOSVEC+1 LDA # =4.3 DOS ; ;* AFN .BYTE"D1:AUTORUN.SYS",$9B ; ;*Changed to David's wonderful ; running Autorun.sys files by ; renaming with Ar0 extension ; AFN .BYTE "D1:*AR0",$9B ; ;*OPEN FILE ; ; CALLING SEQUENCE: ; JSR SOPEN ; .BYTE AUX ; .BYTE CMD ; .WORD BUFFER ADDRESS ; SOPEN SEC .BYTE $A9 ; FAKE LDA ; ;*DO A READ/WRITE TYPE I/O ; REQUEST ; ; CALLING SEQUENCE: ; JSR DOIO ; .BYTE IOCBNO ; .WORD BUFFER LENGTH ; .BYTE CMD ; .WORD BUFFER ADDRESS ; DOIO CLC PLA STA RAMLO PLA STA RAMLO+1 LDY #1 LDA (RAMLO),Y BCC DOIO1 STA IAUX,X BCS XTRCB DOIO1 TAX INY LDA (RAMLO),Y STA ILEN,X INY LDA (RAMLO),Y STA ILEN+1,X XTRCB INY LDA (RAMLO),Y STA ICMD,X INY LDA (RAMLO),Y STA IBUF,X INY LDA (RAMLO),Y STA IBUF+1,X TYA CLC ADC RAMLO TAY LDA #0 ADC RAMLO+1 PHA TYA PHA JMP CIOV ; DO I/O REQUEST ; ;*IF NO DUP.SYS, INC DRIVE # ; RETRYOS INC DUPSYS+1 LDA DUPSYS+1 AND #$0F CMP #9 BCC RTYOSV BNE GOTO1 CMP RAMDKU BEQ RTYOSV GOTO1 LDA #'1 STA DUPSYS+1 RTYOSV TAX LDA DKTYPE-'1,X BEQ RETRYOS BNE NOWMS ; ;*LOAD PROGRAM FUNCTION ; LDFILE JSR LDMEM LDX #$10 JSR TOVECT ; LOAD PROGRAM ; ; OR GO TO IT .BYTE $2C ; FAKE BIT ; ;****************************** ; ;*COMMON EXIT POINT FOR PROGRAMS ; ;****************************** ; ; RESTORE DOS/DUP INIT VECTOR ; DUPENT LDY #1 SAVERR STY CBSAV BIT STATE BVS GODOS BPL NOWMS JSR CLOS10 JSR SOPEN .BYTE $08 ; WRITE MEM.SAV ; ; FILE .BYTE OPEN .WORD NMSAV BMI NOWMS JSR DOIO .BYTE $10 .WORD MSLEN .BYTE PUTCHR .WORD MSBASE NOWMS JSR CLOS10 JSR SOPEN ; GET DUP.SYS ; ; INTO MEMORY .BYTE $06 .BYTE 39 .WORD DUPSYS BMI RETRYOS LDA DOSINI STA INISAV LDA DOSINI+1 STA INISAV+1 GODOS JSR CLOSX JMP DOSOS ; THEN START IT ; ; UP ; ;*SAVE MEMORY SUBROUTINE: WRITE ; FILE BODY INIT AND RUN VECTORS ; WDR JSR LDMEM ; LOAD MEM.SAV ; ; IF NEED BE WDR1 LDX #$10 ; WRITE TEXT TO ; ; DISK FILE JSR CIOV WRERRO BMI SAVERR LDX # INITAD STA VECTOR+1 STA VECTOR+3 ; (X,A)=MIDDLE ; ; WORD STX VECTOR+2 WR6BYT JSR DOIO .BYTE $10 .WORD 6 .BYTE PUTCHR .WORD VECTOR BMI WRERRO RTS2 RTS ; ;*RUN AT ADDRESS ; TOVECT JMP (VECTOR) ; TO 'RUN AT' ; ; ADDRESS ; ;*LOAD MEM.SAV IF NEED BE ; LDMEM BIT STATE ; LOAD MEM.SAV? BPL NOLDMS ; LDX #$20 JSR SOPEN .BYTE $04 .BYTE OPEN .WORD NMSAV BMI NOLDMS ; JSR DOIO .BYTE $20 .WORD MSLEN .BYTE GETCHR .WORD MSBASE ; NOLDMS JMP CLOS20 ; NMSAV .BYTE "D1:MEM.SAV",$9B EC .BYTE "E:" DUPSYS .BYTE "D1:DUP.SYS",$9B OPT .BYTE 0 DUPFLAG .BYTE 0 ; DUP RESIDENT = ; ; $80 INISAV .WORD MDINIT CBSAV .BYTE 0 ; ERROR CODE ; ; FROM PROG EXECUTED FNAME .BYTE 0 *= *+39 ; ALLOW FOR 40 ; ; CHAR DEF DIR ; RESEND *= *+$0300 ; ALLOW FOR ; ; THREE FILE BUFFERS DRIVERS *= *+$0800 ; ALLOW 2K FOR ; ; RESIDENT CODE