<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://www.temlib.org/AtariForumWiki/index.php?action=history&amp;feed=atom&amp;title=Displaying_ST_Pictures</id>
	<title>Displaying ST Pictures - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://www.temlib.org/AtariForumWiki/index.php?action=history&amp;feed=atom&amp;title=Displaying_ST_Pictures"/>
	<link rel="alternate" type="text/html" href="https://www.temlib.org/AtariForumWiki/index.php?title=Displaying_ST_Pictures&amp;action=history"/>
	<updated>2026-05-13T20:21:25Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.39.2</generator>
	<entry>
		<id>https://www.temlib.org/AtariForumWiki/index.php?title=Displaying_ST_Pictures&amp;diff=12814&amp;oldid=prev</id>
		<title>&gt;Wongck at 11:42, 13 October 2011</title>
		<link rel="alternate" type="text/html" href="https://www.temlib.org/AtariForumWiki/index.php?title=Displaying_ST_Pictures&amp;diff=12814&amp;oldid=prev"/>
		<updated>2011-10-13T11:42:13Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 07:42, 13 October 2011&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l199&quot;&gt;Line 199:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 199:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Back to [[Assembly_language]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Back to [[Assembly_language]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Category: &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Programming&lt;/del&gt;]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; 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;[[Category: &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Assembly Language&lt;/ins&gt;]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>&gt;Wongck</name></author>
	</entry>
	<entry>
		<id>https://www.temlib.org/AtariForumWiki/index.php?title=Displaying_ST_Pictures&amp;diff=12813&amp;oldid=prev</id>
		<title>&gt;Wongck at 15:37, 11 October 2011</title>
		<link rel="alternate" type="text/html" href="https://www.temlib.org/AtariForumWiki/index.php?title=Displaying_ST_Pictures&amp;diff=12813&amp;oldid=prev"/>
		<updated>2011-10-11T15:37:37Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 11:37, 11 October 2011&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l199&quot;&gt;Line 199:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 199:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Back to [[Assembly_language]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Back to [[Assembly_language]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; 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: Programming]]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>&gt;Wongck</name></author>
	</entry>
	<entry>
		<id>https://www.temlib.org/AtariForumWiki/index.php?title=Displaying_ST_Pictures&amp;diff=12812&amp;oldid=prev</id>
		<title>&gt;Zorro 2 at 12:04, 24 October 2006</title>
		<link rel="alternate" type="text/html" href="https://www.temlib.org/AtariForumWiki/index.php?title=Displaying_ST_Pictures&amp;diff=12812&amp;oldid=prev"/>
		<updated>2006-10-24T12:04:53Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
* TAB=10 (why? that's how my DevPac came way back when...)&lt;br /&gt;
*&lt;br /&gt;
* DCS.S - Assembly Lesson # 1&lt;br /&gt;
*   by Keith Gerdes&lt;br /&gt;
*    &amp;amp; Michael B. Vederman&lt;br /&gt;
*&lt;br /&gt;
* Developed and tested using HiSoft's DevPac ST/TT&lt;br /&gt;
*&lt;br /&gt;
&lt;br /&gt;
* Equates for picture file type&lt;br /&gt;
*  Change &amp;quot;type_pic&amp;quot; variable in DATA segment to desired picture type&lt;br /&gt;
NEO	= 0&lt;br /&gt;
PIx	= 1&lt;br /&gt;
* NOTE: PIx refers to PI1, PI2 or PI3 file&lt;br /&gt;
&lt;br /&gt;
	TEXT			; TEXT segment&lt;br /&gt;
START:&lt;br /&gt;
* Get new screen address (STs require a 256 ($100) byte boundary)&lt;br /&gt;
	move.l	#buffer,d0	; 32000+256 byte buffer&lt;br /&gt;
	clr.b	d0		; $100 byte boundary round off&lt;br /&gt;
	add.l	#$100,d0		; now round up&lt;br /&gt;
	move.l	d0,new_scrn	; new screen buffer&lt;br /&gt;
&lt;br /&gt;
* Get current resolution&lt;br /&gt;
	move.w	#4,-(a7)&lt;br /&gt;
	trap	#14		; getRez&lt;br /&gt;
	addq.l	#2,a7&lt;br /&gt;
	move.w	d0,rez		; resolution (0,1,2)&lt;br /&gt;
	move.w	d0,the_rez	; resolution variable&lt;br /&gt;
&lt;br /&gt;
* Get current screen address&lt;br /&gt;
	move.w	#2,-(a7)&lt;br /&gt;
	trap	#14		; physBase&lt;br /&gt;
	addq.l	#2,a7&lt;br /&gt;
	move.l	d0,old_scrn	; present screen address&lt;br /&gt;
&lt;br /&gt;
	dc.w	$a00a		; hide mouse cursor&lt;br /&gt;
&lt;br /&gt;
* Open picture file&lt;br /&gt;
	lea	name_neo,a0	; NEO&lt;br /&gt;
	cmp.b	#NEO,type_pic	; NEO?&lt;br /&gt;
	beq.s	f_open		; yep&lt;br /&gt;
	lea	name_pix,a0	; PIx&lt;br /&gt;
f_open:	move.l	a0,-(a7)		; filename&lt;br /&gt;
	move.w	#$3d,-(a7)&lt;br /&gt;
	trap	#1		; Fopen&lt;br /&gt;
	addq.l	#6,a7&lt;br /&gt;
	tst.l	d0&lt;br /&gt;
	bmi	exit1		; error&lt;br /&gt;
	move.w	d0,handle&lt;br /&gt;
&lt;br /&gt;
* Read resolution &amp;amp; palette&lt;br /&gt;
	lea	the_pal,a0	; buffer&lt;br /&gt;
	moveq	#34,d0		; count (1.w+16.w)&lt;br /&gt;
	cmp.b	#PIx,type_pic	; PIx?&lt;br /&gt;
	beq.s	get_f_pal		; yep&lt;br /&gt;
	moveq	#36,d0		; count (2.w+16.w)&lt;br /&gt;
get_f_pal:bsr	f_read		; read&lt;br /&gt;
	ble	exit1		; error&lt;br /&gt;
&lt;br /&gt;
* Get current color palette&lt;br /&gt;
* Note: registers D3-D7 &amp;amp; A3-A7 are saved by TRAP #13 &amp;amp; #14&lt;br /&gt;
	lea	save_pal+32,a6&lt;br /&gt;
	moveq	#15,d7&lt;br /&gt;
get_pal:	move.w	#-1,-(a7)		; color value (-1 gets color)&lt;br /&gt;
	move.w	d7,-(a7)		; color #&lt;br /&gt;
	move.w	#7,-(a7)&lt;br /&gt;
	trap	#14		; get/set color&lt;br /&gt;
	addq.l	#6,a7&lt;br /&gt;
	move.w	d0,-(a6)		; save it&lt;br /&gt;
	dbf	d7,get_pal&lt;br /&gt;
&lt;br /&gt;
* Set palette (all black)&lt;br /&gt;
	lea	clr_pal,a0	; palette address (all zeroes)&lt;br /&gt;
	bsr	set_pal		; set palette&lt;br /&gt;
* Set screen to new resolution &amp;amp; address&lt;br /&gt;
	move.w	the_pal,d0	; resolution&lt;br /&gt;
	and.w	#3,d0		; see text&lt;br /&gt;
	move.l	new_scrn,a0	; change screen location&lt;br /&gt;
	bsr	setscreen		; set screen&lt;br /&gt;
&lt;br /&gt;
	cmp.b	#PIx,type_pic	; PIx?&lt;br /&gt;
	beq.s	get_data		; yep&lt;br /&gt;
&lt;br /&gt;
* Dummy read of NEO header...could have done an Fseek&lt;br /&gt;
	move.l	new_scrn,a0	; buffer&lt;br /&gt;
	moveq	#92,d0		; count (128-36)&lt;br /&gt;
	bsr	f_read		; read&lt;br /&gt;
	ble.s	exit1		; error&lt;br /&gt;
&lt;br /&gt;
* Read screen data&lt;br /&gt;
get_data:	move.l	new_scrn,a0	; buffer&lt;br /&gt;
	move.l	#32000,d0		; count&lt;br /&gt;
	bsr	f_read		; read&lt;br /&gt;
	ble.s	exit1		; error&lt;br /&gt;
&lt;br /&gt;
* Set new palette&lt;br /&gt;
*  Palette read at +2 for PIx &amp;amp; +4 for NEO&lt;br /&gt;
	lea	the_pal+2,a0	; palette address&lt;br /&gt;
	cmp.b	#PIx,type_pic	; PIx?&lt;br /&gt;
	beq.s	scrn_pal		; yep&lt;br /&gt;
	lea	the_pal+4,a0	; palette address&lt;br /&gt;
scrn_pal:	bsr	set_pal		; set palette&lt;br /&gt;
&lt;br /&gt;
* Wait for keypress&lt;br /&gt;
	move.w	#7,-(a7)&lt;br /&gt;
	trap	#1		; Crawcin&lt;br /&gt;
	addq.l	#2,a7&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Set palette (all black)&lt;br /&gt;
	lea	clr_pal,a0	; palette address (all zeroes)&lt;br /&gt;
	bsr.s	set_pal		; set palette&lt;br /&gt;
&lt;br /&gt;
* Restore screen resolution &amp;amp; address&lt;br /&gt;
	move.w	rez,d0		; original resolution&lt;br /&gt;
	move.l	old_scrn,a0	; original screen address&lt;br /&gt;
	bsr.s	setscreen		; set screen&lt;br /&gt;
* Restore palette&lt;br /&gt;
	lea	save_pal,a0	; original palette&lt;br /&gt;
	bsr.s	set_pal		; set palette&lt;br /&gt;
&lt;br /&gt;
exit1:	dc.w	$a009		; show mouse cursor&lt;br /&gt;
&lt;br /&gt;
* Close file handle&lt;br /&gt;
	tst.w	handle		; file opened?&lt;br /&gt;
	ble.s	exit2		; nope&lt;br /&gt;
	move.w	handle,-(a7)	; handle&lt;br /&gt;
	move.w	#$3e,-(a7)&lt;br /&gt;
	trap	#1		; Fclose&lt;br /&gt;
	addq.l	#4,a7&lt;br /&gt;
&lt;br /&gt;
* Terminate&lt;br /&gt;
exit2:	clr.w	-(a7)&lt;br /&gt;
	trap	#1		; Pterm&lt;br /&gt;
	illegal			; won't get here?&lt;br /&gt;
&lt;br /&gt;
* D0 = resolution&lt;br /&gt;
* A0 = new screen address&lt;br /&gt;
setscreen:cmp.w	#2,d0		; hi rez switch?&lt;br /&gt;
	beq.s	no_change		; yep&lt;br /&gt;
	cmp.w	#2,rez		; in hi rez?&lt;br /&gt;
	beq.s	no_change		; yep&lt;br /&gt;
	lea	the_rez,a1&lt;br /&gt;
	move.w	(a1),d1		; old rez&lt;br /&gt;
	move.w	d0,(a1)		; new rez&lt;br /&gt;
	cmp.w	d1,d0		; same?&lt;br /&gt;
	bne.s	new_rez		; nope - do rez change&lt;br /&gt;
no_change:moveq	#-1,d0		; -1 no change&lt;br /&gt;
new_rez:	move.w	d0,-(a7)		; rez (0,1,2)&lt;br /&gt;
	move.l	a0,-(a7)		; physical location&lt;br /&gt;
	move.l	a0,-(a7)		; logical location&lt;br /&gt;
	move.w	#5,-(a7)&lt;br /&gt;
	trap	#14		; setScreen&lt;br /&gt;
	lea	12(a7),a7&lt;br /&gt;
	rts&lt;br /&gt;
&lt;br /&gt;
* A0 = palette address&lt;br /&gt;
set_pal:	move.l	a0,-(a7)		; push palette for below&lt;br /&gt;
&lt;br /&gt;
	move.w	#37,-(a7)&lt;br /&gt;
	trap	#14		; vsync&lt;br /&gt;
	addq.l	#2,a7&lt;br /&gt;
&lt;br /&gt;
	move.w	#6,-(a7)&lt;br /&gt;
	trap	#14		; set palette&lt;br /&gt;
	addq.l	#6,a7&lt;br /&gt;
	rts&lt;br /&gt;
&lt;br /&gt;
* A0 = buffer address&lt;br /&gt;
* D0 = amount to read&lt;br /&gt;
f_read:	move.l	a0,-(a7)		; buffer&lt;br /&gt;
	move.l	d0,-(a7)		; count&lt;br /&gt;
	move.w	handle,-(a7)	; handle&lt;br /&gt;
	move.w	#$3f,-(a7)&lt;br /&gt;
	trap	#1		; Fread&lt;br /&gt;
	lea	12(a7),a7&lt;br /&gt;
	tst.l	d0		; test error condition for return&lt;br /&gt;
	rts&lt;br /&gt;
&lt;br /&gt;
	DATA			; DATA segment&lt;br /&gt;
name_neo:	dc.b	'*.neo',0		; NEO filename&lt;br /&gt;
name_pix:	dc.b	'*.pi?',0		; PIx filename&lt;br /&gt;
type_pic:	dc.b	NEO		; picture type 0-NEO !0-PIx&lt;br /&gt;
&lt;br /&gt;
	BSS			; BSS segment&lt;br /&gt;
rez:	ds.w	1		; original resolution value&lt;br /&gt;
the_rez:	ds.w	1		; resolution variable&lt;br /&gt;
handle:	ds.w	1		; file handle from Fopen&lt;br /&gt;
new_scrn:	ds.l	1		; address of allocated screen&lt;br /&gt;
old_scrn:	ds.l	1		; saved address of original screen&lt;br /&gt;
save_pal:	ds.w	16		; saved palette&lt;br /&gt;
clr_pal:	ds.w	16		; palette of 0s to blank screen&lt;br /&gt;
the_pal:	ds.w	36		; new palette read from pic file&lt;br /&gt;
buffer:	ds.b	32000+256		; buffer for screen&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Back to [[Assembly_language]]&lt;/div&gt;</summary>
		<author><name>&gt;Zorro 2</name></author>
	</entry>
</feed>