home *** CD-ROM | disk | FTP | other *** search
- OPSYS EQU 32 ; OPSYS SIZE IN 'K'
- ; DISK LOAD/SAVE FOR MITS BASIC 3.2
- ; REPLACES CLOAD/CSAVE
- ;
- ;
- OPSIZ EQU (OPSYS-16)*1024
- DCODE1 EQU 1007H
- POS1 EQU 1A4H ; JMP TABLE
- POS2 EQU 0EDH ; MNUEONICS
- DSKSP EQU 2720H+OPSIZ
- ORG DSKSP
- FSAV: DS 3
- FOPN: DS 3
- GETFILE: DS 3
- TMPBUFF: DS 3
- DLDX1: DS 3 ; FINISH OFF DLOAD
- DS 6
- BDOS: DS 11
- AFCB: DS 0
- ;
- QUOTE EQU 22H
- ;
- ORG POS1
- DW DLOAD,DSAVE
- ;
- ORG POS2
- DB 'DLOA','D'+80H,'DSAV','E'+80H
- ;
- ;
- SWKSP EQU 243H
- EWKSP EQU 245H
- NEW EQU 3A2H
- FERR EQU 2D4H
- BADNAE EQU 2 ; SYNTAX ERROR
- OMERR EQU 2C1H
- ;
- ;
- ORG DCODE1
- DSAVE: CALL GETFILE
- PUSH H
- CALL TMPBUFF
- ;
- MVI C,19 ; DELETE OLD FILE
- LXI D,AFCB
- PUSH D
- CALL BDOS
- POP D
- PUSH D
- MVI C,22 ; MAKE NEW FILE
- CALL BDOS
- ;
- CALL FOPN ; OPEN FILE
- ;
- LHLD SWKSP
- PUSH H ; START OF WORKSPACE
- ;
- DSVLP: POP D
- PUSH D
- MVI C,26
- CALL BDOS ; SET BUFF PTR
- POP H
- POP D ; (D=FCB , H=BUFF PTR)
- PUSH D
- PUSH H
- MVI C,21
- CALL BDOS ; WRITE TO DISK
- ;
- POP H
- LXI D,80H
- DAD D
- PUSH H
- XCHG ; DE=BUFF
- LHLD EWKSP ; HL=END OF WORKSPACE
- RST 4 ; HL-DE (ONLY SET FLAGS(
- JNC DSVLP
- ;
- ;
- FCLOS: POP H ; CLOSE FILE AND RESET CP/M TEMPS
- CALL TMPBUFF
- POP D
- FCLOSX: MVI C,16
- CALL BDOS ; FILE CLOSE
- ;
- CALL FSAV ; RESTORE FTMP BLOCK
- ;
- POP H
- RET
- ;
- ;
- ; DLOAD ,IT BACK IN ?
- DLOAD: CALL GETFILE
- PUSH H
- CALL TMPBUFF ; TEMP DISK BUFF (FOR OPEN)
- CALL NEW ; CLEAR WORKSPACE
- ;
- LXI D,AFCB
- PUSH D
- CALL FOPN ; OPEN FILE
- ;
- LHLD SWKSP
- PUSH H
- DLDLP: POP D
- PUSH D
- MVI C,26
- CALL BDOS ; SET BUFF PTR
- POP H
- POP D
- PUSH D
- PUSH H
- MVI C,20
- CALL BDOS ; READ DATA
- ORA A
- JNZ DLDX1 ; EOF (OR ERROR)
- ;
- POP H
- LXI D,80H
- DAD D
- PUSH H
- XCHG
- LXI H,-28H-0A0H
- DAD SP
- RST 4
- JNC DLDLP
- ; MEMORY OVERFLOW
- POP H
- POP D ; D=FCB
- CALL FSAV
- CALL NEW ; DON'T LEAVE JUNK AROUND
- POP H ; H=CHAR PTR
- JMP OMERR ; MEMORY ERROR
- ; ALL DONE
- ;
- ; USE CP/M BIOS FOR ALL A/O
- CONST EQU 3E06H+OPSIZ
- CONIN EQU CONST+3
- CONOUT EQU CONST+6
- ;
- ORG 4D0H
- POP PSW
- PUSH PSW
- PUSH B
- MOV C,A
- CALL CONOUT
- POP B
- POP PSW
- RET
- ;
- ORG 4DBH
- CALL CONIN
- DB 0,0,0,0,0,0
- ;
- ORG 58DH
- CALL CONST
- ORA A
- CNZ 5EEH
- ;
- ORG 5E9H
- CALL CONST
- ORA A
- RZ
- ;
- ; AUTOMATIC INITIALIZATTION AND ADVERTISING
- ;
- ORG 1
- JMP 177EH
- ;
- ORG 1832H
- LXI H,DSKSP-130 ; MEM SIZE:= JUST BELOW DISK BUFFER
- JMP 1865H
- ;
- ORG 1867H
- JMP 189CH ; WIDTH :=DEFAULT (72)
- ;
- ORG 18ACH
- LXI D,1774H ; DO YOU WANT ... ? := YES (ALL TRIG FUNCTIONS
- JMP 18E2H
- ;
- EOS EQU 0A0H
- ORG 1935H
- DB 0DH,0AH,'MODIFIED FOR CP/M DISK BY BYTE OF PALO ALTO',EOS
- DB 0,0
- ;
- ORG 19A5H ; WHO AM I??
- DB 0DH,0AH,' 8K MOD 0.2 FOR 24K CP/M ',EOS
-