Jump to content
Toggle menu
Toggle preferences menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.

BIOS Graphics Functions

From CPCWiki - THE Amstrad CPC encyclopedia!

Graphics Init

 BBBA GRA_INITIALIZE

Graphics Normal Drawing Functions

 BBC0 GRA_MOVE_ABSOLUTE ;in: de=x, hl=y  ;\set current coordinate
 BBC3 GRA_MOVE_RELATIVE ;in: de=x, hl=y  ;/
 BBEA GRA_PLOT_ABSOLUTE ;in: de=x, hl=y  ;\draw pixel at specified coordinate
 BBED GRA_PLOT_RELATIVE ;in: de=x, hl=y  ;/
 BBF6 GRA_LINE_ABSOLUTE ;in: de=x, hl=y  ;\draw line from current coordinate
 BBF9 GRA_LINE_RELATIVE ;in: de=x, hl=y  ;/to specified target coordinate
 BBF0 GRA_TEST_ABSOLUTE ;in: de=x, hl=y, out: A=color (0..15) of pixel
 BBF3 GRA_TEST_RELATIVE ;in: de=x, hl=y, out: A=color (0..15) of pixel
 BBC6 GRA_ASK_CURSOR    ;out: de=x, hl=y ;-get current coordinate
 BBFC GRA_WR_CHAR       ;in: A=char      ;-draw char at current coordinate

Graphics Pen/Paper

 BBDE GRA_SET_PEN       ;in: A=color (0..15) for PLOT/LINE/WR_CHAR
 BBE1 GRA_GET_PEN       ;out: A=color (0..15)
 BBE4 GRA_SET_PAPER     ;in: A=color (0..15) for CLEAR_WINDOW/WR_CHAR
 BBE7 GRA_GET_PAPER     ;out: A=color (0..15

Graphics Origin

 BBC9 GRA_SET_ORIGIN     ;in: de=x, hl=y (also does MOVE 0,0)
 BBCC GRA_GET_ORIGIN     ;out: de=x, hl=y

Normally, coordinate 0,0 is the lower-left of the screen. By changing the origin it can be moved, for example, to the middle of the screen.

Graphics Window

 BBCF GRA_SET_WIN_WIDTH  ;in: de=x1/left, hl=x2/right
 BBD2 GRA_SET_WIN_HEIGHT ;in: de=y1/top, hl=y2/bottom
 BBD5 GRA_GET_WIN_WIDTH  ;out: de=x1/left, hl=x2/right
 BBD8 GRA_GET_WIN_HEIGHT ;out: de=y1/top, hl=y2/bottom
 BBDB GRA_CLEAR_WINDOW   ;fill window by PAPER (also does MOVE 0,0)

Drawing operations are clipped to the window region. The x1/x2 values are rounded to byte-boundaries in VRAM.

Graphics Hooks

 BBBD GRA_RESET_HOOKS   ;out: [BDDC+00h..0Ah]=Default jump opcodes/addresses
 BDDC HOOK_GRA_PLOT     ;in: de=x, hl=y               ;\JP NNNNh opcodes,
 BDDF HOOK_GRA_TEST     ;in: de=x, hl=y, out: A=color ; with NNNNh in LO ROM
 BDE2 HOOK_GRA_LINE     ;in: de=x, hl=y               ;/(which must be on)

New Graphics Functions (664 and up only)

 BD43 GRA_DEFAULT_664        ;SCR_WRITE=?, BACK=00h,FIRST=FFh,MASK=FFh
 BD46 GRA_SET_BACK_664       ;A=background mode (FFh=transparent)
 BD49 GRA_SET_FIRST_664      ;in: A=flag (00h,FFh;1st pix of LINE)
 BD4C GRA_SET_LINE_MASK_664  ;in: A=mask
 BD4F GRA_FROM_USER_664      ;in: de=x, hl=y, out: de,hl=real x,y
 BD52 GRA_FILL_664           ;in: A=color,hl=buf,de=bufsize, out:cy=0=err