mirror of
https://github.com/SEPPDROID/Digital-Research-Source-Code.git
synced 2025-10-23 08:24:18 +00:00
134 lines
5.8 KiB
Plaintext
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
|
|
|