83Plus:BCALLs:404B

From WikiTI
Revision as of 22:55, 15 April 2005 by Woozle (Talk | contribs)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

Synopsis

Official Name: AppInit

BCALL Address: 404B

Sets the context vector table so an application can receive various notifications from the OS.

Inputs

  • HL=address of custom vector table to copy

Outputs

  • CxMain and the 6 vectors that follow
  • CxPage is set to the current page of the app
  • (iy+appFlags) is set to the 15th byte of the table

Registers Destroyed

  • HL, A, DE

Comments

Typically this routine is called at the start of an application so that the application can receive events and react appropriately. If this routine is used, it is also important to call ReloadAppEntryVecs before exiting the app. Failing to do so will likely result in a crash. This copies 14 bytes from the address indicated in HL to CxMain, an additional byte to (iy+appFlags), then stores the page number obtained from Port 6 into CxPage. When starting an app normally, the default is usually a dummy return. The OS sends key presses to this routine for proper handling.


Example

ld hl,vectorTable
B_CALL appInit
;....
vectorTable:
;NOTE: you must define the following routines yourself.  If you have no need for such routines, then simply point these vectors to a dummy return.
dw cxMainHandler   ;usually handles keys
dw cxPPutAwayHandler ;Partial put away, this should be used to clean when exiting edit buffers
dw cxPutAwayHandler ;Put away, this should be used to clean up just before exiting an app.  Usually in response to OFF or 2nd+quit.
dw cxRedispHandler  ;?
dw cxErrorEPHandler ;This can be used to process errors before error handlers set up by AppOnErr
dw cxSizeWindHandler ;?
dw 0    ;value to be copied to (iy+appFlags)