home *** CD-ROM | disk | FTP | other *** search
/ Transactor / Transactor_27_1988_Transactor_Publishing.d64 / icondef.sda / ICON-DEFINER.SRC (.txt) < prev   
Commodore BASIC  |  2023-02-26  |  15KB  |  686 lines

  1. 1000 open2,8,1,"0:id"
  2. 1010 sys700
  3. 1020 ;opt oo
  4. 1030 .opt o2
  5. 1040 ;
  6. 1045 start = $0304
  7. 1050 ;--equates--
  8. 1060 r0 =$02
  9. 1070 r1 =$04
  10. 1080 r2 =$06
  11. 1090 r5 =$0c
  12. 1100 r7 =$10
  13. 1110 r9 =$14
  14. 1120 r10 =$16
  15. 1130 a2 =$70
  16. 1140 a3 =$72
  17. 1150 a4 =$74
  18. 1160 disbuf =$2f ;fore/back screen write (displaybufferon)
  19. 1170 ;
  20. 1180 pload =$0b00 ; load photo here, is also width byte
  21. 1190 pdepth =$0b01 ; depth stored here
  22. 1200 pstart =$0b03 ; 1st byte of bitmap
  23. 1210 sbegin =$20d0 ;start seq save here
  24. 1220 ; max 349 lines of 16 bytes each
  25. 1230 recvec = $84b1 ;recover screen from dialog box
  26. 1240 :
  27. 1250 ;
  28. 1260 ;
  29. 1270 ;
  30. 1280 ;
  31. 1290 ;
  32. 1300 ;
  33. 1310 *= start
  34. 1315 ;
  35. 1320 ;1st 4 bytes commented out
  36. 1330 ; they will be placed in the
  37. 1340 ; file header by "maketogeos"
  38. 1350 ;.byte $00,$ff
  39. 1360 ;.byte 3,21 ; 3x21 icon
  40. 1370 .byte $bf,$ff,$ff,$ff,$82,$20,$01
  41. 1375 .byte $84,$50,$01,$89,$88,$01
  42. 1380 .byte $84,$84,$01,$8e,$52,$01,$87
  43. 1385 .byte $31,$01,$83,$98,$81,$81,$c1,$81,$f4
  44. 1390 .byte $e3,$01,$8c,$ff,$01,$f4,$a1,$01
  45. 1395 .byte $84,$52,$01,$84,$52,$c1,$84,$a1
  46. 1400 .byte $79,$84,$80,$55,$8f,$a0,$6d,$84
  47. 1405 .byte $a1,$57,$80,$52,$cb,$80,$3c,$0d
  48. 1410 .byte $ff,$ff,$ff
  49. 1420 ;
  50. 1430 .byte $83 ;c= filetype user
  51. 1440 .byte 6 ;application
  52. 1450 .byte 0 ;geos seq file
  53. 1460 .word saddr ;start addr
  54. 1470 .word endcod ;end addr
  55. 1480 .word stjump ;start addr jump
  56. 1490 ;
  57. 1500 .asc "icon definerv1.0"
  58. 1510 .byte 0,0,0,0
  59. 1520 .asc "f.g.kostella"
  60. 1530 .byte 0,0,0,0
  61. 1540 ;
  62. 1550 ;the rest of the header is not used here
  63. 1560 ;
  64. 1570 ;
  65. 1580 ;---start geos file----
  66. 1590 *= start+$fc
  67. 1600 stjump =* ;these are the starting points
  68. 1610 saddr =* ;specified in this file's header
  69. 1620 lda #1
  70. 1630 sta erflag ;for first call
  71. 1640 jsr clrscr ;give instructions
  72. 1650 jsr doicon ;do icons
  73. 1660 rts  ; to main loop
  74. 1670 ;--- initial screen ---
  75. 1680 clrscr =*
  76. 1690 lda #0
  77. 1700 jsr $c139 ; setpattern (setpat)
  78. 1710 jsr $c19f ; i.rectangle (pfill2)
  79. 1720 .byte 0,199
  80. 1730 .wor 0,319
  81. 1740 ; turn off the background screen
  82. 1750 ; (we're using that ram)
  83. 1760 ; insert our own routine into the
  84. 1770 ; db screen recover vector.
  85. 1780 lda disbuf
  86. 1790 and #%10111111 ;bit 6=background enable
  87. 1800 sta disbuf
  88. 1810 lda #<recovr ;our routine
  89. 1820 sta recvec   ;geos vector
  90. 1830 lda #>recovr
  91. 1840 sta recvec+1
  92. 1850 ;
  93. 1860 jsr $c1a2 ;i.framerectangle (pbox2)
  94. 1870 .byte 0,16
  95. 1880 .wor 144,319
  96. 1890 .byte $ff ;solid line
  97. 1900 ; print some user help info
  98. 1910 ; first draw the 'fake' icons
  99. 1920 jsr $c1ab ;i.bitmapup (cbox2)
  100. 1930 .wor iconch
  101. 1940 .byte 3,60,6,16
  102. 1950 jsr $c1ab
  103. 1960 .wor larrow
  104. 1970 .byte 3,84,3,16
  105. 1980 jsr $c1ab
  106. 1990 .wor rarrow
  107. 2000 .byte 3,108,3,16
  108. 2010 jsr $c1ab
  109. 2020 .wor iconsa
  110. 2030 .byte 3,132,6,16
  111. 2040 ; tell what they do
  112. 2050 jsr $c1ae ; i.putstring (dsptx2)
  113. 2060 .wor 24
  114. 2070 .byte 40, 24
  115. 2080 .asc "icon definer  v1.0"
  116. 2090 .byte 0
  117. 2100 jsr $c1ae
  118. 2110 .wor 24
  119. 2120 .byte 52
  120. 2130 .asc "by f. g. kostella for "
  121. 2140 .byte 14 ;underline on
  122. 2150 .asc "the transactor"
  123. 2160 .byte 15,0 ;off
  124. 2170 jsr $c1ae
  125. 2180 .wor 80
  126. 2190 .byte 72
  127. 2200 .asc "a photo album"
  128. 2210 .byte 0
  129. 2220 jsr $c1ae
  130. 2230 .wor 56
  131. 2240 .byte 96
  132. 2250 .asc "previous album record"
  133. 2260 .byte 0
  134. 2270 jsr $c1ae
  135. 2280 .wor 56
  136. 2290 .byte 120
  137. 2300 .asc "next album record"
  138. 2310 .byte 0
  139. 2320 jsr $c1ae
  140. 2330 .wor 80
  141. 2340 .byte 144
  142. 2350 .asc "current album record"
  143. 2360 .byte 0
  144. 2370 rts
  145. 2380 ;--- icons ---
  146. 2390 doicon =* ;put up icons
  147. 2400 lda #<myicon
  148. 2410 sta r0
  149. 2420 lda #>myicon
  150. 2430 sta r0+1
  151. 2440 jsr $c15a ; doicons (cboxes)
  152. 2450 rts
  153. 2460 ;
  154. 2470 myicon =* ;icon tables
  155. 2480 .byte 5,99,0,99 ; #, x&y pointer
  156. 2490 .wor iconch ;graphic pointer
  157. 2500 .byte 0,0,6,16 ;x,y,w,h dimensions
  158. 2510 .wor choose ;svc rtn pointer
  159. 2520 .wor iconex
  160. 2530 .byte 38,0,2,16
  161. 2540 .wor doexit
  162. 2550 .wor larrow
  163. 2560 .byte 6,0,3,16
  164. 2570 .wor dolast
  165. 2580 .wor rarrow
  166. 2590 .byte 9,0,3,16
  167. 2600 .wor donext
  168. 2610 .wor iconsa
  169. 2620 .byte 12,0,6,16
  170. 2630 .wor saveit
  171. 2640 ;--- icon service routines ---
  172. 2650 doexit =* ;quit application
  173. 2660 jmp $c22c ; enterdesktop (restrt)
  174. 2670 ;---
  175. 2680 choose =* ;choose a photo album
  176. 2690 jsr findfl ;put up file names
  177. 2700 cmp #2 ; cancel selected
  178. 2710 beq choos2
  179. 2720 lda #0 ; start with rec #0
  180. 2730 sta recnum
  181. 2740 jmp getit
  182. 2750 choos2 =*
  183. 2760 rts
  184. 2770 ;---
  185. 2780 donext =* ; next record
  186. 2790 inc recnum
  187. 2800 bpl donex2
  188. 2810 lda #0
  189. 2820 sta recnum
  190. 2830 donex2 =*
  191. 2840 jmp getit
  192. 2850 ;---
  193. 2860 dolast =* ; previous record
  194. 2870 dec recnum
  195. 2880 bpl getit
  196. 2890 lda #0
  197. 2900 sta recnum
  198. 2910 ;
  199. 2920 getit =* ; put up filename
  200. 2930 jsr doname
  201. 2940 jsr getrec ;and get the record
  202. 2950 rts
  203. 2960 ;---
  204. 2970 saveit =*
  205. 2980 jsr getfnm ;prompt for save name
  206. 2990 cmp #2 ;cancel selected
  207. 3000 beq save2
  208. 3010 jsr recbyt ;translate
  209. 3020 jsr savseq ;save to disk
  210. 3030 save2 =*
  211. 3040 rts
  212. 3050 ;--- setup & call db to get filename ---
  213. 3060 getfnm =* ;user enters name of file
  214. 3070 ;  clear out filename buffer
  215. 3080 ldy #16
  216. 3090 lda #0
  217. 3100 getfn2 =*
  218. 3110 sta svname,y
  219. 3120 dey
  220. 3130 bpl getfn2
  221. 3140 ;  r5 to hold selected name in db
  222. 3150 lda #<svname
  223. 3160 sta r5
  224. 3170 lda #>svname
  225. 3180 sta r5+1
  226. 3190 lda #<getndb ;addr of db table
  227. 3200 sta r0
  228. 3210 lda #>getndb
  229. 3220 sta r0+1
  230. 3230 jsr $c256 ; dodlgbox (window)
  231. 3240 lda r0 ; .a holds #2 if cancel
  232. 3250 rts ;return it to caller
  233. 3260 ;---
  234. 3270 ; db table
  235. 3280 getndb =* ;return save name in r5 pointer
  236. 3290 .byte $81 ;standard position
  237. 3300 .byte 2,16,68 ;cancel icon
  238. 3310 .byte 11,16,16 ; textstr cmnd
  239. 3320 .wor gnmstr ;  pointer
  240. 3330 .byte 13,16,30,$0c,16,0 ;getstr db cmnd ($0c = r5)
  241. 3340 ;
  242. 3350 gnmstr =*
  243. 3355 .byte 24
  244. 3360 .asc "please enter filename"
  245. 3370 .byte 27,0
  246. 3380 ;
  247. 3390 ;--- setup & call db to find photo albums on disk ---
  248. 3400 findfl =*
  249. 3410 ;  clear out the phname
  250. 3420 ldy #16
  251. 3430 lda #0
  252. 3440 fifl2 =*
  253. 3450 sta phname,y
  254. 3460 dey
  255. 3470 bpl fifl2
  256. 3480 ; search for this geos file type:
  257. 3490 lda #7 ; appl. data
  258. 3500 sta r7
  259. 3510 ; return selected file name in
  260. 3520 lda #<phname
  261. 3530 sta r5
  262. 3540 lda #>phname
  263. 3550 sta r5+1
  264. 3560 ; search for files with this
  265. 3570 ; permanant name
  266. 3580 lda #<permnm
  267. 3590 sta r10
  268. 3600 lda #>permnm
  269. 3610 sta r10+1
  270. 3620 lda #<ffildb ;addr of db table
  271. 3630 sta r0
  272. 3640 lda #>ffildb
  273. 3650 sta r0+1
  274. 3660 jsr $c256 ;dodlgbox
  275. 3670 lda r0
  276. 3680 rts ; r0 is in .a
  277. 3690 ;
  278. 3700 ; db table
  279. 3710 ffildb =*
  280. 3720 .byte $81 ;standard
  281. 3730 .byte 16,4,4 ; getfiles cmnd
  282. 3740 .byte 5,17,24 ; open icon
  283. 3750 .byte 2,17,72,0 ; cancel
  284. 3760 ;-----
  285. 3770 ; print filename to screen
  286. 3780 doname =*
  287. 3790 lda #9 ;horz lines
  288. 3800 jsr $c139
  289. 3810 jsr $c19f
  290. 3820 .byte 0,15
  291. 3830 .wor 145,303
  292. 3840 jsr $c1ae ;space, set pos.
  293. 3850 .wor 160
  294. 3860 .byte 10 ,32 ,0
  295. 3870 lda #<phname ;selected file
  296. 3880 sta r0
  297. 3890 lda #>phname
  298. 3900 sta r0+1
  299. 3910 jsr $c148
  300. 3920 lda #47 ;slash
  301. 3930 jsr $c145 ; putchar (dspchr)
  302. 3940 lda recnum ;record #
  303. 3950 sta r0
  304. 3960 lda #0
  305. 3970 sta r0+1
  306. 3980 lda #$c0 ;flush left
  307. 3990 jsr $c184 ; putdecimal (dspnum)
  308. 4000 lda #32 ;space
  309. 4010 jsr $c145
  310. 4020 rts
  311. 4030 ;---
  312. 4040 dogrid =* ;draw grid behind bitmap
  313. 4050 lda #16
  314. 4060 jsr $c139 ; setpattern
  315. 4070 jsr $c19f ; i-rectangle
  316. 4080 .byte 16,199
  317. 4090 .word 0,319
  318. 4100 rts
  319. 4110 ;--- error rtns ---
  320. 4120 norec =*
  321. 4130 jsr $c1ae ; i.putstring
  322. 4140 .word 110
  323. 4150 .byte 102
  324. 4160 .asc " empty record "
  325. 4170 .byte 0
  326. 4180 lda #1
  327. 4190 sta erflag
  328. 4200 jsr $c277 ;closerecordfile (vclose)
  329. 4210 rts
  330. 4220 ;--
  331. 4230 derror =* ;err # is in .a
  332. 4240 pha
  333. 4250 jsr $c1ae ; i-putstring
  334. 4260 .wor 110
  335. 4270 .byte 102
  336. 4280 .asc " -disk error- #"
  337. 4290 .byte 0
  338. 4300 pla
  339. 4310 pha
  340. 4320 sta r0
  341. 4330 lda #0
  342. 4340 sta r0+1
  343. 4350 lda #$c0 ;flush left
  344. 4360 jsr $c184 ; putdecimal (dspnum)
  345. 4370 lda #32
  346. 4380 jsr $c145
  347. 4390 lda #1
  348. 4400 sta erflag
  349. 4410 jsr $c277
  350. 4420 pla ; err 11 = too long
  351. 4430 cmp #11 ;was the record too long
  352. 4440 bne derr2
  353. 4450 jsr $c1ae ; i-putstring
  354. 4460 .word 110
  355. 4470 .byte 111
  356. 4480 .asc " -record too long- "
  357. 4490 .byte 0
  358. 4500 derr2 =*
  359. 4510 rts
  360. 4520 ;
  361. 4530 erflag .byte 0
  362. 4540 ;--- draw the photo ---
  363. 4550 drawph =* ;draw selected photo
  364. 4560 lda #>pstart
  365. 4570 sta r0+1
  366. 4580 lda #<pstart ;skips w/h
  367. 4590 sta r0
  368. 4600 lda #0 ; x bytes pos
  369. 4610 sta r1
  370. 4620 lda #16 ; y pixel pos
  371. 4630 sta r1+1
  372. 4640 lda pload ;width (at least 1)
  373. 4650 beq badmap ;not valid photo-might be the photo name strings
  374. 4660 cmp #40
  375. 4670 bcs badmap ;too wide
  376. 4680 sta r2
  377. 4690 lda pdepth ;height lo-byte only
  378. 4700 beq badmap ;not valid
  379. 4710 cmp #184
  380. 4720 bcs badmap ;too long
  381. 4730 sta r2+1
  382. 4740 jsr $c142 ;bitmapup (cbox)
  383. 4750 rts
  384. 4760 badmap =*
  385. 4770 jsr $c1ae ; i-putstring
  386. 4780 .word 110
  387. 4790 .byte 102
  388. 4800 .asc " -bad bitmap- "
  389. 4810 .byte 0
  390. 4820 rts
  391. 4830 ;----
  392. 4840 ; when exiting a db, this rtn is called twice
  393. 4850 ; to recover the db shadow & the db
  394. 4860 recovr =* ;called through $84b1
  395. 4870 lda rvflag
  396. 4880 bne norcvr ;call once
  397. 4890 lda #1
  398. 4900 sta rvflag
  399. 4910 jsr dogrid
  400. 4920 lda erflag
  401. 4930 bne nobmap ;is there a bitmap
  402. 4940 jsr drawph ;then display it
  403. 4950 nobmap =*
  404. 4960 rts
  405. 4970 norcvr =* ;reset on 2nd call
  406. 4980 lda #0
  407. 4990 sta rvflag
  408. 5000 rts
  409. 5010 rvflag .byte 0
  410. 5020 ;
  411. 5030 ;
  412. 5040 ;--- disk routines ---
  413. 5050 recnum .byte 0
  414. 5060 ;opendrive =* ;optional
  415. 5070 ;lda #8 ; drive
  416. 5080 ;jsr setdevice
  417. 5090 getrec =*
  418. 5100 jsr dogrid
  419. 5110 jsr $c2a1 ;opendisk (opndsk)
  420. 5120 lda #<phname ;name of album
  421. 5130 sta r0
  422. 5140 lda #>phname
  423. 5150 sta r0+1
  424. 5160 jsr $c274 ;openrecordfile (vopen)
  425. 5170 txa ;x=0 if no error
  426. 5180 beq grc1
  427. 5190 jsr derror
  428. 5200 rts
  429. 5210 grc1 =*
  430. 5220 lda recnum
  431. 5230 jsr $c280 ;pointrecord (goto)
  432. 5240 tya
  433. 5250 bne grc2 ;0 if empty
  434. 5260 jsr norec
  435. 5270 rts ;rec empty
  436. 5280 grc2 =*
  437. 5290 ; ok, now read it in
  438. 5300 lda #$15 ; max # of bytes (=sbegin-pload)
  439. 5310 sta r2+1
  440. 5320 lda #$d0
  441. 5330 sta r2
  442. 5340 lda #>pload ; load to address
  443. 5350 sta r7+1
  444. 5360 lda #<pload
  445. 5370 sta r7
  446. 5380 jsr $c28c ;readrecord (vload)
  447. 5390 ; .x hold error #
  448. 5400 txa
  449. 5410 beq grc3
  450. 5420 jsr derror
  451. 5430 rts
  452. 5440 grc3 =*
  453. 5450 ;r7=addr of first byte following the last byte read in
  454. 5460 lda r7 ;we'll use a4 as a pointer
  455. 5470 sta a4 ;(r7 is destroyed, a4 is reserved for our use)
  456. 5480 lda r7+1
  457. 5490 sta a4+1
  458. 5500 lda #0
  459. 5510 sta erflag ;if it (NULL)t this far!
  460. 5520 jsr drawph
  461. 5530 jsr $c277 ;closerecordfile (vclose)
  462. 5540 rts
  463. 5550 ;-----------------
  464. 5560 pcount .byte 0
  465. 5570 recbyt =*
  466. 5580 ; photo loaded at pload to the addr in a4 -1
  467. 5590 ; the bytes file will be saved from sbegin to a3
  468. 5600 ; set up a2 (photo pointer) & a3 (bytes pointer)
  469. 5610 lda #<pload
  470. 5620 sta a2
  471. 5630 lda #>pload
  472. 5640 sta a2+1
  473. 5650 lda #<sbegin
  474. 5660 sta a3
  475. 5670 lda #>sbegin
  476. 5680 sta a3+1
  477. 5690 ldy #0
  478. 5700 sty pcount
  479. 5710 xbyt1 =* ;loop
  480. 5720 lda pcount
  481. 5730 and #$0f
  482. 5740 bne xbyt2 ; every 16 bytes, start a new line
  483. 5750 lda #13 ;eol
  484. 5760 jsr addchr
  485. 5770 lda #46 ;period
  486. 5780 jsr addchr
  487. 5790 lda #66 ;b
  488. 5800 jsr addchr
  489. 5810 lda #89 ;y
  490. 5820 jsr addchr
  491. 5830 lda #84 ;t
  492. 5840 jsr addchr
  493. 5850 lda #32 ;spc
  494. 5860 jsr addchr
  495. 5870 jmp xbyt3
  496. 5880 ;
  497. 5890 xbyt2 =* ;use a comma
  498. 5900 lda #44
  499. 5910 jsr addchr
  500. 5920 xbyt3 =*
  501. 5930 inc pcount
  502. 5940 lda (a2),y ;index into photo file
  503. 5950 jsr bythex
  504. 5960 jsr inca2
  505. 5970 jsr cmpa24 ;done yet
  506. 5980 bcc xbyt1
  507. 5990 lda #13
  508. 6000 jsr addchr
  509. 6010 lda #13
  510. 6020 sta (a3),y
  511. 6030 lda #<sbegin ;save start in header
  512. 6040 sta sstart
  513. 6050 lda #>sbegin
  514. 6060 sta sstart+1
  515. 6070 lda a3 ;save end in header
  516. 6080 sta seqend
  517. 6090 lda a3+1
  518. 6100 sta seqend+1
  519. 6110 rts
  520. 6120 ;
  521. 6130 ; translate a byte into hex format
  522. 6140 bythex pha ; save byte
  523. 6150 lda #36
  524. 6160 jsr addchr
  525. 6170 pla
  526. 6180 pha
  527. 6190 lsr ; move hi-nybble into low
  528. 6200 lsr
  529. 6210 lsr
  530. 6220 lsr
  531. 6230 jsr fndasc ;returns with ascii char in .a
  532. 6240 jsr addchr ;write it to buffer
  533. 6250 pla ;get original byte
  534. 6260 jsr fndasc
  535. 6270 jsr addchr ;write it
  536. 6280 rts
  537. 6290 ;----
  538. 6300 fndasc =*;  returns ascii for 4 lsb in .a
  539. 6310 and #$0f ;clear 4 hibits
  540. 6320 cmp #$0a ; >9 print
  541. 6330 bmi find1
  542. 6340 adc #$06 ; it's a-f ; +$36
  543. 6350 find1 =*; if it's 0-9, add $30 to convert to ascii
  544. 6360 adc #$30
  545. 6370 rts
  546. 6380 ;
  547. 6390 addchr =*; add char in .a to the byte (file) buffer
  548. 6400 sta (a3),y
  549. 6410 jsr inca3
  550. 6420 rts
  551. 6430 ;
  552. 6440 inca2 inc a2
  553. 6450 bne xia2
  554. 6460 inc a2+1
  555. 6470 xia2 rts
  556. 6480 ;
  557. 6490 inca3 inc a3
  558. 6500 bne xia3
  559. 6510 inc a3+1
  560. 6520 xia3 rts
  561. 6530 ;
  562. 6540 cmpa24 =*
  563. 6550 ; if a2 >or= a4 then we've exceeded the eof so set .carry
  564. 6560 ; if < then return with .carry clear
  565. 6570 ;
  566. 6580 sec
  567. 6590 lda a2
  568. 6600 sbc a4
  569. 6610 sta xxtemp
  570. 6620 lda a2+1
  571. 6630 sbc a4+1
  572. 6640 ora xxtemp ;flags set
  573. 6650 rts
  574. 6660 ;
  575. 6670 xxtemp .byte 0
  576. 6680 ;
  577. 6690 ;-------
  578. 6700 savseq =*
  579. 6710 lda #<header ;header block for file
  580. 6720 sta r9
  581. 6730 lda #>header
  582. 6740 sta r9+1
  583. 6750 lda #0
  584. 6760 sta r10
  585. 6770 jsr $c1ed ;savefile (save)
  586. 6780 rts
  587. 6790 ;
  588. 6800 ;--- icon graphics ---
  589. 6810 iconex =* ;exit icon
  590. 6820 .byte 160,255,255,0,0,255,255,128,1,128,1,128,1
  591. 6830 .byte 143,241,143,241,143,241,128,1,128
  592. 6835 .byte 1,128,1,255,255,0,0,255,255,0,0
  593. 6840 ; the icons below were "grabbed"
  594. 6850 ; with an earlier version of this
  595. 6860 ; program.
  596. 6870 iconch =* ;choose icon
  597. 6880 .byte$05,$ff,$82,$fe,$80,$04,$00,$82
  598. 6885 .byte $03,$80,$04,$00,$b8,$03,$8f,$98
  599. 6890 .byte $00,$00,$00,$03,$98,$d8,$00,$00
  600. 6895 .byte $00,$03,$98,$1f,$1e,$3c,$78,$f3
  601. 6900 .byte $98,$1d,$b3,$66,$cd,$9b,$98,$19
  602. 6905 .byte $b3,$66,$c1,$9b,$98,$19,$b3,$66
  603. 6910 .byte $79,$fb,$98,$19,$b3,$66,$0d,$83
  604. 6915 .byte $98,$d9,$b3,$66,$cd,$9b,$8f,$99
  605. 6920 .byte $9e,$3c,$78,$f3,$80,$04,$00,$82
  606. 6925 .byte $03,$80,$04,$00,$81,$03,$06,$ff
  607. 6930 .byte $81,$7f,$05,$ff
  608. 6940 ;
  609. 6950 iconsa =* ;save icon
  610. 6960 .byte $05,$ff,$82,$fe,$80,$04,$00,$82
  611. 6965 .byte $03,$80,$04,$00,$b8,$03,$80,$1f
  612. 6970 .byte $00,$00,$00,$03,$80,$31,$80,$00
  613. 6975 .byte $00,$03,$80,$30,$1e,$66,$78,$03
  614. 6980 .byte $80,$30,$33,$66,$cc,$03,$80,$1f
  615. 6985 .byte $1f,$66,$cc,$03,$80,$01,$b3,$3c
  616. 6990 .byte $fc,$03,$80,$01,$b3,$3c,$c0,$03
  617. 6995 .byte $80,$31,$b3,$18,$cc,$03,$80,$1f
  618. 7000 .byte $1f,$18,$78,$03,$80,$04,$00,$82
  619. 7005 .byte $03,$80,$04,$00,$81,$03,$06,$ff
  620. 7010 .byte $81,$7f,$05,$ff
  621. 7020 ;
  622. 7030 larrow =* ;left arrow icon
  623. 7040 .byte $b0,$ff,$ff,$ff,$80,$00,$03,$80
  624. 7045 .byte $00,$03,$80,$00,$03,$80,$40,$03
  625. 7050 .byte $81,$c0,$03,$87,$ff,$f3,$9f,$ff
  626. 7055 .byte $f3,$87,$ff,$f3,$81,$c0,$03,$80
  627. 7060 .byte $40,$03,$80,$00,$03,$80,$00,$03
  628. 7065 .byte $80,$00,$03,$ff,$ff,$ff,$7f,$ff,$ff
  629. 7070 ;
  630. 7080 rarrow =* ;right arrow icon
  631. 7090 .byte $b0,$ff,$ff,$fe,$80,$00,$03,$80
  632. 7095 .byte $00,$03,$80,$00,$03,$80,$04,$03
  633. 7100 .byte $80,$07,$03,$9f,$ff,$c3,$9f,$ff
  634. 7105 .byte $f3,$9f,$ff,$c3,$80,$07,$03,$80
  635. 7110 .byte $04,$03,$80,$00,$03,$80,$00,$03
  636. 7115 .byte $80,$00,$03,$ff,$ff,$ff,$7f,$ff,$ff
  637. 7120 ;
  638. 7130 permnm =*  ;find any version
  639. 7140 ;.asc "photo album "
  640. 7141 .byte $70,$68,$6f,$74,$6f,$20,$61,$6c,$62,$75,$6d,$20
  641. 7150 .byte 0 ;(version not included)
  642. 7160 ;  the new photo album (v2.1) stores the
  643. 7170 ;  names of the individual photos as the
  644. 7180 ;  last used record.
  645. 7190 ;  use: .asc "photo album v1.0"
  646. 7200 ;  to read the older versions exclusively.
  647. 7210 ;  use: .asc "photo album v2.1"
  648. 7220 ;  to read the newer version.
  649. 7230 ;
  650. 7240 phname .byte 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ;selected photo album
  651. 7250 svname .byte 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ;user entered name
  652. 7260 ;---------------------------
  653. 7270 ; this header is saved along with the file
  654. 7280 header =*
  655. 7290 .wor svname
  656. 7300 .byte 3,21 ,$bf ; 3x21 icon
  657. 7310 .byte $ff,$ff,$ff,$80,0,1,$80,0,1,$80
  658. 7315 .byte 0,1,$80,0,1,$80,0,1,$80,0,1,$80,0,1
  659. 7320 .byte $80,0,1,$80,0,1,$80,0,1,$80,0,1,$80
  660. 7325 .byte 0,1,$80,0,1,$80,0,1,$80,0,1,$80,0,1
  661. 7330 .byte $80,0,1,$80,0,1,$80,0,1,$ff,$ff,$ff
  662. 7335 ;this icon is just a square outline
  663. 7340 ; save the file as a c= seq
  664. 7350 .byte $81 ;  c= seq
  665. 7360 ; actually, when the kernal writes
  666. 7370 ; the file to disk, it wont save
  667. 7380 ; the header to disk
  668. 7390 ; when it sees the next
  669. 7400 ; byte, a filetype of non-geos.
  670. 7410 .byte 0 ; non-geos/alternately use 3 for data
  671. 7420 .byte 0 ; geos seq
  672. 7430 ; next two words placed by translate rtn
  673. 7440 sstart =*
  674. 7450 .wor 0 ; start addr
  675. 7460 seqend =*
  676. 7470 .wor 0,0 ; end addr, jump addr
  677. 7480 .asc "icon definerv1.0"
  678. 7490 .byte 0,0,0,0
  679. 7500 ;
  680. 7510 .asc "f. g. kostella  "
  681. 7520 .byte 0,0,0,0
  682. 7530 ;
  683. 7540 *=*+139
  684. 7550 endcod =* ;specified in header
  685. 7560 .end
  686.