Tweet Follow Us on Twitter
Res Formats
Volume Number: 2
Issue Number: 6
Column Tag: Resource Roundup

Resource Formats for Asm, RMaker and Lisa

By David Wilson, Personal Concepts

Creating Resources

When I first began to program the Mac, the accepted way to create resources was to define them in a text file (named something like ExampleR.text) using the Lisa Workshop. You then ran the text file through the Lisa's RMaker to compile this high-level "resource language" into the correct format for each resource on disk.

In the Fall of 1984, I began to present Apple's three-day Macintosh Technical Training seminars, designed to teach the basics of Mac programming, and we used this approach to do our in-class programming with the Lisa Pascal Workshop.

Things have gotten more complicated during the last year, with the development of various utility programs to help you create and modify resources, and even decompile them into text files. Furthermore, as the readers of MacTutor long ago recognized, programming directly on the Mac has grown tremendously in popularity. Many programmers still use the text file approach, but use the RMaker that runs on the Mac - one with a slightly different format from that used on the Lisa.

I had to deal with these format differences when we developed Apple's new four-day Macintosh Programing Seminars , using TML Pascal on the Mac for in-class programming. I had to convert my sample programs' source code from the Lisa Workshop to TML Pascal, and finally created the table that follows to help in the process. It is presented here in the hope that you will also find it useful.

"But wait", you cry! "I never use a Lisa - why should I care about it's obscure RMaker format?" Good question. Here are some answers:

1. There are still many Lisa source code samples, from Apple and other sources, that you may want to use. This table will help you painlessly convert them to your Mac development system.

2. There are useful utility programs, such as DialogCreator and REdit that produce text files only in the Lisa format. Again, you must do the conversion.

3. Other utility programs, such as ScrnEdit, will produce text files in either format, but the text files often become a bit garbled in the process - you will need some reference to put things in order, and the table may also be helpful in that case.

Of course, you may have decided not to use text files at all, since resources can be created directly with ResEdit, and "included" with the RMaker or Linker step. The disadvantage to this approach is that you lose the documentation provided by the text files, and you sometimes will have more difficulty in exactly aligning the rectangles for scroll bars, dialog items. etc.

In any case, good luck in your Macintosh programming, and remember Scott Knaster's motto for all Mac programmers: "Everything you know is wrong."

[For those of us fanatics that insist on doing our resources in assembly language, we've also included the assembly formats from an earlier issue of MacTutor, listed below. Following the assembler formats are the RMaker resource formats for both the Macintosh and the Lisa. -Ed.]

Assembly Resource Formats
;
;Resource Prototypes for Assembler usage
;by
;Frank Alviani
;
;NOTES -
;
;ALL resources using local labels (labels starting with @)
;must be bracketed by regular labels; local labels can be
;re-used only if the duplicates are separated by regular
;labels. This applies even if no warning appears in the 
; resource prototype!
;
; These are arranged roughly alphabetically, altho the
;DLOG/ALRT/DITL are grouped together at the end.
;
;In general # represents a numeric field normally filled in.
;The name and attribute fields on the RESOURCE line are 
;optional.
;
;The idea is to have this in one editor window, and to copy
;to the resource file being built as needed. This will
;hopefully speed the process, and give flexability the 
;RMaker doesn't.
;
;There are some additional explanatory comments with 
;various resources.
;
;Some of this is copied from MacTutor Vol. 1 No. 4.
;RESOURCE ATTRIBUTES
SYSREF EQU 128
SYSHEAP EQU 64
PURGABLEEQU 32
LOCKED EQU 16
PROTECTED EQU 8
PRELOAD EQU 4
CHANGED EQU 2
;RESOURCE FILE ATTRIBUTES
READONLYEQU 128
COMPACT EQU 64
MAPCHANGEDEQU 32
;DITL TYPE EQUATES
BUTTON EQU 4
CHKBOX EQU 5
RADIO EQU 6
RESCTL EQU 7
;
STATEXT EQU 8
EDITEXT EQU 16
ICONITM EQU 32
QDPICT EQU 64
USERITM EQU 0
;
DISABLE EQU 128
;WINDOW TYPES
DOCBOX EQU 0 ;standard doc window
ALERT EQU 1 ;alert
PLAIN EQU 2 ;plain
PLAINSHDEQU 3 ;plain with shadow
NOGROWDOC EQU 4 ;doc window w/o grow box
ROUNDBOXEQU 16 ;rounded-corner window ;(see IM for setting corner radius..)
;CONTROL TYPES
CBUTTON EQU 0 ;simple button
CCHKBOX EQU 1 ;check box
CRADIO EQU 2 ;radio button
USEWFNT EQU 8 ;add to above to use 
 ;window's fonts
CSCROLL EQU 16 ;scroll bar
; IDENTIFICATION resource - needed for Finder to locate Icon
RESOURCE'WCA1' 0 'IDENTIFICATION'
 DC.B AA1-@1
@1:DC.B 'Ver. 0.1 3/31/85'
AA1:
;BUNDLE resource
.ALIGN 2
RESOURCE'BNDL' ### 'name' [(attr)]
 DC.L 'WCA1';signature
 DC.W 0,1 ;data (doesn't change)
 DC.L 'ICN#';icon mappings
 DC.W 0 ;number of mappings - 1
 DC.W 0,128 ;map 0 to icon 128
 
 DC.L 'FREF';FREF mappings
 DC.W 0 ;number of mappings - 1
 DC.W 0,128 ;map 0 to fref 128
;CONTROL resource
;
;NOTE - although the assembler definition of this claims
;that the "control type" field is a long word, IT LIES.
;Control type is a 16-bit field!!
.ALIGN 2
RESOURCE'CNTL' ### 'name' [(attr)]
 DC.W # ;top
 DC.W # ;left
 DC.W # ;bottom
 DC.W # ;right
 DC.W # ;initial value
 DC.W 0 ;visible (T/F)
 DC.W # ;max value
 DC.W # ;min value
 DC.W # ;control type
 DC.L 0 ;refCon
 DC.B @2-@1 ;title length (at least 1)
@1:DC.B 'xxx' ;title
@2:
;CURSOR resource
.ALIGN 2
RESOURCE'CURS' ### 'name' [(attr)]
 DC.L #,# ;1st 8 bytes of cursor
 DC.L #,# ;2nd 8 bytes
 DC.L #,# ;3rd 8 bytes
 DC.L #,# ;4th 8 bytes
 DC.L #,# ;1st 8 bytes of mask
 DC.L #,# ;2nd 8 bytes
 DC.L #,# ;3rd 8 bytes
 DC.L #,# ;4th 8 bytes 
 DC.W #,# ;h,v of hot spot
 
;FREF resource
RESOURCE'FREF' ### 'name' [(attr)]
 DC.B 'APPL',0,0,0
 
;ICN# resource
.ALIGN 2
RESOURCE'ICN#' ### 'name' [(attr)]
;there'd usually be an 'include' here...
;MENU resource
;
;NOTE - the "enable field": bits are number right to left 0-15.
;Bit 1 is the first menu item. A "0" bit in the mask disables
;that item. I haven't tried it, but I think turning off bit 0 of the
;mask disables the entire menu..
.ALIGN 2
RESOURCE'MENU' ### 'name' [(attr)]
lbl: DC.W1 ;MENU ID
 DC.W 0 ;width holder
 DC.W 0 ;height holder
 DC.L 0 ;std menu pro holder
 DC.L 1ドルFF;enable all items
 DC.B @2-@1 ;title length (in bytes)
@1:DC.B 20;title (this is the apple)
@2:
;MENU ITEM resource
 DC.B # ;item length
 DC.B 'xxx' ;menu item
 DC.B 0 ;no icon
 DC.B 0 ;keyboard equivalent
 DC.B 0 ;marking character
 DC.B 0 ;style of item's text
 
 DC.B 0 ;END OF MENU ITEMS
 
;PATTERN stuff
.ALIGN 2
RESOURCE'PAT ' ### 'name' [(attr)]
 DC.L #,# ;1st, 2nd 4 bytes of pattern
 
.ALIGN 2
RESOURCE'PAT#' ### 'name' [(attr)]
 DC.W # ;# of patterns
 DC.L #,# ;1st, 2nd 4 bytes of pattern #1
;STRING resource
.ALIGN 2
RESOURCE'STR ' ### 'name' [(attr)]
 DC.B @2-@1 ;text length
@1:DC.B 'xxx' ;text
@2:
;STRING LIST resource
.ALIGN 2
RESOURCE'STR#' ### 'name' [(attr)]
 DC.W # ;count of strings
 DC.B @2-@1 ;text length - string #1
@1:DC.B 'xxx' ;text
@2:
label: ;REQUIRED REGULAR LABEL HERE!
;WINDOW resource
.ALIGN 2
RESOURCE'WIND' ### 'name' [(attr)]
 DC.W # ;top
 DC.W # ;left
 DC.W # ;bottom
 DC.W # ;right
 DC.W # ;window type
 DC.W # ;visible (T/F)
 DC.W # ;draw goAway (T/F)
 DC.L 0 ;refCon (available)
 DC.B @2-@1 ;title length
@1:DC.B 'xxx' ;title
@2:
; --- Dialog / Alert / DITL are grouped together ---
;DIALOG resource
.ALIGN 2
RESOURCE'DLOG' ### 'name' [(attr)]
 DC.W # ;top
 DC.W # ;left
 DC.W # ;bottom
 DC.W # ;right
 DC.W # ;window type
 DC.B # ;visible (T/F)
 DC.B 0 ;IGNORED
 DC.B # ;goAway flag (T=has close box)
 DC.B 0 ;IGNORED
 DC.L 0 ;refCon
 DC.W # ;ID of DITL list 
 DC.B @2-@1 ;text length
@1:DC.B 'xxx' ;text
@2:
;ALERT resource
.ALIGN 2
RESOURCE'ALRT' ### 'name' [(attr)]
 DC.W # ;top
 DC.W # ;left
 DC.W # ;bottom
 DC.W # ;right
 DC.W # ;resource ID of DITL list 
 DC.W # ;stages (see IM for details..)
;DITL resource
.ALIGN 2
RESOURCE'DITL' ### 'name' [(attr)]
 DC.W # ;# of items - 1
lbl: DC.L0 ;handle holder
 DC.W # ;top
 DC.W # ;left
 DC.W # ;bottom
 DC.W # ;right
 DC.B type;item-type
 DC.B @2-@1 ;item length (MUST BE EVEN)
@1:DC.B 'xxx' ;item
@2:
; items must be even length
; item types are as follows
; control item = item + 4
; button0
;check box1
;radio button 2
;resource 3
;
;static text8
;edit text16
;icon item32
;quickdraw pict 64
;user item0
;
; disable item = item + 128
; system icons
;stop 0
;note 1
;alert 2

RMaker Formats

The chart on the next four pages summarizes the Resource text file formats by the RMaker used by most Macintosh programming systems, including TML Pascal, Consulair C, Megamax C, and the MDS Assembler. The formats are shown in the left-hand column, with comments in the far right-hand column.

The center column shows the differences to be aware of when using the Lisa Pascal Workshop RMaker. In may cases there are no differences, but when there are, they are often subtle and easily missed, so check carefully.

The most subtle difference involves defining scroll bars, with the Macintosh RMaker needing the minimum, then maximum, then initial setting of the thumb. The Lisa RMaker wants miminum, initial, and then maximum. Your scroll bars will not work if you get these confused.

Other problems include the Macintosh RMaker's requirement that you separate items with a truly blank line (containing only a carriage return), and define a string resource with "STR(space)". The Lisa RMaker is more tolerant in these areas.

The format for dialog items (DITL) is that for Macintosh RMaker 2.0D2, shipped with the December 1985 Software Supplement (Volume I, Issue II). The ealier version is similar, but not quite as powerful.

 Macintosh Lisa Comments
------------------------------ Bundles of Finder Information -------------------------------------------
Type BNDL
 ,128
JEN4 0 Creator, Signature, Owner
ICN# Finder Icon and Mask
0 129 1 130 applic. is 129; document is 130
FREF File type
0 131 1 132 APPL is 131; SCRN is 132
 Type BNDL
 ,128
 JEN4 0 Local ID 0
 2 2 types follow
 ICN# 2 2 Iicon lists
 0 129 local ID 0 goes with ICN# ID 129
 1 130
 FREF 2 2 file references
 0 131 local ID 0 goes with FREF ID 131
 1 132
Type JEN4 = STR Creator name
 ,0 Local ID of 0 for ICN# and FREF
This is for your own use Any text that you want
Type FREF File reference (file type)
 ,130 Resource ID = 130
APPL 0 Application; local ID = 0.
 ,131 Resource ID = 131
SCRN 1 Document file type; local ID = 1.
Type ICN# = GNRL Icon and Mask for Finder
 ,129 Use IDs from 128 to 255
.H Hexadecimal data will follow
0001 8000 0002 4000 16 lines of 16 hex digits for icon
. .
. .
000F F000 000F F000 16 lines of 16 hex digits 
for mask
 Type ICN#
 ,129
 2 icon and mask follow
 00018000 32 lines of 8 hex digits for icon
 ... 32 lines of 8 hex digits for mask
------------------------ Using CODE resources from Linker output ------------------------------
Include TML1:T13 Type CODE From Linker
 Demo9L,0 Use Demo9L.obj; start with CODE 
0
---------------------- Controls, such as scroll bars, push buttons, etc. ---------------------------
Type CNTL Control
 ,401 Resource ID
Vertical bar Title; doesn't show on scroll bars
-1 416 273 432 top left bottom right (local coord)
Visible Can see it right away
16 Scroll bar
0 32-bit reference constant = 0
0 70 35 minimum maximum current
 0 35 70 minimum current maximum
----------------------------------- Cursor definition -------------------------------------------------------
Type CURS = GNRL Cursor
 ,401
.H Hexadecimal data will follow
2000 ... 0000 64 hex digits for cursor data
FFFF ... FFFF 64 hex digits for mask data
0003 0003 top left (y x)
 Type CURS
 ,401
 2000...0000
 FFFF...FFFF
 0003 0003
-------------------------------- Dialog and Alert boxes --------------------------------------------------
Type ALRT Same Alert box
 ,503 Resource ID
70 131 190 381 top left bottom right (global)
603 Use DITL number 603
F432 Stages list (stages 4321)
Type DLOG Dialog window
 ,401 ID
About T13 Dialog window title
30 12 326 500 top left bottom right (global)
Visible NoGoAway or Invisible, or GoAway
1 Dialog window type
0 Dialog window reference constant
501 Use DITL 501
 Type DLOG
 ,401
 30 12 326 500
 Visible 1 NoGoAway 01 = window type; 0 = ref constant
 501 Use DITL 501
 About Demo9 Title
Type DITL Same Dialog Item List
 ,501 (Optional) name, ID
9 Number of items in list
BtnItem BtnItem Enabled Push button, enabled
85 382 155 465 top left bottom right (local)
Put Away words to go in button
ChkItem Disabled ChkItem Disabled Check box, disabled
185 260 205 420 Includes check box and words
Some words Put to right of check box
EditText Disabled EditText Disabled Editable text, with frame
185 10 205 245
Modify these words Up to 240 characters
IconItem IconItem Enabled Icon, but no mask
12 14 76 78 Icon scaled to fit this rectangle
257 Use ICON ID = 257
PicItem PicItem Enabled QuickDraw Picture (PICT)
35 25 90 110 Picture scaled to fit this rectangle
128 Use PICT ID = 128
RadioItem RadioItem Enabled Radio button
245 260 265 420 Button and words inside rectangle
1200 Baud Words to right of radio button
ResCItem ResCItem Enabled Scroll bar
0 400 260 415 Fit in this rectangle
512 Use CNTL ID = 512
StatText StatText Enabled Static text
210 10 230 245 Word-wrapped inside rectangle
Cannot fix this Up to 240 characters
UserItem UserItem Enabled User-defined
------------------------ Icons for menu, dialog box, or in your program ------------------------
Type ICON = GNRL Icon, with no mask
 ,257 Use IDs from 256 to 511
.H -------- No .H for Lisa
00FFAA11 32 lines of 8 hex digits
----------------------------- Menu titles and items -----------------------------------------------------
Type MENU Same Menu
 ,401 (Optional) name, ID
14円 Hex 14 = ACSII 20 =  
 About T13 ^1 Use ICON (256 + 1) = 257 
on the left
 (- Disabled dotted line
--------------------------- Procedures as resources ----------------------------------------------------
Type PROC -------------------- Procedure, such as CDEF, MDEF
 ,128 Resource ID
MyProcedure filename for procedure (from Linker)
-------------------------- A single string (use GetString ROM call) ----------------------------------
Type STR_ Type STR Use blank after STR for Mac version
 ,300
This is a message Up to 255 characters
----------------------------- A list of strings (use GetIndString) ----------------------------------------
Type STR# List of strings
 ,400
2 Number so strings in the list
This is the first string Item 1
Here is another string Item 2
 Type STR#
 ,400
 This is the first string
 Here is another string
------------------------------------- Window template ----------------------------------------------------
Type WIND Same Window template
 ,401 Resource ID 
Untitled Title
40 64 327 495 top left bottom right (global)
Visible GoAway or Invisible, or NoGoAway
4 Window type
0 Reference constant

AltStyle によって変換されたページ (->オリジナル) /

Community Search:
MacTech Search:

Software Updates via MacUpdate

Latest Forum Discussions

Six fantastic ways to spend National Vid...
As if anyone needed an excuse to play games today, I am about to give you one: it is National Video Games Day. A day for us to play games, like we no doubt do every day. Let’s not look a gift horse in the mouth. Instead, feast your eyes on this... | Read more »
Old School RuneScape players turn out in...
The sheer leap in technological advancements in our lifetime has been mind-blowing. We went from Commodore 64s to VR glasses in what feels like a heartbeat, but more importantly, the internet. It can be a dark mess, but it also brought hundreds of... | Read more »
Today's Best Mobile Game Discounts...
Every day, we pick out a curated list of the best mobile discounts on the App Store and post them here. This list won't be comprehensive, but it every game on it is recommended. Feel free to check out the coverage we did on them in the links below... | Read more »
Nintendo and The Pokémon Company's...
Unless you have been living under a rock, you know that Nintendo has been locked in an epic battle with Pocketpair, creator of the obvious Pokémon rip-off Palworld. Nintendo often resorts to legal retaliation at the drop of a hat, but it seems this... | Read more »
Apple exclusive mobile games don’t make...
If you are a gamer on phones, no doubt you have been as distressed as I am on one huge sticking point: exclusivity. For years, Xbox and PlayStation have done battle, and before this was the Sega Genesis and the Nintendo NES. On console, it makes... | Read more »
Regionally exclusive events make no sens...
Last week, over on our sister site AppSpy, I babbled excitedly about the Pokémon GO Safari Days event. You can get nine Eevees with an explorer hat per day. Or, can you? Specifically, you, reader. Do you have the time or funds to possibly fly for... | Read more »
As Jon Bellamy defends his choice to can...
Back in March, Jagex announced the appointment of a new CEO, Jon Bellamy. Mr Bellamy then decided to almost immediately paint a huge target on his back by cancelling the Runescapes Pride event. This led to widespread condemnation about his perceived... | Read more »
Marvel Contest of Champions adds two mor...
When I saw the latest two Marvel Contest of Champions characters, I scoffed. Mr Knight and Silver Samurai, thought I, they are running out of good choices. Then I realised no, I was being far too cynical. This is one of the things that games do best... | Read more »
Grass is green, and water is wet: Pokémo...
It must be a day that ends in Y, because Pokémon Trading Card Game Pocket has kicked off its Zoroark Drop Event. Here you can get a promo version of another card, and look forward to the next Wonder Pick Event and the next Mass Outbreak that will be... | Read more »
Enter the Gungeon review
It took me a minute to get around to reviewing this game for a couple of very good reasons. The first is that Enter the Gungeon's style of roguelike bullet-hell action is teetering on the edge of being straight-up malicious, which made getting... | Read more »

Price Scanner via MacPrices.net

Take 150ドル off every Apple 11-inch M3 iPad Air
Amazon is offering a 150ドル discount on 11-inch M3 WiFi iPad Airs right now. Shipping is free: – 11′′ 128GB M3 WiFi iPad Air: 449,ドル 150ドル off – 11′′ 256GB M3 WiFi iPad Air: 549,ドル 150ドル off – 11′′ 512GB M3... Read more
Apple iPad minis back on sale for 100ドル off MS...
Amazon is offering 100ドル discounts (up to 20% off) on Apple’s newest 2024 WiFi iPad minis, each with free shipping. These are the lowest prices available for new minis among the Apple retailers we... Read more
Apple’s 16-inch M4 Max MacBook Pros are on sa...
Amazon has 16-inch M4 Max MacBook Pros (Silver and Black colors) on sale for up to 410ドル off Apple’s MSRP right now. Shipping is free. Be sure to select Amazon as the seller, rather than a third-party... Read more
Red Pocket Mobile is offering a 150ドル rebate o...
Red Pocket Mobile has new Apple iPhone 17’s on sale for 150ドル off MSRP when you switch and open up a new line of service. Red Pocket Mobile is a nationwide MVNO using all the major wireless carrier... Read more
Switch to Verizon, and get any iPhone 16 for...
With yesterday’s introduction of the new iPhone 17 models, Verizon responded by running "on us" promos across much of the iPhone 16 lineup: iPhone 16 and 16 Plus show as 0ドル/mo for 36 months with bill... Read more
Here is a summary of the new features in Appl...
Apple’s September 2025 event introduced major updates across its most popular product lines, focusing on health, performance, and design breakthroughs. The AirPods Pro 3 now feature best-in-class... Read more
Apple’s Smartphone Lineup Could Use A Touch o...
COMMENTARY – Whatever happened to the old adage, "less is more"? Apple’s smartphone lineup. — which is due for its annual refresh either this month or next (possibly at an Apple Event on September 9... Read more
Take 50ドル off every 11th-generation A16 WiFi i...
Amazon has Apple’s 11th-generation A16 WiFi iPads in stock on sale for 50ドル off MSRP right now. Shipping is free: – 11′′ 11th-generation 128GB WiFi iPads: 299ドル 50ドル off MSRP – 11′′ 11th-generation 256GB... Read more
Sunday Sale: 14-inch M4 MacBook Pros for up t...
Don’t pay full price! Amazon has Apple’s 14-inch M4 MacBook Pros (Silver and Black colors) on sale for up to 220ドル off MSRP right now. Shipping is free. Be sure to select Amazon as the seller, rather... Read more
Mac mini with M4 Pro CPU back on sale for 12ドル...
B&H Photo has Apple’s Mac mini with the M4 Pro CPU back on sale for 1259,ドル 140ドル off MSRP. B&H offers free 1-2 day shipping to most US addresses: – Mac mini M4 Pro CPU (24GB/512GB): 1259,ドル $... Read more

Jobs Board

  • SPREAD THE WORD:
  • Generate a short URL for this page:



All contents are Copyright 1984-2011 by Xplain Corporation. All rights reserved. Theme designed by Icreon.