DataMuseum.dk

Presents historical artifacts from the history of:

Christian Rovsing CR7, CR8 & CR16 CP/M

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about Christian Rovsing CR7, CR8 & CR16 CP/M

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - download

⟦acb2bba6a⟧ TextFile

    Length: 3584 (0xe00)
    Types: TextFile
    Names: »PEEK.ASM«

Derivation

└─⟦942159b25⟧ Bits:30005260 CP/M v. 3.0 til CR7
    └─ ⟦this⟧ »PEEK.ASM« 

TextFile

        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»