DataMuseum.dk

Presents historical artifacts from the history of:

CP/M

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

See our Wiki for more about CP/M

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - download

⟦e3d43b466⟧ TextFile

    Length: 4096 (0x1000)
    Types: TextFile
    Names: »PTPA.ASM«

Derivation

└─⟦942159b25⟧ Bits:30005260 CP/M v. 3.0 til CR7
    └─ ⟦this⟧ »PTPA.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
CONOTF  EQU     2               ;CONSOLE OUT FUNCTION
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     D,SIGNON
        MVI     C,PRINTF
        CALL    BDOS
        LXI     H,DFCB1+1       ;GET POINTER TO COMANDLINE ARG.
        MOV     A,M             ;GET OPT. '-' FOR UNX PEOPLE.
        CPI     '-'             ;
        JNZ     NODASH          ;
        INX     H               ;
NODASH: PUSH    H
        MOV     E,M
        MVI     C,CONOTF
        CALL    BDOS
        POP     H
        CALL    PARSE           ;PARSE FIRST ARGUMENT
        PUSH    H
        MOV     E,M
        MVI     C,CONOTF
        CALL    BDOS
        POP     H
        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
        
RSXNACT:DB      CR,LF,'NO RSX IS ACTIVE$'
RSXACT: DB      CR,LF,'RSX IS ACTIVE$'
SIGNON: DB      CR,LF,'WELCOME TO PEEK',CR,LF
        DB            'PARAMETERS :','$'
;
SYNEMS: DB      CR,LF,'Command line syntaks error, commands: '
        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,'$'
;
;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      'L',0FFH        ;OUTPUT-DEVICE,PAUSE-FALG.
END

«eof»