public _b0call
_b0call:
+ push af
+ in0 a,(bbr)
+ jr nz,b0c_doit
+ pop af
+ ex (sp),hl ;16
+ push de
+ ld e,(hl)
+ inc hl
+ ld d,(hl)
+ inc hl
+ ld (b0c_fast_go),de
+ pop de
+ ex (sp),hl ;16
+b0c_fast_go equ $+1
+ jp 0
+
+b0c_doit:
ld (b0_save_hl),hl
ld (b0_save_de),de
- push af
pop hl
ld (b0_save_af),hl
ld sp,bs$stack ;
push hl ;save user stack pointer
- in0 h,(cbar) ;
+
+ in0 h,(bbr) ;
push hl ;
ld hl,b0c_ret
push hl
- ld a,SYS$CBAR ;
- out0 (cbar),a ;
+ xor a
+ out0 (bbr),a ;
ex de,hl ;ptr
ld e,(hl) ;get 'function address'
inc hl ;
ld (b0_save_hl),hl
pop hl ;
- out0 (cbar),h ;
+ out0 (bbr),h ;
pop hl ;
ld sp,hl ;
ld hl,(b0_save_hl)