Yup, it's a bug in the way Blitz calls the resource.
I just cobbled together 2 funcs that call it directly and it doesn't crash.
Function.l AllocMiscResource{unit.l,name.l}
SHARED MiscBase.l
GetReg d0,unit
GetReg a1,name
GetReg a6,MiscBase
JSR -6(a6)
AsmExit
End Function
Statement FreeMiscResource{unit.l}
SHARED MiscBase.l
GetReg d0,unit
GetReg a6,MiscBase
JSR -12(a6)
End Statement
;-- No more stupid Poking/peeking...
NEWTYPE .byte
b.b
End NEWTYPE
MiscBase.l=0
*PPort_Dir.byte=$bfe301
*PPort_Bits.byte=$bfe101
MiscBase.l=OpenResource_("misc.resource")
If MiscBase
If AllocMiscResource{#MR_PARALLELPORT,"MyAppName"}=0
*PPort_Dir\b= %11111111 ; set all bits to output
*PPort_Bits\b=%01010101
FreeMiscResource {#MR_PARALLELPORT}
Else
NPrint "Crap!"
EndIf
EndIf
End