Zooming out drew fifty rows DOWN from the world's origin, which put exactly the same sky on the screen as before with twice as much moon under it. Measured: 47 per cent rock zoomed in and 71 per cent zoomed out. A zoom that shows you more of the thing you cannot fly through is not worth a button. The eighty column screen is fifty rows and the flyable band is thirty - the ceiling is eight rows above the origin and the deepest valley is twenty two below it - so the twenty rows a zoom buys have to go somewhere. They go above. The wide view starts twenty four rows over the origin, the ground sits near the bottom, and the whole band is on the screen: 23 per cent rock instead of 71. Which needed three things. The moon is drawn from row minus twenty four rather than from nought, because rows above the origin are sky by definition and because whatever the shell left in them is otherwise still there. The row origin comes out of the view block like every other screen number. And the lander's own Y moves with the view, which meant making toPixels' answer SIGNED at last: it masks to twelve bits, so a lander above the origin came back as a large positive number rather than a small negative one - harmless while such a lander was off the picture either way, and wrong the moment the view moved up to include it. That is the point of the button. A lander at the ceiling is off the top of a forty column screen, which is where the orbit lives and why the altitude bar had to exist; zoomed out it is at row 149 and you can watch the whole orbit. Four checks, and the proportion is deliberately not on its own: measured alone it passes for a moon floating over a void, because pointing the view back at the origin leaves the rows under the terrain simply never drawn, and black counts as sky. Both breaks that matter went straight through it. What catches them is that the ground has to reach the bottom of the screen and the sky has to be empty - the latter only on a shell scrolled a hundred and eighteen lines deep, since that is what it takes to get anything into the rows the wide view moves into. The tap fixture also moved to frame 100. Fifty rows of moon take longer to draw than twenty five, and a six frame tap at frame thirty now lands before the program is reading a controller at all, which reads exactly like a button that has stopped working.
133 lines
3.3 KiB
Plaintext
133 lines
3.3 KiB
Plaintext
CosmOS
|
|
> monitor
|
|
x examine, d disassemble, a assemble, s set, b bank, g go, exit leaves
|
|
* b nonsense
|
|
b <program|data|number>
|
|
* b 9
|
|
there is no such bank
|
|
* load greet.sbx
|
|
loaded, starting at 5000
|
|
* b program
|
|
bank 00
|
|
* d 5000
|
|
5000 47 00 30 00 SETD.0 3000
|
|
5004 72 10 SWI 10
|
|
5006 47 00 30 44 SETD.0 3044
|
|
500A 72 10 SWI 10
|
|
500C 47 00 30 7A SETD.0 307A
|
|
5010 27 1F INIB 1F
|
|
5012 72 11 SWI 11
|
|
5014 47 00 30 5D SETD.0 305D
|
|
* x 5000
|
|
5000 47 00 30 00 72 10 47 00 30 44 72 10 47 00 30 7A G.0.r.G.0Dr.G.0z
|
|
5010 27 1F 72 11 47 00 30 5D 72 10 47 00 30 7A 72 10 '.r.G.0]r.G.0zr.
|
|
5020 47 00 30 65 72 10 20 72 12 00 00 00 00 00 00 00 G.0er. r........
|
|
5030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
|
|
* b data
|
|
bank 01
|
|
* x 3000
|
|
3000 61 20 70 72 6F 67 72 61 6D 2C 20 6C 6F 61 64 65 a program, loade
|
|
3010 64 20 6F 66 66 20 61 20 64 69 73 6B 2C 20 72 75 d off a disk, ru
|
|
3020 6E 6E 69 6E 67 20 6F 6E 20 74 68 65 20 73 79 73 nning on the sys
|
|
3030 74 65 6D 20 74 68 61 74 20 6C 6F 61 64 65 64 20 tem that loaded
|
|
* b 2
|
|
bank 02
|
|
* x 0
|
|
0000 01 FF 00 00 00 00 00 00 01 FF 00 00 00 00 00 00 ................
|
|
0010 03 FF 08 00 00 00 00 00 01 20 01 00 00 00 00 00 ......... ......
|
|
0020 00 FF 00 00 00 00 00 00 00 FF 00 00 00 00 00 00 ................
|
|
0030 00 FF 00 00 00 00 00 00 00 FF 00 00 00 00 00 00 ................
|
|
* s 0 FF
|
|
that bank will not be written
|
|
* b program
|
|
bank 00
|
|
* s 8000 26 48 D1 00 26 0A D1 00 18 12
|
|
* d 8000
|
|
8000 26 48 INIA 48
|
|
8002 D1 00 OUTA 00
|
|
8004 26 0A INIA 0A
|
|
8006 D1 00 OUTA 00
|
|
8008 18 SHR
|
|
8009 12 AND
|
|
800A 00 ?
|
|
800B 00 ?
|
|
* g 8000
|
|
H
|
|
that byte is not an instruction, at 800A
|
|
A 85 B 3F Q 05
|
|
the program was stopped
|
|
* d 8000
|
|
8000 26 48 INIA 48
|
|
8002 D1 00 OUTA 00
|
|
8004 26 0A INIA 0A
|
|
8006 D1 00 OUTA 00
|
|
8008 18 SHR
|
|
8009 12 AND
|
|
800A 00 ?
|
|
800B 00 ?
|
|
* b data
|
|
bank 01
|
|
* s 8100 68 65 6C 6C 6F 2C 20 74 79 70 65 64 0A 00
|
|
* b program
|
|
bank 00
|
|
* a 8200
|
|
8200: SETD.0 8100
|
|
8204: SWI 10
|
|
8206: lda.2
|
|
8208: LDD.0.1
|
|
820B: frobnicate
|
|
no such instruction
|
|
820B: INIA
|
|
that one needs a value after it
|
|
820B: SWI 12
|
|
820D: .
|
|
* d 8200
|
|
8200 47 00 81 00 SETD.0 8100
|
|
8204 72 10 SWI 10
|
|
8206 42 02 LDA.2
|
|
8208 4A 00 01 LDD.0.1
|
|
820B 72 12 SWI 12
|
|
820D 00 ?
|
|
820E 00 ?
|
|
820F 00 ?
|
|
* g 8200
|
|
hello, typed
|
|
finished
|
|
* exit
|
|
> dir
|
|
greet.sbx 211
|
|
hello.sbx 53
|
|
Life.sbx 1396
|
|
Snake.sbx 2164
|
|
Keys.sbx 664
|
|
Say.sbx 156
|
|
Break.sbx 149
|
|
Grid.sbx 571
|
|
Press.sbx 872
|
|
Mode.sbx 48
|
|
Flip.sbx 173
|
|
Sprite.sbx 442
|
|
Depth.sbx 672
|
|
Lander.sbx 5365
|
|
Pad.sbx 264
|
|
Crash.sbx 632
|
|
vars.script 50
|
|
blocks.script 343
|
|
loops.script 272
|
|
tune.sbx 306
|
|
notes.txt 21
|
|
Apps <dir>
|
|
hi.script 121
|
|
bad.script 45
|
|
plain.script 24
|
|
cross.script 280
|
|
nonl.script 38
|
|
outer.script 376
|
|
inner.script 44
|
|
loop.script 35
|
|
29 files, 1 directory
|
|
> exit
|
|
halted
|
|
Execution halted.
|
|
[exit 0]
|