<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>https://oldwiki.cpcwiki.eu/index.php?action=history&amp;feed=atom&amp;title=BIOS_Screen_Functions</id>
		<title>BIOS Screen Functions - Revision history</title>
		<link rel="self" type="application/atom+xml" href="https://oldwiki.cpcwiki.eu/index.php?action=history&amp;feed=atom&amp;title=BIOS_Screen_Functions"/>
		<link rel="alternate" type="text/html" href="https://oldwiki.cpcwiki.eu/index.php?title=BIOS_Screen_Functions&amp;action=history"/>
		<updated>2026-08-28T16:23:35Z</updated>
		<subtitle>Revision history for this page on the wiki</subtitle>
		<generator>MediaWiki 1.25.1</generator>

	<entry>
		<id>https://oldwiki.cpcwiki.eu/index.php?title=BIOS_Screen_Functions&amp;diff=65525&amp;oldid=prev</id>
		<title>MacDeath at 16:41, 19 December 2010</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.cpcwiki.eu/index.php?title=BIOS_Screen_Functions&amp;diff=65525&amp;oldid=prev"/>
				<updated>2010-12-19T16:41:25Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;tr style='vertical-align: top;'&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Revision as of 16:41, 19 December 2010&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;L56&quot; &gt;Line 56:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 56:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; BD25 MC_SET_INKS&amp;#160; &amp;#160; &amp;#160; &amp;#160; ;in: DE=ptr to border and 16 inks (17 bytes)&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; BD25 MC_SET_INKS&amp;#160; &amp;#160; &amp;#160; &amp;#160; ;in: DE=ptr to border and 16 inks (17 bytes)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;These functions are directly accessing I/O ports. WAIT_FLYBACK is eventually useful. The MODE/OFFSET apply the new setting to the hardware (but the BIOS functions like TXT_WR_CHAR aren't aware of it; so they do still draw pixels at the old offset and old color depth). The INK functions expect hardware color codes (eg. 14h or 54h for black), and, the infamous blink-feature will overwrite the new colors after soon.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;These functions are directly accessing I/O ports. WAIT_FLYBACK is eventually useful. The MODE/OFFSET apply the new setting to the hardware (but the BIOS functions like TXT_WR_CHAR aren't aware of it; so they do still draw pixels at the old offset and old color depth). The INK functions expect hardware color codes (eg. 14h or 54h for black), and, the infamous blink-feature will overwrite the new colors after soon.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[[Category:BIOS]]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>MacDeath</name></author>	</entry>

	<entry>
		<id>https://oldwiki.cpcwiki.eu/index.php?title=BIOS_Screen_Functions&amp;diff=39561&amp;oldid=prev</id>
		<title>Nocash: Created page with '== Screen Init ==   BBFF SCR_INITIALIZE   BC02 SCR_RESET  == Screen Resolution ==   BC0E SCR_SET_MODE      ;in: A=mode (0=160x200x16, 1=320x200x4, 2=640x200x2)   BC11 SCR_GET_MOD…'</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.cpcwiki.eu/index.php?title=BIOS_Screen_Functions&amp;diff=39561&amp;oldid=prev"/>
				<updated>2010-01-24T22:00:59Z</updated>
		
		<summary type="html">&lt;p&gt;Created page with &amp;#039;== Screen Init ==   BBFF SCR_INITIALIZE   BC02 SCR_RESET  == Screen Resolution ==   BC0E SCR_SET_MODE      ;in: A=mode (0=160x200x16, 1=320x200x4, 2=640x200x2)   BC11 SCR_GET_MOD…&amp;#039;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== Screen Init ==&lt;br /&gt;
  BBFF SCR_INITIALIZE&lt;br /&gt;
  BC02 SCR_RESET&lt;br /&gt;
&lt;br /&gt;
== Screen Resolution ==&lt;br /&gt;
  BC0E SCR_SET_MODE      ;in: A=mode (0=160x200x16, 1=320x200x4, 2=640x200x2)&lt;br /&gt;
  BC11 SCR_GET_MODE      ;out: A=mode (cy=mode0, z=mode1, ie. cmp mode,1)&lt;br /&gt;
&lt;br /&gt;
== Screen Palette ==&lt;br /&gt;
  BC32 SCR_SET_INK       ;in: A=index, B=color1, C=color2&lt;br /&gt;
  BC35 SCR_GET_INK       ;in: A=index, out: B=color1, C=color2&lt;br /&gt;
  BC38 SCR_SET_BORDER    ;in: B=color1, C=color2&lt;br /&gt;
  BC3B SCR_GET_BORDER    ;out: B=color1, C=color2&lt;br /&gt;
  BC3E SCR_SET_FLASHING  ;in: H=count1, L=count2&lt;br /&gt;
  BC41 SCR_GET_FLASHING  ;out: H=count1, L=count2&lt;br /&gt;
&lt;br /&gt;
== VRAM Address Translation ==&lt;br /&gt;
  BC1A SCR_CHAR_POSITION ;in: H=x, L=y, out: HL=vram addr, B=bytes/char&lt;br /&gt;
  BC1D SCR_DOT_POSITION  ;in: DE=x, HL=y, out: HL=vram addr, C=mask, DE, B&lt;br /&gt;
  BC20 SCR_NEXT_BYTE     ;out: HL=HL+1 (wrapped within 800h-byte block)&lt;br /&gt;
  BC23 SCR_PREV_BYTE     ;out: HL=HL-1 (wrapped within 800h-byte block)&lt;br /&gt;
  BC26 SCR_NEXT_LINE     ;out: HL=HL+800h, or HL=HL+50h-3800h (or so)&lt;br /&gt;
  BC29 SCR_PREV_LINE     ;out: HL=HL-800h, or HL=HL-50h+3800h (or so)&lt;br /&gt;
  BC2C SCR_INK_ENCODE    ;in: A=color, out: A=color_mask&lt;br /&gt;
  BC2F SCR_INK_DECODE    ;in: A=color_mask, out: A=color&lt;br /&gt;
  BC17 SCR_CHAR_LIMITS   ;out: B=max_x(19,39,79), C=max_y(24)&lt;br /&gt;
&lt;br /&gt;
== Fill VRAM ==&lt;br /&gt;
  BC14 SCR_MODE_CLEAR    ;clear vram, set offset=0000h, update inks&lt;br /&gt;
  BC44 SCR_FILL_BOX      ;in: A=fillbyte, H=x1, L=y1, D=x2, E=y2&lt;br /&gt;
  BC47 SCR_FLOOD_BOX     ;in: A=fillbyte, HL=vram addr, D=xsiz, E=ysiz&lt;br /&gt;
  BC5F SCR_HORIZONTAL    ;in: A=pen, DE=x1, BC=x2, HL=y&lt;br /&gt;
  BC62 SCR_VERTICAL      ;in: A=pen, HL=y1, BC=y2, DE=x&lt;br /&gt;
&lt;br /&gt;
== Further Stuff ==&lt;br /&gt;
  BC4A SCR_CHAR_INVERT   ;in: H=x, L=y, B=paper, C=pen&lt;br /&gt;
  BC4D SCR_HARDWARE_ROLL ;in: A=paper, B=dir(0=down, FFh=up)&lt;br /&gt;
  BC50 SCR_SOFTWARE_ROLL ;in: A=paper, B=dir(&amp;quot;&amp;quot;), H=x1, L=y1, D=x2, E=y2&lt;br /&gt;
  BC53 SCR_UNPACK        ;in: HL=src, DE=dest (mono 8x8 char to colored 8x8)&lt;br /&gt;
  BC56 SCR_REPACK        ;in: H=x, L=y, A=pen, DE=dest (colored 8x8 to mono)&lt;br /&gt;
  BC59 SCR_ACCESS        ;in: A=drawmode (0=Normal, 1=XOR, 2=AND, 3=OR)&lt;br /&gt;
  BC5C SCR_PIXELS        ;in: HL=vram addr, C=xmask, B=color&lt;br /&gt;
  BDE5 HOOK_SCR_READ          ;in: HL=vram addr, C=xmask, out: A=color&lt;br /&gt;
  BDE8 HOOK_SCR_WRITE         ;in: HL=vram addr, C=xmask, B=color&lt;br /&gt;
  BDEB HOOK_SCR_MODE_CLEAR    ;clear vram, etc. (same as BC14)&lt;br /&gt;
  BC05 SCR_SET_OFFSET    ;in: HL.bit10..0 = vram offset 0..7FFh&lt;br /&gt;
  BC08 SCR_SET_BASE      ;in: A.bit7-6 = vram block 0..3&lt;br /&gt;
  BC0B SCR_GET_LOCATION  ;out: A.bit7-6=block, HL.bit10..0=offset&lt;br /&gt;
  BD55 SCR_SET_POSITION_664  ;in: A=BASE,HL=OFFSET, out: A AND C0h, HL AND 7FEh&lt;br /&gt;
&lt;br /&gt;
== Machine Pack (Screen) ==&lt;br /&gt;
  BD19 MC_WAIT_FLYBACK    ;wait until/unless PIO.Port B bit0=1 (vsync)&lt;br /&gt;
  BD1C MC_SET_MODE        ;in: A=video mode (0..2) (for C' and gate array)&lt;br /&gt;
  BD1F MC_SCREEN_OFFSET   ;in: A=base, HL=offset   (for CRTC)&lt;br /&gt;
  BD22 MC_CLEAR_INKS      ;in: DE=ptr to border and 1 ink (2 bytes)&lt;br /&gt;
  BD25 MC_SET_INKS        ;in: DE=ptr to border and 16 inks (17 bytes)&lt;br /&gt;
These functions are directly accessing I/O ports. WAIT_FLYBACK is eventually useful. The MODE/OFFSET apply the new setting to the hardware (but the BIOS functions like TXT_WR_CHAR aren't aware of it; so they do still draw pixels at the old offset and old color depth). The INK functions expect hardware color codes (eg. 14h or 54h for black), and, the infamous blink-feature will overwrite the new colors after soon.&lt;/div&gt;</summary>
		<author><name>Nocash</name></author>	</entry>

	</feed>