|
DataMuseum.dkPresents historical artifacts from the history of: CP/M |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about CP/M Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - download
Length: 3584 (0xe00) Types: TextFile Names: »PEEK.ASM«
└─⟦942159b25⟧ Bits:30005260 CP/M v. 3.0 til CR7 └─ ⟦this⟧ »PEEK.ASM«
TITLE 'PEEK.ASM tpa module for PEEK.RSX ' ;DETTE ER EN KOPI AF PEEK PROGRAMMET FRA MICROSYSTEMS FEBRUARY 84. ; ;EQUATES: BDOS EQU 5 ;SYSTEM ENTRY POINT PRINTF EQU 9 ;PRINT CONSOLE BUFFER FUNCT RSXF EQU 60 ;CALL REX SYSTEM CALL ; DFCB1 EQU 5CH ;DEFAULT FILE CONTROLE BLOCK 1 DFCB2 EQU 6CH ;DEFAULT FILE CONTROLE BLOCK 2 TPA EQU 100H ;TRANSIENT PROGRAM AREA ; CR EQU 13 ;ASCII 'CR' CODE LF EQU 10 ;ASCII 'LF' CODE ; ; ; BY THE TIME WE GET RUNNING THE CPM+ LOADER ALREADY HAS LOADED THE ; AND ACTIVATED THE RSP (RESIDENT SYSTEM PROSESS) OR IT MAY ALREADY ; HAVE BEEN IN MEMORY FROM A PREVIOUS LOAD). SO ALL WEE HAVE TO DO IS TO ; PARSE ANY ARGUMENTS FROM THE COMMAND LINE, AND PASS THEM TO THE RSX ; BY FUNCTION 60. ; LXI H,DFCB1+1 ;GET POINTER TO COMANDLINE ARG. MOV A,M ;GET OPT. '-' FOR UNX PEOPLE. CPI '-' ; JNZ NODASH ; INX H ; NODASH: CALL PARSE ;PARSE FIRST ARGUMENT CALL PARSE ;PARSE POSSIBLE SECOND ARGUMENT MOV A,M ;SHOUDENT BE A THIRD CPI ' ' ;I. E. 3. POSITION SHOUD BEE BLANK JNZ SYNERR ;IF BAD THEN JUMP SENDIT: LXI D,RSXPB ;SEND IT TO RSP MVI C,RSXF CALL BDOS ; CPI 0FFH ;IS RETURNED IF NO RSX IS ACTIVE ; LXI D,RSXNACT ; JZ WRRSX ; LXI D,RSXACT ;WRRSX: MVI C,PRINTF ; CALL BDOS JMP 0 ;ALL DONE, WARM BOOT ; ;PARSE AN ARGUMENT ; PARSE: MOV A,M ;FETCH ARGUMENT INX H ;ADV POINTER CPI ' ' ;ALLOW NULLS RZ CPI 'P' ;PAUSE FLAG JNZ NPARS ;JUMP IF NOT MVI A,1 ;PAUSE FLAG STA ARGS+1 ;WHERE IT GOES RET NPARS: CALL VALID ;VALIDATE STA ARGS RET VALID: CPI 'Q' ;QUIT RZ CPI 'A' ;OUT TO AUX RZ CPI 'C' ;OUT TO CON RZ CPI 'L' ;OUT TO LST: JNZ SYNERR ;WHAT THEN RET ; ;SYNTAX ERROR ; SYNERR: LXI D,SYNEMS MVI C,PRINTF CALL BDOS MVI A,'Q' STA ARGS JMP SENDIT ; SYNEMS: DB CR,LF,'Command Line Syntax Error',cr,lf,'$' ; ;RSX PARAMETER BLOCK ; RSXPB: DB 127 ;FUNCTION # (WE IGNORE ) DB 2 ;TWO PARAMETERS DW MYNAME ;PARAM1 = RSX NAME (PTR HERE) DW ARGS ;PARAM2 = CMDLINE ARGS; ; ;NAME OF RSX ; MYNAME: DB 'PEEKBDOS' ;UNIKE NAME OF BDOS; ARGS: DB 'A',0FFH ;OUTPUT-DEVICE,PAUSE-FALG. ; ; END RSXNACT:DB CR,LF,'NO RSX IS ACTIVE$' RSXACT: DB CR,LF,'RSX IS ACTIVE$' DB CR,LF,' Q (Quit )' DB CR,LF,' P (Pause)' DB CR,LF,' A (Output to "AUX" device)' DB CR,LF,' C (Output to "CON" device)' DB CR,LF,' L (Output to "LST" device)' DB CR,LF,'$' END «eof»