;**** some possible debugging options
;set debug debug.log
;set debug stdout

;**** debugging of FDC
;**** read/write operations, attach&detach, FDC service, IMD handling, DMA/verbose, FDC cmds
;set fdc debug=read
;set fdc debug=write
;set fdc debug=verbose
;set fdc debug=svc
;set fdc debug=imd
;set fdc debug=dma
;set fdc debug=dmavb
;set fdc debug=cmd

;**** debugging of CPU: exceptions, tracing, memory read/write
;**** opcode fetch, stack push/pull, concurrency 
;set cpu exc
;set cpu debug=int
;set cpu debug=trace
;set cpu debug=write
;set cpu debug=read
;set cpu debug=fetch
;set cpu debug=stack
;set cpu debug=conc

;**** debugging of console: read/write to registers
;set con debug=read
;set con debug=write

;**** debugging of timer: read/write, service
;set tim debug=read
;set tim debug=write
;set tim debug=svc

;**** you should attach a telnet terminal emulator to PDQ-3 console
;**** to avoid mess with SIMH's control panel
set console telnet=8000

;**** you might remote control SIMH's control panel
;set remote telnet=7000,telnet=buffered

;**** you need a boot disk
att fdc0 master.imd

;**** make this write protected currently while emulator is still being debugged
set fdc0 wrtlck

;**** disable the second FDC
set fdc1 disable

;************************************************************************
;**** The following is pure f***ing magic - you must have the source code
;**** and a commented object dump of boot loader, SYSTEM.PASCAL, SYSTEM.DRIVERS etc.
; otherwise you won't understand where I had checkpoints for debugging.

; HDT boot
;break f418:368
;break f418:36a
;break f418:218

; HDT:bootfd
;break f418:e0

; HDT CHK instruction: will fail if CPU serial is > 0x7fff
;break 2018:067d
;break 2018:070f

; entering PASCALSY
;break eb1e:10

; problem main loop in syscode1
;break dc26:1d0a
;break d488:b1b
;break d488:b55

; bug in SPR(4), does not save SP in TIB?
;break d488:bb8
;break d488:bc7

; problem with wait?
;break d488:0917

; interrupt debugging
;break d078:4f
;break d488:919
;break d488:ebe
;break dc26:ec3
;break d1bd:79
;break b80d:715
;break dc26:1d35
;break d488:806
;break d488:915
;break dc26:1d36

; SHELL handling
;break badf:98
;break badf:51
;break bbd2:1ba
;break bbd2:1be
;break bbd2:32a

; Ser_RawEmit
;break c964:5f2
;break d488:d80
;break c964:6be

; ticker interrrupts
;break d078:4f
;break d1bd:6e

; Start/Stop Process
;break d488:7f0
;break d488:92e
;break d488:934
;break d488:958
;break d488:0dd9
;break c964:756
;break c964:a6
;break c964:cf4

; waiting for DSR sem
;break c964:624

; Ser_Read
;break c964:466
;break c964:4f9
;break c964:4fa
;break c964:327
;break c964:59e
;break c964:323

;break d078:4c
;break d078:4f
;break d1bd:6a
;break d1bd:6d

;break d488:ed0

;****
;**** end of PFM section
;************************************************************************

;**** load the boot PROM code for HD support
load hdt/CPU_C5.BIN
;
;**** set the INIT bit of SSR
dep _ssr 80
dep _ses 80

;**** load some symbolic names for debuging (not needed in production)
do names.sim

;**** run
boot cpu

;**** reset debug mode to normal when boot fails.
set debug stdout
