home *** CD-ROM | disk | FTP | other *** search
/ Brotikasten / BROTCD01.iso / geos / geos9.d64 / source < prev    next >
Text File  |  1995-08-05  |  5KB  |  283 lines

  1. ;START OF SPELUNKER CODE
  2. ;├AVE-─WELLERS ╒NITE- GO ╙PELUNKING!
  3. ; ╘╚╔╙ ╨╥╧╟╥┴═ ╔╙ ╔╬ ╬╧ ╫┴┘ ╥┼╠┴╘┼─
  4. ; ╘╧ ┴ ╟┴═┼ ╧╞ ╘╚┼ ╙┴═┼ ╘╔╘╠┼!
  5. ; ╔╘'╙ ╬┴═┼ ├╧═┼╙ ╞╥╧═ ╘╚┼ ─╔├╘╔╧╬┴╥┘
  6. ; ─┼╞╔╬╔╘╔╧╬ ╧╞ "╙╨┼╠╒╬╦┼╥." ┴╨╥
  7. .OPT ERRORS NOLIST NOGENERATE
  8. .PAGE 'SPELUNKER V1.0'
  9. .LIB REGS
  10. * = $4000 ;ORG ON TOP OF ─ESK╘OP 
  11.  LDA #128
  12.  STA $2F ;ONLY WRITE TO FOREGROUND
  13.  LDA #0
  14.  JSR $C139 ;SETPATTERN
  15.  LDA #0
  16.  JSR $C19F ;I'RECTANGLE
  17. .BYTE 0
  18. .BYTE 199 ; WINDOW SIZE IS WHOLE SCREEN
  19. .WORD 0
  20. .WORD 319
  21.  LDA #<ICONS
  22.  STA R0L
  23.  LDA #>ICONS
  24.  STA R0H ; LOAD ADDRESS OF ICONS INTO ╥0
  25.  JSR $C15A ;DOICONS
  26.  LDA #<MENUS
  27.  STA R0L
  28.  LDA #>MENUS
  29.  STA R0H ; LOAD ADDRESS OF MENUS INTO ╥0
  30.  LDA #0
  31.  JSR $C151 ;DOMENU
  32.  LDA #0
  33.  STA A2L
  34.  STA A2H ;A2 CONTAINS WORKING ADDRESS
  35.  STA A3H
  36.  LDA #128
  37.  STA A3L ;A3 HAS # TO ADD OR SUBTRACT
  38.  JSR PUTUPD ;PUT UP DATA
  39.  LDA #<PUTUPD
  40.  STA $84B1
  41.  LDA #>PUTUPD
  42.  STA $84B2 ;MAKE RECOVER VECTOR POINT TO ME
  43.  RTS ;GO VISIT ╟┼╧╙ ═AINLOOP
  44. ;DATA STRUCTURE FOR SPELUNKER ICONS
  45. X9POS9 = 36
  46. Y9POS9 = 50
  47. ICONS
  48. .BYTE 2
  49. .WORD 160
  50. .BYTE 100
  51. .WORD UPARRO ;ADD 128 TO CURRENT LOCATION
  52. .BYTE X9POS9
  53. .BYTE Y9POS9
  54. .BYTE 2,16
  55. .WORD GOUP ;SERVICE ROUTINE
  56. ; DOWNARROW ;SUBTRACT 128 FROM CURRENT LOCATION
  57. .WORD DOWNAR
  58. .BYTE X9POS9
  59. .BYTE Y9POS9+32
  60. .BYTE 2,16
  61. .WORD GODOWN ;ROUTINE FOR SUBTRACTING 128
  62. ;DONE WITH ICON STRUCTURE
  63. ; NOW PUT DATA FOR ICONS
  64. UPARRO
  65. .BYTE 160 ;REMEMBER THE COMPACTION FORMAT
  66. .BYTE 0,0,1,128,3,192,7,224,15,240,31,248,63,252,127,254,7,224
  67. .BYTE 7,224,7,224,7,224,7,224,7,224,7,224,7,224
  68. DOWNAR
  69. .BYTE 160
  70. .BYTE 7,224,7,224,7,224,7,224,7,224,7,224,7,224,7,224
  71. .BYTE 127,254,63,252,31,248,15,240,7,224,3,192,1,128,0,0
  72.  ; SORRY THEY'RE NOT COMPACTED YET
  73. MENUS
  74. .BYTE 0,15
  75. .WORD 0,53
  76. .BYTE 1
  77. .WORD LEFTM
  78. .BYTE $80 ;SUBMENU
  79. .WORD UNLEFT ;WORD FOR UNDER THE LEFT MENU
  80. LEFTM
  81. .BYTE 'SPELUNKER',0
  82. UNLEFT
  83. .BYTE 16,45
  84. .WORD 0,53
  85. .BYTE $82
  86. .WORD ABOUT
  87. .BYTE 0 ;MENU ACTION
  88. .WORD DOABOU ;ROUTINE FOR MY NAME
  89. .WORD QUIT
  90. .BYTE 0
  91. .WORD DOQUIT ;RESTORE APPLICATION MAINLOOP
  92. ABOUT 
  93. .BYTE 'ABOUT...',0
  94. QUIT 
  95. .BYTE 'QUIT',0
  96. DOABOU ;WARNING TO ALL! ─ON'T USE A 
  97.        ;DIALOG BOX INSIDE A ─ESK ┴CC.!
  98.  LDA #0
  99.  JSR $C139 ;SET SYSTEM PATTERN
  100.  JSR $C19F ;INLINE CALL TO ╥ECTANGLE
  101.  .BYTE 32,127
  102.  .WORD 64,255 ;MAKE A BOX LIKE A ─IALOG
  103.  JSR $C1A2 ;TO INLINE ╞RAME╥ECTANGLE
  104.  .BYTE 32,127
  105.  .WORD 64,255 ;WHO WOULD HAVE GUESSED?
  106.  .BYTE 1 ;FOR A BLACK BACKGROUND.
  107.  LDA #<MYSTR
  108.  STA R0L
  109.  LDA #>MYSTR
  110.  STA R0H
  111.  LDA #64
  112.  STA R1H
  113.  LDA #100
  114.  STA R11L
  115.  LDA #0
  116.  STA R11H
  117.  JSR $C148 ;PUT UP MY NAME ANYWAY!
  118. WAIT1 JSR $C2A7 ;THIS CALL KILLS ═R. ═OUSE
  119.  CMP #0
  120.  BEQ WAIT1 ;WAIT FOR ╦EY╨RESS
  121.  JSR PUTUPD
  122.  JSR $C18A ;RESSURECT THE ═OUSE
  123.  RTS
  124. MYSTR
  125.  .BYTE 24,'SPELUNKER V1.0 (C) 1987'
  126.  .BYTE 24,22,100,0,80,'ANTHONY P. REYNOLDS'
  127.  .BYTE 27,22,100,0,94,'BETA TEST VERSION'
  128.  .BYTE 24,22,100,0,110,'PRESS ANY KEY....',27,0
  129. DOQUIT JSR PUTUPD
  130.  JSR $C1BD
  131.  LDA #192
  132.  STA $2F
  133.  JMP $C23E; IF THIS IS REALLY A RESTORE...
  134.           ;THIS SHOULD RETURN US TO GEOS
  135.           ;FROM WHEREVER WE CAME
  136. PUTUPD
  137.  LDA #0
  138.  JSR $C139 ;SET PATTERN FOR DATA AREA
  139.  LDA #0
  140.  JSR $C19F ;PUT UP AN AREA FOR THE DATA
  141.            ;MUST BE BIG ENOUGH TO HOLD 16 ROWS AND 8 BYTES/ROW PLUS SOME
  142.            ; SO MAKE IT AT 16,180,0,280
  143. .BYTE 16,180
  144. .WORD 0,280
  145.  LDA #<BUFFER
  146.  STA A1
  147.  LDA #>BUFFER
  148.  STA A1H
  149.  LDA A2
  150.  STA A5L
  151.  LDA A2H
  152.  STA A5H ;MAKE BYTES POINT TO ADDRESS
  153.  JSR ENTRY ;FILL A BUFFER
  154.  LDA #0
  155.  JSR STORIT ;TERMINATE BUFFER WITH A 0
  156.  JSR WRTOUT ;WRITE IT OUT
  157.  RTS ;GO BACK
  158. JUMPTO RTS
  159. GOUP CLC ;CLEAR CARRY
  160.  LDA A2L
  161.  ADC A3L
  162.  STA A2L
  163.  LDA A2H
  164.  ADC A3H
  165.  STA A2H
  166.  JSR PUTUPD
  167.  RTS ;ADDED 128 TO CURRENT LOCATION
  168. GODOWN SEC
  169.  LDA A2L
  170.  SBC A3L
  171.  STA A2L
  172.  LDA A2H
  173.  SBC A3H
  174.  STA A2H
  175.  JSR PUTUPD
  176.  RTS ;SUBTRACTED 128 FROM CURRENT LOCATION
  177. NIBBLE AND #$F
  178.  STX A4L ;SOME LOCATION
  179.  TAX
  180.  LDA LTTRS,X
  181.  LDX A4L
  182. STORIT STY A4L ;ANYPLACE
  183.  LDY #0
  184.  STA (A1),Y ;AT ADDRESS (A1)+Y
  185.  LDY A4L ;GET IT BACK
  186.  INC A1
  187.  BNE CONT
  188.  INC A1H
  189. CONT RTS
  190. LTTRS .BYTE '0123456789ABCDEF'
  191. ENTRY LDY #0
  192. TOP TYA
  193.  CMP #16
  194.  BEQ FINI
  195.  JSR ADDRS
  196.  STY A6L
  197.  LDY #0
  198.  LDX #0
  199. STILLG TYA
  200.  CMP #8
  201.  BEQ FIRSTH
  202.  LDA (A5L),Y ;REMEMBER TO SET UP 'BYTES'
  203.              ;TO POINT TO THE SAME THING
  204.              ;AS A2 BEFORE ENTRY
  205.  ROR A
  206.  ROR A
  207.  ROR A
  208.  ROR A ;ROTATE TOP 4 INTO BOTTOM 4
  209.  JSR NIBBLE ;TRANSLATE AND STORE
  210.  LDA (A5L),Y
  211.  JSR NIBBLE ;TRANSLATE AND STORE
  212.  INY
  213.  JMP STILLG
  214. FIRSTH LDX #0
  215.  LDA #32
  216.  JSR STORIT ;PUT A SPACE
  217.  LDY #0
  218. ASCII TXA
  219.  CMP #8
  220.  BEQ CARRET ;EOL, PUT A ├╥
  221.  LDA (A5L),Y
  222.  JSR FIXVAL
  223.  JSR STORIT
  224.  INC A5L
  225.  BNE CONT1
  226.  INC A5H
  227. CONT1 INX
  228.  JMP ASCII
  229. CARRET LDA #13 ;├╥
  230.  JSR STORIT
  231.  LDY A6L
  232.  INY
  233.  JMP TOP
  234. FINI RTS
  235. WRTOUT LDA #<BUFFER
  236.  STA R0
  237.  LDA #>BUFFER
  238.  STA R0H
  239.  LDA #25
  240.  STA R1H
  241.  LDA #0
  242.  STA R11L
  243.  STA R11H
  244.  JSR $C148 ;PUT THE WHOLE BUFFER!
  245.            ;IT'S A STRING! (HOPEFULLY)
  246.  RTS
  247. ADDRS LDA A5H
  248.  ROR A
  249.  ROR A
  250.  ROR A
  251.  ROR A ;ROTATE 4 BITS
  252.  JSR NIBBLE
  253.  LDA A5H
  254.  JSR NIBBLE
  255.  LDA A5L
  256.  ROR A
  257.  ROR A
  258.  ROR A
  259.  ROR A
  260.  JSR NIBBLE
  261.  LDA A5L
  262.  JSR NIBBLE
  263.  LDA #':
  264.  JSR STORIT
  265.  RTS ;RETURN FROM STORING ADDRESS
  266. BUFFER
  267. *=*+600 ;LEAVE A NICE BIG BUFFER
  268. FIXVAL CMP #32 ;ROUTINE TO FIX ┴
  269.  BCS SECOND    ;IF NOT PRINTABLE
  270.  LDA #'.
  271.  JMP GOBACK
  272. SECOND CMP #98 ;TEST IF =>127
  273.  BCS THIRD
  274.  RTS
  275. THIRD LDA #'.
  276. GOBACK RTS ;THAT'S THE END OF THE
  277.            ;LOBOTIMIZED VERSION....
  278.            ;SEND $$$$ FOR THE GOODIE.
  279.            ; ╘ONY ╥EYNOLDS
  280.            ;╨.╧. ┬OX 3079
  281.            ;╒NIVERSITY , ═╙ 38677
  282.            ;"╘ELL 'EM ╟RANDMA SENT YA!"
  283.