; ; 7 DEC 82 ; ;THIS TESTS A DUAL PROCESSOR BY SWAPPING REPEATEDLY FROM 85 ;TO 88 AND BACK AGAIN. THIS TEST IS IN 85 CODE; ;THE 86 PORTION OF THE TEST IS ENTERED USING THE ASSEMBLER ;DIRECTIVE "DB" OR "DEFINE BIT". ;THIS VERSION OF THE TEST INCLUDES AN OUTPUT OF FFH TO MEM ADRS ;F000 TO INFORM THE MAIN TEST PROGRAM THAT AN ERROR HAS OCCURRED. ;THEREFORE, THIS VERSION ("SWAP85") SHOULD NOT BE USED FOR LAB ;TESTING THAT DOES NOT USE A MAIN SUBMIT PROGRAM; INSTEAD, THE ;"SWAP5" TEST SHOULD BE USED IN THE LAB. ; ; BDOS EQU 0005H ;SYSTEM UTILITY PSTRING EQU 09 REBOOT EQU 0000H ;SYSTEM REBOOT CR EQU 0DH ;CARRIAGE RETURN LF EQU 0AH ;LINE FEED CONOUT EQU 2 SWPORT EQU 00FDH ;SWAP PORT ; ORG 100H LXI D,STRTMSG ;LOAD START MESSAGE CALL PRINT ;PRINT IT SWAPSLEFT: DB 0 ;RESERVE MEM FOR SWAPCOUNTER VAR ; ;FOLLOWING LOADS 88 JUMP TO 400H AT FFF0H ; MVI A,0EAH ;88 JUMP INSTRUCTION STA 0FFF0H ;STORE JUMP FOR 8088 MVI A,00H ;BEGINNING OF 8088 JMP ADRS STA 0FFF1H MVI A,04H STA 0FFF2H MVI A,00H STA 0FFF3H MVI A,00H STA 0FFF4H ;END OF 88 JMP ADRS ; MVI A,0FFH ;LOADS ACC TO STA SWAPSLEFT ;INITIALIZE SWAPSLEFT COUNTER ; STA 600H ;INIT 88CTR ; ;FOLLOWING PRINTS 85-ON-LINE MSG AND DECREMENTS SWAP COUNTER ; FIVE: LDA SWAPSLEFT ;LOADS SWAPSLEFT TO DCR A ;DECREMENT IT JZ OKMSG ;OK IF 255 OK SWAPS STA SWAPSLEFT ;RESTORES SWAPS COUNTER IN SWPORT ;SWAP PROCESSORS LDA 600H ;LOAD ACC FROM 88 CTR MOV B,A ;MOVE IT TO B LDA SWAPSLEFT ;LOAD ACC WITH SWAPSLEFT CTR CMP B ;COMPARE SWAPSLEFT WITH 88 CTR JNZ ERRMSG ;ERROR IF NOT EQUAL JMP FIVE ;JUMP TO 8085 ROUTINE ; OKMSG: CALL CRLF CALL CRLF LXI D,OKTXT ;OKMSG TEXT CALL PRINT ;PRINT IT JMP REBOOT ;RETURN TO CPM ; ERRMSG: MVI A,0FFH ;FOR INPUT TO MAIN TEST PROGRAM STA 0F000H ;MAIN TEST FAILURE CHECK BYTE CALL CRLF CALL CRLF LXI D,ERRTXT ;LOAD ERROR MESSAGE CALL PRINT ;PRINT IT JMP REBOOT ;RETURN TO CPM ; ; 8088 CODE BEGINS HERE ; ORG 400H ;BEGINNING OF 8088 CODE: DB 0BBH ;LOAD B REG WITH DB 000H ;00 DB 000H ;00. DB 08EH ;LOAD DS REG FROM DB 0DBH ;BX REG. DB 0FEH ;DEC MEMORY FROM DB 00EH ;BYTE ADRS DB 000H ;0600H. DB 006H ; DB 0E4h ;IN FROM DB 0FDh ;PORT FD. DB 0EAh ;JUMP BACK TO DB 005h ;400 HEX DB 004h DB 000h DB 000h ; ;******************************************* ;* ;* STRING DATA FOR CONSOLE MSGS ;* ;******************************************* ; STRTMSG: DB 'HERE BEGINS THE 85/88 SWAP TEST$' OKTXT: DB 'THIS 85/88 SWAPS OK$' ERRTXT: DB 'THIS 85/88 FAILS THE SWAP TEST$' ; ;******************************************************************** ;* ;* CONSOLE I/O SUBROUTINES ;* ;******************************************************************** ; PRINT: PUSH D CALL CRLF POP D MVI C,PSTRING CALL BDOS RET ; CRLF: MVI A,CR CALL PUTCHR MVI A,LF CALL PUTCHR RET ; PUTCHR: MVI C,CONOUT MOV E,A CALL BDOS RET ; END