; CP/M 2.2 ; AUTO COMMAND ; COPYRIGHT 1983 ; MORROW DESIGNS, INC. ; SAN LEANDRO, CA ; 02/25/83 ; MACLIB Z80 ; BUFF EQU 300H WRTOFF EQU 27H RDOFF EQU 24H SECOFF EQU 1EH SELOFF EQU 18H TRKOFF EQU 1BH DMAOFF EQU 21H ; ORG 100H ; START LXI H,80H ;POINTER TO INPUT BUFFER MOV B,M ;GET LENGTH OF CMD LINE. ; SPLOP: MVI A,' ' ;A=ASCII SPACE INX H ;INC POINTER CMP M ;SEE IF CHAR IS SPACE JRNZ NOSPC ;JMP IF NOT SPACE AGN: DJNZ SPLOP ; INX H ; NOSPC: MVI A,'*' ;A=ASCII ASTERISK CMP M ;SEE IF CHAR IS * JRNZ NOAST ;JMP IF NOT ; INX H ;INC POINTER MOV A,M ;GET DRIVE SUI 'A' STA DRV ;SAVE DRIVE DCR B JRZ NOAST ; DCR B JRZ INCH ; MVI A,' ' ;A=ASCII SPACE SPLP: INX H ;INC POINTER CMP M ;LOOK FOR SPACE JRZ AGN ;JMP IF SPACE DJNZ SPLP ; INCH: INX H ; NOAST: PUSH HL ;SAVE REGS. PUSH BC ; CALL LOGDRV ;LOG ON DRIVE CALL SETIO ;SET DRV,TRK,SECT,& DMA CALL READ ;READ 1ST SECTOR OF CP/M POP BC ;RESTORE REGS. POP HL ORA A ;CHECK FOR ERROR JNZ 0 ;WARM BOOT IF ERROR ; LXI D,BUFF+7 ;DE==>AUTO LENGTH IN CP/M MOV A,B ;B = CMD LENGTH STAX D ;STORE IN CP/M INX D ;INC PNTR. INR B ;INC CMD LNGTH ; MOV C,B ;BC=CMD LENGTH MVI B,0 LDIR ;PUT CMD IN CP/M ; WRT CALL SETIO ;SET VALUES FOR IO MVI C,1 CALL WRITE ;WRITE 1ST SECTOR OF CP/M RST 0 ;RET TO CP/M ; LOGDRV: LDA DRV ;GET DRIVE MOV E,A ; MVI C,0EH ;SELECT DRIVE CMD. JP 5 ;DO SYS CALL ; SETIO LDA DRV ;GET DRIVE MOV C,A CALL SELDSK ; MVI C,0 ;TRK.=0 CALL SELTRK ; MVI C,9 ;SECT.=9 CALL SELSEC ; LXI B,BUFF ;DMA ADDRESS=BUFF CALL SELDMA RET ; WRITE PUSH D ;SAVE DE MVI E,WRTOFF ;LOW BYTE OF WRITE OFFSET JR SYSCAL ; SELDMA PUSH D ;SAVE DE MVI E,DMAOFF ;LOW BYTE OF SETDMA OFFSET JR SYSCAL ; READ PUSH D ;SAVE DE MVI E,RDOFF ;LOW BYTE OF READ OFFSET JR SYSCAL ;CALL READ ; SELSEC PUSH D ;SAVE DE MVI B,0 MVI E,SECOFF ;LOW BYTE OF SETSEC OFFSET JR SYSCAL ;CALL SETSEC ; SELDSK PUSH D ;SAVE DE MVI E,SELOFF ;LOW BYTE OF SELDSK OFFSET JR SYSCAL ;CALL SELDSK ; SELTRK PUSH D ;SAVE DE MVI B,0 MVI E,TRKOFF ;LOW BYTE OF SETTRK OFFSET ; SYSCAL LHLD 01 ;GET WARM BOOT ADD. MVI D,0 ;D=0 DAD D ;ADD OFFSET TO WBOOT POP D ;RESTORE DE PCHL ;DO SYS CALL ; DRV DB 0 ; END