; Copyright (c) GelioSoft Ltd., Moscow 1997. ; Sergey L. Ovchinnikov. E-mail osl@geliosoft.msk.su ; Free for legal use. .TITLE EM FIS ON FPP EMULATOR .IDENT /V04.00/ .SBTTL MACROS AND DEFINITIONS .MCALL .DRDEF .DRDEF EM,377,0,0,0,10 AC0 = %0 AC1 = %1 ;====================================================================== . = 204 TESTEM: MOV PC, R0 ADD #EMNAME-., R0 MOV PC, -(SP) ADD #DSTBLK-., @SP EMT 342 ; .DSTATUS - Get Device Status BCS ER.RET MOV DSTBLK+4, R1 TST (PC)+ ER.RET: SEC OK.RET: RETURN EMNAME: .RAD50 /EM / DSTBLK: .BLKW 4 ALRRUN: .ASCIZ "?EM-I-Already running" ;====================================================================== .SBTTL SET OPTION PARAMETER TABLE .DRSET ON,NOP,O.ON .DRSET OFF,NOP,O.OFF .SBTTL SET OPTION PROCESSING ROUTINES O.ON: CALL TESTEM BCS ER.RET TST R1 BNE 10$ MOV @#54, R0 BIS #400, 370(R0) JSR R1, CHAIN .ASCIZ "$LOAD EM" .BYTE 200 .EVEN 10$: MOV PC, R0 ADD #ALRRUN-., R0 EMT 351 ; .PRINT - Print String to Terminal BR OK.RET O.OFF: CALL TESTEM BCS ER.RET TST R1 BEQ 10$ JSR R1, CHAIN .ASCIZ "$UNLOAD EM" .ASCIZ "$SET EM OFF" .BYTE 200 .EVEN 10$: MOV @#54, R0 BIC #400, 370(R0) MOV @#4, @#10 MOV @#6, @#12 BIS #1, @#12 CLC RETURN CHAIN: MOV #512, R0 CLR R2 10$: INC R2 MOVB (R1)+, (R0)+ BPL 10$ DEC R2 MOV R2, @#510 BIS #4040, @#44 CLR R0 EMT 350 ; .CHAIN ;====================================================================== .SBTTL DRIVER ENTRY .DRBEG EM MOV EMCQE, R4 BIS #1, @-(R4) .DRFIN EM ;====================================================================== TRP.10: MOV (SP)+, R0 MOV @#6, -(SP) BIS #1, @SP MOV @#4, -(SP) RTI EMINT: MOV R0, -(SP) MOV 2(SP), R0 MOV -(R0), R0 CMP R0, #75000 BLO TRP.10 CMP R0, #75040 BHIS TRP.10 MOV R0, -(SP) BIC #^C30, R0 ASR R0 ASR R0 ADD PC, R0 MOV CMDPAT-.(R0), FLTCMD MOV (SP)+, R0 BIC #^C7, R0 BIC #7, CMD1 BIC #7, CMD2 BIC #7, CMD3 BIS R0, CMD1 BIS R0, CMD2 BIS R0, CMD3 MOV (SP)+, R0 MOV (SP)+, RETADR BIC #17, @SP MOV (SP)+, PSW SETF CMD1: LDF (R0)+, AC0 CMD2: LDF (R0)+, AC1 FLTCMD: HALT CMD3: STF AC1, -(R0) STFPS -(SP) BIC #^C14, @SP BIS (PC)+, @SP PSW: .WORD 0 MOV (PC)+, -(SP) RETADR: .WORD 0 RTI CMDPAT: ADDF AC0, AC1 SUBF AC0, AC1 MULF AC0, AC1 DIVF AC0, AC1 .DREND EM .END