******************************************************************** * * * PROGRAM BEGUN AUGUST 22, 1983. PURPOSE TO TEST 256 KBYTE RAM. * * USES MODIFIED VERSION OF RT3@MULT. * * BY RONALD E. JACOBS. * * * ******************************************************************** ORG 2000h ; ; ****************************************************** ; * * ; * THIS PROGRAM CREATES AN ADDITION TO RT3@MULT * ; * WHICH IS PATCHED INTO RT3@MULT. ALSO CHANGE * ; * THE JUMP AT 100h TO POINT TO 2000h. ALSO ADD A * ; * JUMP AT 1000h TO UTRAP SO THIS PROGRAM WILL WORK * ; * WITH UNIX MONITOR ROMS. * ; * * ; ****************************************************** ; NMAP EQU 0806h ;supervisor routine to write new vectors TASK EQU 0402h ;task register ; MVI C,09h ;PRINT STRING (BDOS FUNCTION) LXI D,MSG CALL 05h HLT HLT ;ENTER TASK 0 ; UTRAP: MVI C,03h ;ACCESS ATTRIBUTE MVI A,04h MVI B,33h ;SEGMENT TO BE LOADED WITH RT3 CODE CALL NMAP ;MAP EX ADDR 0 RT3 CODE TO TASK 1 ; LXI B,4000h ;SEGMENT WITH EXTENDED ADDR 3 THAT WILL CONTAIN RT3 COD LXI D,3000h ;SEGMENT WITH EXTENDED ADDR 0 CONTAINING RT3 CODE MOVCODE LDAX D ;GET A BYTE STAX B ;PUT IT WHERE IT BELONGS INX B ;SET UP TO MOVE NEXT BYTE INX D MVI A,040h CMP D ;FINAL LOCATION TO MOVE TO IS 3FFFh JNZ MOVCODE ; LXI H,0050h ;50h =RAM ON BOARD CPU MVI A,3Eh ;3E=MVI A,d OPCODE MOV M,A INX H ;51h RAM ON CPU NEXT MVI A,03h ;OPERAND FOR MVI A,03h (03=desired task) MOV M,A INX H ;52h NEXT MVI A,32h ;32h= STA addr OPCODE MOV M,A INX H ;53h NEXT MVI A,02h MOV M,A INX H ;54h NEXT MVI A,04h ;0402h= TASK REGISTER MOV M,A INX H ;55h NEXT MVI A,00 ;00=NOP CODE MOV M,A ;1 NOP INX H ;56h NEXT MOV M,A ;2 NOPS INX H MOV M,A ;3 NOPS INX H MOV M,A ;4 NOPS INX H MOV M,A ;5 NOPS INX H MOV M,A ;6 NOPS INX H MVI A,0C3h ;C3= JUMP OPCODE MOV M,A INX H MVI A,00 MOV M,A INX H MVI A,30h MOV M,A ;(JUMP TO 3000h IN TASK 1) ; JMP 0050h ;EXECUTE THE LOCAL RAM CODE THAT WAS JUST WRITTEN ; MSG: DB 'RAMTEST FOR EXTENDED ADDRESS 03$' ; END