; --------------------------------------------------------------------------------
; @Title: Patch program to use pROBE+ with TRACE32 terminal window
; @Description: 
;   
;   This patch program uses the address 0x80 for output and
;   0x81 for input.
;   Use the command "probe" on the command line to activate pROBE
;   
; @Keywords: psos, v25x
; @Author: DIE
; @Copyright: (C) 1989-2014 Lauterbach GmbH, licensed for use with TRACE32(R) only
; --------------------------------------------------------------------------------
; $Id: probe.cmm 6982 2014-04-24 11:10:17Z kjmal $

;   Created by R. Dienstbeck, Lauterbach GmbH at 15.05.01

 Data.Assemble probe_poll_out nop
 Data.Assemble , li    r3,0x80
 Data.Assemble , lbz   r3,0(r3)
 Data.Assemble , cmpwi r3,0
 Data.Assemble , bne   probe_poll_out
 Data.Assemble , cmpwi r5,0
 Data.Assemble , bne   $+8
 Data.Assemble , blr
 Data.Assemble , li    r3,0x80
 Data.Assemble , lbz   r6,0(r4)
 Data.Assemble , stb   r6,0(r3)
 Data.Assemble , addi  r4,r4,1
 Data.Assemble , subi  r5,r5,1
 Data.Assemble , b     probe_poll_out

 Data.Assemble probe_io_status nop
 Data.Assemble , li    r3,0x80
 Data.Assemble , lbz   r3,1(r3)
 Data.Assemble , cmpwi r3,0
 Data.Assemble , beq   $+0x0c
 Data.Assemble , li    r3,0
 Data.Assemble , blr
 Data.Assemble , li    r3,-1
 Data.Assemble , blr

 Data.Assemble ProbeConin nop
 Data.Assemble , li    r4,0x80
 Data.Assemble , lbz   r3,1(r4)
 Data.Assemble , li    r5,0
 Data.Assemble , stb   r5,1(r4)
 Data.Assemble , blr
 
 Data.Set 80 0 0
 TERM.view 80 81
 
 ON cmd probe GOSUB
 (
    Break.Set probe_io_status
    WAIT !run()
    Register.Set r3 2
    Register.Set PC probe_io_status+0x18
    Break.Delete probe_io_status
    Go.direct
    RETURN
  )
 
; do not end, so that "probe" remains active
 STOP

