• Aucun résultat trouvé

Sample Foreground Monitor Listing

Dans le document MC68302 Emulator Terminal Interface (Page 136-147)

This sample foreground monitor program is written to be used with the HP 64870 or B1423A 68000 Cross Assembler. This is the same monitor program used with the HP 64742 68000 Emulator.

The sample foreground monitor program is just a place to start; you will need to modify it to meet your special needs.

SECT 14

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;

; EMULATION FOREGROUND MONITOR FOR 64746 EMULATOR.

; THIS MONITOR VERSION IS USED WITH THE MICROTEC LANGUAGE

; SYSTEM.

;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;

; @(mktid) Product_Numb Product_Description... A.00.00 DDMMMYY HH:MM:SS status....

;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

; THE EMULATION FOREGROUND MONITOR IS THE VEHICLE BY WHICH THE

; FOLLOWING EMULATOR FUNCTIONS ARE EFFECTED IF THE 64746

; EMULATOR IS CONFIGURED TO OPERATE WITH A FOREGROUND MONITOR:

; READ/WRITE TARGET SYSTEM MEMORY

; DISPLAY/MODIFY 68302 REGISTERS

; EXECUTE USER PROGRAM

; BREAK AWAY FROM USER PROGRAM

;

; THE 64746 FOREGROUND MONITOR MUST START ON A 2K BYTE BOUNDARY

; OTHER THAN 0H. THE DESIRED 2K BYTE BOUNDARY SHOULD BE SPECIFIED

; IN THE "ORG" STATEMENT AT THE START OF THE MONITOR. THE SAME

; 24 BIT ADDRESS MUST BE SPECIFIED IN THE EMULATOR CONFIGURATION

; QUESTION "cf mon=fg..XXXXXX". IN THIS MANNER, COMMUNICATION

; BETWEEN THE FOREGROUND MONITOR AND THE EMULATOR OPERATING SOFTWARE

; CAN BE ESTABLISHED.

;

; THE FIRST FEW SECTIONS OF THE FOREGROUND MONITOR CANNOT BE

; MODIFIED AND THEIR LOCATION WITH RESPECT TO THE START OF THE

; FOREGROUND MONITOR CANNOT BE ALTERED. THESE INCLUDE THE FOLLOWING:

; MONITOR VECTOR TABLE

; MONITOR VARIABLES

; KEY MONITOR ENTRY ROUTINES

;

; THE MONITOR VECTOR TABLE IS USED EXCLUSIVELY BY THE EMULATOR

; TO TRANSITION INTO THE FOREGROUND MONITOR FROM RESET, FROM

; SOFTWARE BREAKPOINTS, OR FROM EMULATION GENERATED BREAKS LIKE

; THE BREAK COMMAND OR A WRITE TO ROM. THE MONITOR VECTOR IS NOT

; A REPLACEMENT FOR THE TARGET SYSTEM’S EXCEPTION VECTOR TABLE.

;

; THE MONITOR VARIABLES SECTION CONTAINS FOUR PARTS.

; THE FIRST PART IS A GROUP OF VARIABLES THAT ACT AS THE

; COMMUNICATIONS PATH BETWEEN THE FOREGROUND MONITOR AND THE

; EMULATOR CONTROLLER. THE SECOND SECTION HOLDS A COPY OF THE

; 68302 REGISTERS WHICH ARE STORED WHEN ENTERING THE FOREGROUND MONITOR.

; THE THIRD SECTION IS THE XFER_BUF WHICH IS A BUFFER TO HOLD DATA

; WHICH IS TRANSFERRED BETWEEN THE EMULATOR CONTROLLER AND TARGET

; SYSTEM MEMORY. THE BK_STACK IS A STACK USED BY THE MONITOR

; WHEN IT IS IN A BACKGROUND STATE FOR A FEW BUS CYCLES UPON

; TRANSITION TO THE FOREGROUND MONITOR. THE STAT(1:4) VARIABLES

; ARE A HOLDING AREA FOR THE EXTRA STACK INFORMATION THAT OCCURS

; WHEN A BUS ERROR OR ADDRESS ERROR HANDLER IS DIRECTED INTO THE MONITOR.

;

; THE KEY MONITOR ENTRY ROUTINES ARE BK_RESET_ENTRY, INT_ENTRY,

; SW_ENTRY, INMON_INT_ENTRY, AND INMON_TRACE_ENTRY. THESE ROUTINES INVOLVE

; A BRIEF STOP IN THE BACKGROUND MONITOR AND THEREFORE CANNOT BE

; MODIFIED OR MOVED WITH RESPECT TO THE START OF THE MONITOR.

;

;

; TO PERFORM SINGLE STEPPING WITH THE FOREGROUND MONITOR, THE

; "TRACE" VECTOR IN THE EXCEPTION VECTOR TABLE MUST POINT TO

; "TRACE_ENTRY" IN THE FOREGROUND MONITOR.

;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

; ORG XXXXX ; START MONITOR ON 2K BOUNDARY OTHER THAN ZERO MONITOR_START

PA5 DC.L 0

; TRAP VECTORS ( SOFTWARE BREAKPOINT VECTOR ) ;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

; END OF MONITOR VECTOR TABLE ;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

; MARK SPACE

; END OF MONITOR VARIABLES ;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

; KEY MONITOR ENTRY ROUTINES ;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

NOP

; END OF KEY MONITOR ENTRY ROUTINES ;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;;;;;;; MONITOR OPERATING ROUTINES ;;;;;;;;;;;;;;;;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

; SOFTWARE IN MONITOR AND OPERATING VERIFICATION

; THIS ROUTINE IS USED TO TELL THE EMULATOR CONTROLLER

; IF THE EMULATOR IS OPERATING IN THE MONITOR AND IS

; READY TO ACCEPT COMMANDS.

SW_IN_MON

MOVE.W #3,CMD_CONTROL BRA MON_LOOP

; MONITOR EXIT ROUTINE

; THE MONITOR EXIT ROUTINE PERFORMS THE TRANSITION FROM FOREGROUND

; MONITOR OPERATION TO EXECUTION OF THE USERS PROGRAM START_EXIT

; END OF THE MONITOR EXIT ROUTINE

; WRITE TARGET MEMORY ACCESS ROUTINE

; THIS ROUTINE WRITES DATA TO TARGET SYSTEM MEMORY.

; THE DATA WAS LOADED INTO THE ’XFER_BUF’ BY THE EMULATION CONTROLLER.

; THE STARTING ADDRESS OF THE WRITE PROCESS WAS LOADED INTO

; ’TARG_START’ BY THE EMULATION CONTROLLER. THE LOWER BYTE OF THE

; ’TARG_BYTES’ VARIABLE CONTAINS THE NUMBER OF BYTES OF DATA WHICH

; WILL BE WRITTEN TO TARGET MEMORY. IF BIT 11 OF THE ’TARG_BYTE’

; FIELD IS SET THEN THE ACCESS MODE TO TARGET MEMORY IS WORDS. IF

; BIT 11 IS NOT SET THEN THE ACCESS MODE IS BYTES. THE ’TARG_BYTE’

; VARIABLE WAS SET BY THE EMULATION CONTROLLER.

;

; END OF WRITE TARGET MEMORY ACCESS ROUTINE

; READ TARGET MEMORY ACCESS ROUTINE

; THIS ROUTINE READS DATA FROM TARGET SYSTEM MEMORY.

; THE DATA IS STORED IN THE ’XFER_BUF’.

; THE STARTING ADDRESS OF THE READ PROCESS WAS LOADED INTO

; ’TARG_START’ BY THE EMULATION CONTROLLER. THE LOWER BYTE OF THE

; ’TARG_BYTES’ VARIABLE CONTAINS THE NUMBER OF BYTES OF DATA WHICH

; WILL BE READ FROM TARGET MEMORY. IF BIT 11 OF THE ’TARG_BYTE’

; FIELD IS SET THEN THE ACCESS MODE TO TARGET MEMORY IS WORDS. IF

; BIT 11 IS NOT SET THEN THE ACCESS MODE IS BYTES. THE ’TARG_BYTE’

; VARIABLE WAS SET BY THE EMULATION CONTROLLER.

;

TARG_MEM_RD

MOVE.L TARG_START,A0

; END OF READ TARGET MEMORY ACCESS ROUTINE

;;;;;;;;;;;;;;;;;;;

MOVE.L A0,PUSP

; THE FOREGROUND MONITOR WAITS IN THIS LOOP UNTIL THE EMULATOR

; CONTROLLER REQUESTS AN ACTION BY SETTING CMD_CONTROL TO 1

;

; WHEN A COMMAND HAS BEEN REQUESTED, THIS ROUTINE DETERMINES THE

; TYPE OF COMMAND REQUESTED AND INITIATES THE APPROPRIATE ACTION COMMAND_REQUEST

; FG_RESET_ENTRY IS THE ENTRY ROUTINE THAT A RESET: INITITAL PC

; IN THE USERS EXCEPTION VECTOR TABLE SHOULD POINT TO IF THE

; USER WANTS THE EMULATOR TO VECTOR TO THE FOREGROUND MONITOR

; FROM TARGET SYSTEM RESETS.

; THIS ROUTINE CLEARS OUT THE REGISTERS D7-D0 AND A6-A0.

; THE STATUS REGISTER IS SET TO 2700H.

; THE PC IS SET TO JUMP_ENTRY

; THE A7 REGISTER, THE SUPERVISOR STACK POINTER AND THE USER

; STACK POINTER ARE SET TO THE VALUE OF THE SSP AS THE EMULATOR

; IS RELEASED FROM TARGET RESET.

FG_RESET_ENTRY

MOVE.W #01H,LAST_ENTRY ;SET ENTRY CAUSE MOVE.L #JUMP_ENTRY,CURRENT_PC ;SET COPY OF PC MOVE.W #2700H,PSTAT ;SET STATUS CLR.L PD0 ;CLEAR REGISTERS

CLR.L PD1

; SPECIAL ENTRY IS EXECUTED WHEN THE MONITOR IS ENTERED FROM A BERR

; OR AN ADDRESS ERROR. INFORMATION STACKED AS A RESULT OF THE

; BERR OR ADDRESS ERROR IS SAVED IN STAT1, STAT2, STAT3 AND STAT4.

SPECIAL_ENTRY

MOVE (SP)+,STAT1 ;PULL & SAVE EXCEPTION STATUS.

MOVE (SP)+,STAT2 ;PULL & SAVE ACCESS ADDRESS HIGH.

MOVE (SP)+,STAT3 ;PULL & SAVE ACCESS ADDRESS LOW.

MOVE (SP)+,STAT4 ;PULL & SAVE INSTRUCTION REGISTER.

BRA MON_ENT MONITOR_END

Notes

A

Dans le document MC68302 Emulator Terminal Interface (Page 136-147)

Documents relatifs