Files
Digital-Research-Source-Code/CPM OPERATING SYSTEMS/CPM 68K/1.0X SOURCES/v102a/plmutils/ut68k.sa
Sepp J Morris 31738079c4 Upload
Digital Research
2020-11-06 18:50:37 +01:00

134 lines
5.8 KiB
Plaintext

*******************************************************************************
*
* STANDARD INTERFACE ROUTINE FOR CP/M68K UTILITY PROGRAM
* (OVER 64K MODEL)
*
* (1) SET THE ENVIRONMENT FOR S-PL/H OBJECT
* (2) DECLARE THE PUBLIC PROCEDURE FOR BDOS CALL
* (3) SET THE BASE PAGE VARIABLES
* (4) DECLARE PATCH AREA
*
*******************************************************************************
SECTION 8
*******************************************************************************
********* EXTERNAL DEFINITION
*******************************************************************************
XDEF .SMAIN
XDEF ENTRYC
XDEF MON1,MON2,MON3,MON4,XDOS
XDEF MON5,MON6,MON7
XDEF MAXB,MEMSIZE
XDEF FCB,FCB16,BUFF,TBUFF
XDEF PATCH1,PATCH2
XDEF MEMORY
*******************************************************************************
********* EXTERNAL REFERENCE DIFINITION
*******************************************************************************
XREF .SPSCT
XREF .SDSCT
*******************************************************************************
********* CONSTANT EQUATION DEFINITION
*******************************************************************************
OMAXB EQU 4 /* OFFSET OF MAXB FROM BASE
OFCB16 EQU $38 /* OFFSET OF FCB16 FROM BASE
OFCB EQU $5C /* OFFSET OF FCB FROM BASE
OBUFF EQU $80 /* OFFSET OF BUFF FROM BASE
FCBSZ EQU 72 /* (FCB16 + FCB) AREA SIZE
BUFFSZ EQU 128 /* BUFF AREA SIZE
*
*******************************************************************************
*
ENTRYC EQU * /* ENTRY POINT FROM CCP
.SMAIN EQU * /* REFER FROM .SINIT ROUTINE
*******************************************************************************
********* SET THE BASE PAGE VARIABLES
*******************************************************************************
MOVE.L (A7)+,RTNCCP /* STORE RETURN ADDR OF CCP
MOVE.L (A7)+,SBASEP /* STORE POINTER OF BASE PAGE
*
MOVEA.L SBASEP,A0 /* GET THE BASE ADDR OF BASE PAGE
MOVE.W OMAXB(A0),MAXB /* SET MAXB
*
LEA OFCB16(A0),A0 /* GET THE SOURCE ADDR OF FCB16
LEA FCB16,A1 /* GET THE DESTINATION ADDR OF FCB16
MOVE.W #(FCBSZ-1),D0 /* SET LOOP NUMBER
LOP1 MOVE.B (A0)+,(A1)+ /* SET FCB16 AND FCB
DBF D0,LOP1
*
MOVEA.L SBASEP,A0
LEA OBUFF(A0),A0 /* GET THE SOURCE ADDR OF BUFF
LEA BUFF,A1 /* GET THE DESTINATION ADDR OF BUFF
MOVE.W #(BUFFSZ-1),D0 /* SET LOOP NUMBER
LOP2 MOVE.B (A0)+,(A1)+ /* SET BUFF AND TBUFF
DBF D0,LOP2
*
********* END BASE PAGE SET
*******************************************************************************
********* INIT FOR S-PL/H
*******************************************************************************
LEA RMA,A5 /* SET RMA BASE
LEA RMA,A6
LEA RMA,A7 /* SET STACK POINTER
SUBA.L #4,A6 /* SET FRAME POINTER
LEA .SPSCT,A4 /* S-PL/H OBJECT AREA
LEA .SDSCT,A2 /* S-PL/H DATA AREA
JSR (A4) /* GO TO S-PL/H
*******************************************************************************
********* PUBLIC SUBROUTINE FOR BDOS CALL
*******************************************************************************
MON1 EQU *
MON2 EQU *
MON3 EQU *
MON4 EQU *
XDOS EQU *
CLR.L D0
CLR.L D1
MOVE.W 4(A7),D1
MOVE.B 6(A7),D0
TRAP #2 /* BDOS CALL
MOVEA.L (A7)+,A0
LEA 4(A7),A7
JMP (A0) /* RETURN TO MAINROUTINE
MON5 EQU *
MON6 EQU *
MON7 EQU *
CLR.L D0
MOVE.L 4(A7),D1
MOVE.B 8(A7),D0
TRAP #2 /* BDOS CALL
MOVEA.L (A7)+,A0
LEA 6(A7),A7
JMP (A0)
*******************************************************************************
********* PATCH AREA
*******************************************************************************
PATCH1 DC.B 'COPYRIGHT 1983'
DC.B 'DIGITAL RESEARCH'
PATCH2 DC.B '010282'
DC.B 'XXXX-'
DC.B '0000-'
DC.B '654321'
*
*******************************************************************************
*******************************************************************************
* DEFINITION OF DATA AREA
*******************************************************************************
SECTION 7
STACK DS.L 300 /* STACK AREA OF S-PL/H
RMA DS.B 144 /* S-PL/H RUN TIME MAINTENANCE AREA
*******************************************************************************
MAXB DS.L 1 /* TOP ADDR OF TPA
MEMSIZE EQU MAXB /* SAME AS MAXB
FCB16 DS.B 36 /* 2-nd PARSED FCB OF COMMAND LINE
FCB DS.B 36 /* 1-st PARSED FCB OF COMMAND LINE
BUFF DS.B 128 /* COMMAND LINE TAIL AND DMA BUFF
TBUFF EQU BUFF /* SAME AS BUFF
RTNCCP DS.L 1 /* RETURN ADDR TO CCP
SBASEP DS.L 1 /* POINTER TO BASE PASE
MEMORY DS.L 1 /* MEMORY ARRAY
*
*******************************************************************************
*
END .SMAIN