Meta tags:
Headings (most frequently used words):
commands, process, explosion, command, music, sound, ufo, start, bug, code, dac, samples, scripts, end, reaching, goal, space, plant, flying, background, missile, pass, point, coin, jump, congratulations, car, loop, nmi, timer, irq1, request, c_sweep_voice_register, c_sweep_voice_pair, c_register_samples, c_toggle_register, simple, call, stop, return, 01, 0f, 10, 13, 14, 15, 17, 18, 1f, vectors,
Text of the page (most frequently used words):
register (333), ay0 (328), voice (103), lda (79), set_volume_and_reset_decay (76), #command (71), value (71), for (63), coarse (57), ay1 (57), fine (56), the (53), sta (51), script (49), threetone (45), journal (44), code (43), and (41), ramuse (41), ldb (38), write (38), pointer (37), jsr (36), return (36), volume (36), sound (35), ldx (34), call (34), counter (30), txt (30), sequence (29), process (26), next (26), test (26), cas (26), beq (25), bit (25), off (24), seqv0 (24), stb (24), c_sweep_voice_register (24), sequencer (23), hardware (23), stop (23), get (23), all (22), timebetween (22), curseqptr (21), retister (21), numsteps (21), initfreq (21), deltafreq (21), set (20), decrement (20), nmi (19), rts (19), done (19), clr (19), yes (19), chip (19), stx (18), commands (18), inx (18), mixer (18), explosion (18), number (17), store (17), interrupts (17), dec (17), bne (16), turn (15), bpl (15), force (14), control (14), fragment (14), restore (13), from (13), cmpb (13), inc (13), new (13), music (13), mixer_and (13), with (12), start (12), hold (12), samples (12), jmp (12), bytes (12), sounds (11), tick (11), incb (11), 801 (11), continue (11), current (11), mixer_or (11), tone (10), cmpa (10), sample (10), anda (10), bmi (10), skip (10), bra (10), bits (10), lsra (10), port2 (10), vector (9), this (9), curmix1 (9), clear (9), address (9), delta (9), car (9), 165 (9), 110 (9), 221 (9), ora (8), out (8), andb (8), disable (8), curvoice (8), lines (8), ufo (8), 96550445103858 (8), 09916338582677 (8), 06867588932806 (8), sequencer0 (8), pdf (8), timer (7), curmix0 (7), bug (7), status (7), time (7), strmstatus (7), nmitick (7), fcde (7), again (7), jump (7), inca (7), series (7), read (7), 802 (7), 37168630338734 (7), 147 (7), 124 (7), 10_111_111 (6), pula (6), mode (6), not (6), port (6), scripts (6), fcdd (6), handle (6), cli (6), byte (6), rval (6), cpu (6), sei (6), port1 (6), each (6), 11_111_110 (6), missile (6), 96395502645504 (6), 56653674832963 (6), 196 (6), space (6), dac (6), soundcode (6), soundramuse (6), soundhardware (6), defender (6), irq2 (5), irq1 (5), reset (5), fcad (5), ram (5), above (5), lower (5), back (5), table (5), ptr801 (5), brdstatus (5), volume_decay_speed (5), point (5), original (5), count (5), fdef (5), used (5), i94 (5), i98 (5), cnt (5), fddc (5), main (5), save (5), ticks (5), active (5), loop (5), congratulations (5), f92d (5), coin (5), 00_000_001 (5), background (5), f59f (5), 93794014084506 (5), goal (5), abc (5), asm (5), vectors (4), psha (4), fc98 (4), now (4), ignore (4), played (4), tab (4), wait (4), lslb (4), enable (4), fed4 (4), end (4), reload (4), channel (4), type (4), always (4), never (4), bcs (4), even (4), fdd1 (4), c_register_samples (4), carry (4), bug1 (4), c_sweep_voice_pair (4), upper (4), memory (4), rti (4), pshb (4), second (4), fd53 (4), fd3a (4), sndcmd (4), rom (4), ptr802 (4), 11_111_000 (4), 00_000_111 (4), f5f4 (4), 117 (4), 104 (4), flying (4), plant (4), reaching (4), phoenixj (4), output (3), flag (3), pshx (3), seqptr1 (3), what (3), seqptr2 (3), tied (3), seqptr4 (3), use (3), already (3), running (3), seqptr3 (3), ff3c (3), deca (3), abx (3), offset (3), bytecnt801 (3), lastcmd (3), std (3), then (3), mask (3), tba (3), pair (3), word (3), envelope (3), shape (3), adda (3), tmpfreq (3), odd (3), c_toggle_register (3), fda5 (3), add (3), bcc (3), d000 (3), irq (3), decb (3), delay (3), during (3), into (3), request (3), less (3), than (3), fd0f (3), fd51 (3), fd20 (3), ddr1 (3), fcd8 (3), processing (3), 4000hz (3), same (3), dex (3), last (3), voices (3), pass (3), fc77 (3), fc6d (3), fc63 (3), fc59 (3), sndproctmr (3), nmitick2 (3), cursamp802 (3), cursamp801 (3), fbd1 (3), f946 (3), f879 (3), one (3), seconds (3), song (3), through (3), f6a2 (3), 25445492662473 (3), 73852996254682 (3), 248 (3), 57944444444445 (3), f4cd (3), sequencer1 (3), after (3), other (3), bank7 (3), bank3 (3), bank2 (3), bank1 (3), invaders (3), jpg (3), capture (2), swi (2), here (2), but (2), pulx (2), seq1cmdtype (2), processcommands18 (2), matter (2), seq2cmdtype (2), ff60 (2), seq4cmdtype (2), available (2), restart (2), higher (2), ff4d (2), ff4c (2), seq3cmdtype (2), cmdseq3 (2), samplers (2), times (2), f400 (2), remember (2), player (2), f424 (2), f444 (2), ff25 (2), ff02 (2), ff05 (2), processcommands01 (2), reinitialize (2), fee9 (2), over (2), processes (2), step (2), zero (2), fee1 (2), ldd (2), multi (2), run (2), until (2), single (2), increment (2), addb (2), complex (2), 0000 (2), feae (2), fe93 (2), fe8a (2), fe7d (2), fe74 (2), fe63 (2), fdf3 (2), fe5c (2), fded (2), fe44 (2), fe36 (2), fdf5 (2), fe26 (2), fdfe (2), fdde (2), simplecommands (2), simple (2), till (2), fda8 (2), fd5b (2), fdc4 (2), did (2), they (2), are (2), was (2), should (2), data (2), move (2), fd8c (2), fd96 (2), fd86 (2), r0rrr (2), check (2), low (2), only (2), ports (2), outputs (2), turned (2), bug3 (2), 0000_1011 (2), pulb (2), 0001_0101 (2), selected (2), fd40 (2), fd0c (2), fd29 (2), fcf3 (2), fcef (2), fd00 (2), fcf5 (2), fce1 (2), fcc3 (2), fca2 (2), irq_ack (2), play (2), clock (2), msm5205 (2), handler (2), runs (2), a0xx (2), 4000 (2), 250hz (2), countdown (2), decrease (2), fc8a (2), fc7a (2), fc87 (2), fc85 (2), fc48 (2), fc10 (2), fc3e (2), fc2f (2), fc20 (2), fc19 (2), fbff (2), fc11 (2), bytecnt802 (2), nothing (2), board (2), soundloop (2), fbbd (2), voldec12 (2), fbb1 (2), voldec11 (2), fba5 (2), voldec10 (2), fb99 (2), voldec02 (2), fb8d (2), voldec01 (2), fb81 (2), voldec00 (2), fb75 (2), fb63 (2), fb51 (2), fb3f (2), fb2a (2), configure (2), opening (2), passing (2), thus (2), 4ms (2), 6168 (2), f56c (2), f6f9 (2), f754 (2), f64b (2), 156 (2), 186 (2), f521 (2), f4fb (2), ending (2), gap (2), f000 (2), rocks (2), f004 (2), missiles (2), hitting (2), ground (2), plays (2), slots (2), very (2), info (2), blend (2), bedlam (2), code1 (2), ramuse1 (2), pyramid (2), bank6 (2), bank5 (2), bank4 (2), bank0 (2), after_25 (2), after_24 (2), after_23 (2), after_22 (2), after_21 (2), after_20 (2), after_19 (2), after_18 (2), after_17 (2), after_16 (2), after_15 (2), after_14 (2), after_13 (2), after_12 (2), after_11 (2), after_10 (2), after_9 (2), after_8 (2), after_7 (2), after_6 (2), after_5 (2), after_4 (2), after_3 (2), after_2 (2), after_1 (2), after_start (2), early (2), asteroids (2), scramble (2), may2025 (2), func (2), main2 (2), vectorrom (2), gfx2 (2), sprites (2), gfx1 (2), moon (2), patrol (2), theory (2), arcade (2), boot (2), 1loader (2), fff0, serial, fff2, overflow, fff4, fff6, input, fff8, interrupt, strobe, fffa, fffc, non, maskable, fffe, initialization, sets, pointless, ff85, ff87, doesn, really, anything, ff89, ff8a, ffaa, ffca, ffea, bug2, ff6f, ff70, ff71, initialize, ff74, ff77, ff78, ff79, ff7b, ff7d, ff80, ff83, 10_111_110, cmdseq1, ff64, ff66, ff68, ff6b, ff6e, cmdseq2, processcommands15, seqencer, ff4f, ff51, ff53, ff56, ff59, 10_110_110, ff5b, ff5d, them, ff5f, ff62, cmdseq4, processcommand14, ff31, ff33, ff34, ff36, ff38, ff3a, priority, ff3e, ff40, seqence, ff43, ff46, 10_001_001, ff48, orb, ff4a, exactly, processcommands10, fef0, fef2, fef4, fef6, fef7, fef9, fefb, fefd, ff00, counts, ff07, ff09, ff0a, specified, ff0c, ff0e, ff0f, ff10, ff13, ff14, ff15, wouldn, great, have, ff17, ff19, descriptor, ff1a, ff1c, ff1e, ff20, ff22, ff24, ff26, ff27, ff2a, ff2b, ff2d, ff2f, fee3, reinit, fee6, feeb, feed, processcommand0, fec6, fec8, feca, fecc, fece, fecf, fed0, fed1, fed3, consecutive, registers, pointed, leave, pointing, fed6, fed9, feda, fedc, fedf, fee0, means, fec3, fec5, mmll, feb6, feb8, feba, lsb, msb, febc, febe, fec0, fec2, following, parser, loaded, 0m0r_rrrr, threevoice, 0m1c_0000, threevoices, 0m1c_011o, ayc, 0m1c_10vv, 0m1c_11vv, fde7, fde9, fdeb, fdf2, fdf6, two, fdf7, repeat, fdf8, another, fdfa, fdfc, fdfd, fe00, fe01, valid, fe03, note, fe05, fe07, fe09, fe0b, fe0d, fe10, fe12, lsrd, divided, fe13, fe15, fe17, fe19, fe1a, fe1b, fe1e, fe21, fe23, fe29, fe2b, cycle, cont, fe2d, fe30, fe31, repeats, fe33, extra, fe34, suba, fe38, fe3a, fe3c, encoding, fe3e, fe40, fe42, fe45, fe47, fe4a, fe4b, fe4d, fe4f, actual, fe51, fe53, fe55, fe57, fe59, countreload, fe5e, fe60, fe64, fe66, becomes, fe67, fe69, fe6b, fe6d, fe6f, fe71, fe76, fe78, fe7a, fe7f, fe81, fe83, fe85, fe87, fe8c, fe8e, fe90, fe95, 1ccccccc, commandtype, seriescount, fe97, fe99, params, fe9b, fe9c, fe9e, fea0, fea1, fea3, fea4, fea6, parameters, fea7, fea9, feab, fead, feaf, feb1, feb3, feb4, alternate, writing, 101_r_rrrr, fdc8, fdca, lowest, fdcb, fdcd, fdcf, fdd3, fdd6, fdd7, fdd9, fddb, fde0, fde2, fde4, rrrrr, regular, intervals, 100_r_rrrr, fdb4, fdb6, fdb8, fdb9, fdbb, fdbd, fdc0, fdc1, fdc2, list, fdc3, fdc6, math, were, values, actually, written, good, thing, fd7e, fd81, fd82, fd84, underflow, fd88, fd8a, switch, fd8e, fd90, fd92, fd94, fd95, fd97, fd98, fd99, fd9b, fd9d, fd9e, fda0, fda2, fda4, fda7, counted, fdaa, fdac, fdae, fdb0, fdb2, function, 110_r_1rrr, fd6a, confusing, way, getting, rid, fd6c, fd6e, fd70, sign, shortly, fd71, fd73, adjust, fd75, fd77, fd78, decrementing, fd7a, fd7c, 110_r_0rrr, fd62, fd64, fd66, fd68, thanks, leo, bodnar, explaining, connected, general, most, triggers, writes, toggles, high, clears, accessing, 9xxx, fc8b, release, line, can, fire, fc8e, fc90, fc93, fc95, fc97, ffff, ddr, fc9b, fc9d, fc9f, fca0, fca4, fca5, fca6, fca8, initial, fcaa, fcac, fcb0, fcb2, fcb4, about, seqnecer, too, fcb6, fcb8, fcba, fcbc, fcbe, fcc0, fcc5, fcc7, fcc9, fccb, fccd, fccf, fcd1, fcd3, channels, fcd5, bypass, waiting, fcdb, fce2, fce3, 2nd, fce5, fce7, fce9, fceb, fced, 0000_1000, fcf1, fcf2, fcf7, fcf9, fcfb, fcfc, fcfe, fcff, fd02, fd04, fd06, fd08, 0001_0000, fd0a, fd0d, wrie, fd10, fd12, fd14, fd16, fd18, 0001_0100, fd1a, fd1c, fd1e, fd21, fd23, fd25, fd27, 0000_1010, clra, fd2a, fd2c, inputs, fd2e, fd30, fd32, clrb, fd33, fd35, fd36, fd38, fd39, fd3b, fd3e, 0000_1001, fd43, fd45, auto, fd47, fd49, fd4a, fd4c, fd4e, fd52, volue, fd54, reg, fd57, 0001_0001, fd59, fd5c, nibble, fd5e, greater, equal, fd60, sweep, volcnt02, volcnt01, volcnt00, volcnt12, volcnt11, volcnt10, irq1commandrequest, zzz0000, driven, requesting, wired, pull, fbd9, fbdb, fbde, fbe0, fbe3, fbe6, fbe8, why, fbe9, fbeb, fbec, fbee, fbf0, fbf1, fbf3, fbf5, fbf7, fbf9, fbfa, fbfb, fbfc, fbfd, fc01, fc02, fc04, fc06, fc08, fc0a, fc0b, fc0c, fc0d, fc0e, fc13, fc15, fc17, fc1b, fc1d, fc1f, fc22, supports, 24k, fc24, invalid, fc26, fc28, fc2a, fc2c, fc2d, fc31, fc33, fc35, fc37, fc39, fc3b, fc3c, zzzz0000, fc40, fc42, fc44, fc47, gets, counters, requested, fc4a, fc4c, made, fc4f, fc51, fc53, fc54, don, fc56, fc5b, fc5d, fc5e, fc60, fc65, fc67, fc68, fc6a, fc6f, fc71, fc72, fc74, 0006, fc7c, fc7e, fc7f, fc81, fc83, fc88, samp_2, samp_1, nmitimer, fb1b, fb1c, down, volumes, fb1f, fb21, fb23, program, fb26, fb28, processed, fb2b, fb2e, fb30, fb32, fb34, fb36, fb38, fb3b, fb3d, fb42, fb44, fb46, fb48, fb4a, fb4d, fb4f, fb54, fb56, fb58, fb5a, fb5c, fb5f, fb61, fb66, fb68, fb6a, fb6c, fb6e, fb71, fb73, fb77, fb79, taken, fb7c, fb7e, fb83, fb85, fb88, fb8a, fb8f, fb91, fb94, fb96, fb9b, fb9d, fba0, fba2, fba7, fba9, fbac, fbae, fbb3, fbb5, fbb8, fbba, fbbf, fbc0, fbc2, fbc3, fbc5, lsrb, sampler, fbc6, let, fbc8, fbca, finish, fbcc, fbce, fall, fbcf, fbd3, send, fbd6, top, fb00, fb01, lds, 00ff, stack, fb04, internal, fb07, tones, noise, fb09, fb0b, fb0e, 0001_0011, fb10, ouput, fb12, fb15, fb18, watchdog, f95f, f961, 11_000_111, f963, f965, f967, f969, f96b, f96d, f970, f973, f976, f978, f97b, f97e, f981, f984, 00_111_000, f986, f987, f9a7, f9c7, f9e7, fa07, fa27, fa47, fa67, fa87, faa7, fac7, fae7, carexplosion, f8ec, f8ee, f8f0, f8f2, f8f4, f8f6, f8f8, f8fb, f8fe, f901, f905, f909, f90d, f911, f914, f917, f91a, f91e, f922, f926, f92a, f92c, f931, f935, f939, f93d, f941, f945, f94a, f94e, f952, f956, f95a, f95e, f84d, f84f, f851, f853, f855, f857, f859, f85b, f85d, f85f, f861, f864, f867, f869, f86b, f86d, f86f, f871, f873, f876, f878, f87b, f87d, f87f, f881, f884, f887, f889, f88c, f88f, f891, f893, f895, f898, f89a, f89d, f89f, f8a1, f8a4, f8a6, f8a8, f8aa, f8ad, f8af, f8b2, f8b4, f8b7, f8b9, f8bb, f8bd, f8c0, f8c2, f8c4, f8c7, f8c9, f8cb, f8cd, f8cf, f8d2, f8d4, f8d6, f8d8, f8db, f8dd, f8df, f8e1, f8e4, f8e6, f8e8, f8eb, startmusic, f803, f805, f807, f809, 11_111_001, f80b, f80d, f80f, f814, f816, f818, f81d, f81f, f821, f826, f828, f82a, f82f, f831, f833, f838, f83a, f83c, f841, f843, f845, f84a, 00_000_110, f84c, f7f1, f7f3, f7f5, f7f7, f7f9, f7fb, f7fd, f800, f802, f7e1, f7e3, f7e5, f7e7, f7e9, f7eb, f7ee, f7f0, passpoint, f7b9, f7bb, f7bd, f7bf, f7c1, f7c3, numsamples, f7c6, f7de, f7e0, ufoexplosion, f7ab, f7ad, f7af, f7b1, f7b6, f7b8, divides, 4khz, lasts, 004, defined, fragments, has, delays, decimal, take, takes, 672, entire, once, f56e, f570, f572, f574, f576, 11_011_101, f578, f57b, f57e, f581, f584, f587, f58a, f58d, f590, f593, f596, f599, f59c, goto, f5a1, f5a3, f5a5, f5a8, f5ab, f5ad, f5b0, f5b3, f5b5, f5b7, f5b9, f5bc, f5bf, f5c1, f5c4, f5c6, f5c8, f5cb, f5ce, f5d0, f5d3, f5d5, f5d7, f5da, f5dd, f5df, f5e1, f5e4, f5e7, f5e9, f5eb, f5ed, f5f0, f5f3, f5f6, f5f8, f5fa, f5fd, f600, f602, f605, f608, f60a, f60c, f60e, f611, f614, f616, f619, f61b, f61d, f620, f623, f625, f628, f62a, f62c, f62f, f632, f634, f636, f639, f63b, f63d, f640, f642, f644, f647, f64a, f64d, f64f, f651, f654, f656, f659, f65c, f65e, f661, 100, f663, 101, f665, 102, f668, 103, f66a, f66d, 105, f670, 106, f672, 107, f675, 108, f677, 109, f679, f67b, 111, f67e, 112, f680, 113, f683, 114, f686, 115, f688, 116, f68b, f68d, 118, f68f, 119, f692, 120, f694, 121, f697, 122, f69a, 123, f69c, f69e, 125, f6a1, 126, 127, f6a4, 128, f6a6, 129, f6a8, 130, f6ab, 131, f6ae, 132, f6b0, 133, f6b3, 134, f6b6, 135, f6b8, 136, f6ba, 137, f6bc, 138, f6bf, 139, f6c2, 140, f6c4, 141, f6c7, 142, f6c9, 143, f6cb, 144, f6cd, 145, f6d0, 146, f6d3, f6d5, 148, f6d8, 149, f6da, 150, f6dc, 151, f6df, 152, f6e2, 153, f6e4, 154, f6e6, 155, f6e9, f6ec, 157, f6ee, 158, f6f0, 159, f6f2, 160, f6f5, 161, f6f8, 162, 163, f6fb, 164, f6fd, f6ff, 166, f702, 167, f705, 168, f707, 169, f70a, 170, f70d, 171, f70f, 172, f711, 173, f713, 174, f716, 175, f719, 176, f71b, 177, f71e, 178, f720, 179, f722, 180, f724, 181, f727, 182, f72a, 183, f72c, 184, f72f, 185, f731, f733, 187, f736, 188, f739, 189, f73b, 190, f73d, 191, f73f, 192, f742, 193, f744, 194, f746, 195, 66771708683473, f749, f74b, 197, f74d, 198, f750, 199, f753, 200, 201, f756, 202, f758, 203, f75a, 204, f75d, 205, f760, 206, f762, 207, f765, 208, f768, 209, f76a, 210, f76c, 211, f76e, 212, f771, 213, f774, 214, f776, 215, f779, 216, f77b, 217, f77d, 218, f780, 219, f783, 220, f785, f788, 222, f78a, 223, f78c, 224, f78e, 225, 43458333333334, f791, 226, f794, 227, f796, 228, f798, 229, f79a, 230, f79d, 231, f7a0, 232, f7a2, 233, f7a4, 234, f7a7, 235, f7aa, 246, backgroundmusic, f516, f518, f51a, f51c, f523, f528, f52d, f52f, f534, f539, f53b, f540, f545, f547, f54c, f551, f553, f558, f55d, f55f, f564, f569, ufoflying, f4f5, f4f7, f4f9, f4fe, f501, f504, f507, f50a, f50d, f510, f513, spaceplant, f4a8, f4aa, f4ac, f4ae, f4b0, f4b2, f4b4, f4b7, f4bb, f4bf, f4c3, f4c6, f4ca, f4cc, f4d1, f4d5, f4d9, f4dd, f4e1, f4e5, f4e9, f4ed, f4f1, f4f2, f4f4, reachinggoal, f464, f466, f468, f46a, f46c, f46e, f470, f474, f478, f47c, f480, f483, f485, f489, f48d, f491, f495, f499, f49d, f4a1, f4a5, f4a7, endmusic, sequencer2, f446, f448, f44a, f44c, sequencer3, f44e, f450, f452, f454, f456, f458, f45a, f45c, f45e, f460, f462, commandscripts, stream, first, f404, 400, shooting, f408, f40c, 3fc, right, f410, f414, f418, f41c, f420, reserved, effects, f428, f42c, f430, f434, f438, f43c, f440, bet, include, make, explosioncommands, interesting, effect, lasting, consumes, 4th, contains, that, 1024, 2048, 512, f020, f040
Text of the page (random words):
0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 fac7 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 fae7 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 start start irq2 swi and reset fb00 0f sei turn interrupts off fb01 8e 00 ff lds 00ff set stack pointer fb04 bd fc 98 jsr fc98 clear memory and configure internal ports fb07 86 bf lda bf 10_111_111 no tones no noise fb09 c6 07 ldb 07 configure i o and all sound off fb0b bd fc d8 jsr fcd8 write value a to ay register b no delay during write fb0e 86 13 lda 13 0001_0011 chip status fb10 c6 0f ldb 0f ouput port fb12 bd fc d8 jsr fcd8 write value a to ay register b no delay during write fb15 bd fc ad jsr fcad reset all sounds scripts fb18 7f 90 00 clr irq_ack watchdog sound loop soundloop main sound loop fb1b 0f sei turn interrupts off fb1c bd fc 48 jsr fc48 count down script times and volumes fb1f 96 bc lda sndcmd sound command read by irq1 fb21 2b 07 bmi fb2a nothing to do skip fb23 bd fe e1 jsr fee1 handle sound command from main program fb26 86 ff lda ff command fb28 97 bc sta sndcmd processed fb2a 0e cli turn interrupts on fb2b ce 00 00 ldx 0000 voice number 0 fb2e df d1 stx curvoice start with voice 0 fb30 96 80 lda seqv0 time for voice 0 fb32 26 0b bne fb3f no move on fb34 de 84 ldx seqptr1 get sequence 0 pointer fb36 d6 8c ldb seq1cmdtype command type running on sequencer 0 fb38 bd fd dc jsr fddc process sequence 0 fb3b df 84 stx seqptr1 store new sequence pointer fb3d 97 80 sta seqv0 store new countdown timer fb3f 7c 00 d2 inc curvoice 1 for voice 1 fb42 96 81 lda seqv0 fb44 26 0b bne fb51 fb46 de 86 ldx seqptr2 fb48 d6 8d ldb seq2cmdtype fb4a bd fd dc jsr fddc fb4d df 86 stx seqptr2 fb4f 97 81 sta seqv0 fb51 7c 00 d2 inc curvoice 1 for voice 2 fb54 96 82 lda seqv0 fb56 26 0b bne fb63 fb58 de 88 ldx seqptr3 fb5a d6 8e ldb seq3cmdtype fb5c bd fd dc jsr fddc fb5f df 88 stx seqptr3 fb61 97 82 sta seqv0 fb63 7c 00 d2 inc curvoice 1 for voice 3 fb66 96 83 lda seqv0 fb68 26 0b bne fb75 fb6a de 8a ldx seqptr4 fb6c d6 8f ldb seq4cmdtype fb6e bd fd dc jsr fddc fb71 df 8a stx seqptr4 fb73 97 83 sta seqv0 fb75 96 a8 lda voldec00 decrement volume 0 0 command fb77 27 08 beq fb81 nothing skip fb79 7f 00 a8 clr voldec00 command taken fb7c c6 08 ldb 08 decrement volume register 1 0 fb7e bd fd 3a jsr fd3a do it fb81 96 a9 lda voldec01 decrement volume 0 1 command fb83 27 08 beq fb8d fb85 7f 00 a9 clr voldec01 fb88 c6 09 ldb 09 fb8a bd fd 3a jsr fd3a fb8d 96 aa lda voldec02 decrement volume 0 2 command fb8f 27 08 beq fb99 fb91 7f 00 aa clr voldec02 fb94 c6 0a ldb 0a fb96 bd fd 3a jsr fd3a fb99 96 ab lda voldec10 decrement volume 1 0 command fb9b 27 08 beq fba5 fb9d 7f 00 ab clr voldec10 fba0 c6 18 ldb 18 fba2 bd fd 53 jsr fd53 fba5 96 ac lda voldec11 decrement volume 1 1 command fba7 27 08 beq fbb1 fba9 7f 00 ac clr voldec11 fbac c6 19 ldb 19 fbae bd fd 53 jsr fd53 fbb1 96 ad lda voldec12 decrement volume 1 2 command fbb3 27 08 beq fbbd fbb5 7f 00 ad clr voldec12 fbb8 c6 1a ldb 1a fbba bd fd 53 jsr fd53 fbbd 96 be lda strmstatus status of samplers fbbf 16 tab hold it fbc0 9a d8 ora brdstatus or into board status fbc2 0f sei disable interrupts fbc3 97 d8 sta brdstatus new chip status fbc5 54 lsrb is sampler 801 done fbc6 24 09 bcc fbd1 no let it run fbc8 d6 cb ldb lastcmd last sound command fbca c1 02 cmpb 02 did we finish sound 2 fbcc 26 03 bne fbd1 no carry on fbce 5c incb fall into fbcf d7 bc stb sndcmd sound command 3 fbd1 c6 0f ldb 0f ay0 output b fbd3 bd fc de jsr fcde send back board status fbd6 7e fb 1b jmp soundloop back to top of music loop nmi timer nmitimer nmi play samples out 801 and 802 on tick zzz0000 enable ay sound script processing this clock is driven by the msm5205 chip requesting data the msm5205 is wired to pull samples at 4000hz this nmi handler runs at 4000hz fbd9 96 c1 lda cursamp801 current value for 801 fbdb b7 08 01 sta samp_1 4 bit sample fbde 96 c2 lda cursamp802 current value for 802 fbe0 b7 08 02 sta samp_2 4 bit sample fbe3 7c 00 bd inc nmitick nmi counter fbe6 96 bf lda nmitick2 fbe8 4c inca why not inc bf then lda bf fbe9 97 bf sta nmitick2 same number of bytes fbeb 44 lsra odd or even fbec 24 32 bcc fc20 do this on even ticks odd nmi ticks fbee de c3 ldx bytecnt801 decrement fbf0 09 dex 801 counter fbf1 27 1e beq fc11 all done set bit 0 of be and continue fbf3 df c3 stx bytecnt801 new counter fbf5 de c7 ldx ptr801 pointer to bytes fbf7 a6 00 lda 00 x get next byte fbf9 44 lsra upper 4 bits fbfa 44 lsra fbfb 44 lsra fbfc 44 lsra fbfd 97 c1 sta cursamp801 next value for 801 fbff de c5 ldx bytecnt802 decrement fc01 09 dex 802 counter fc02 27 15 beq fc19 all done set bit 1 of be and out fc04 df c5 stx bytecnt802 new counter fc06 de c9 ldx ptr802 pointer to bytes fc08 a6 00 lda 00 x get next byte fc0a 44 lsra upper 4 bits fc0b 44 lsra fc0c 44 lsra fc0d 44 lsra fc0e 97 c2 sta cursamp802 next value for 802 fc10 3b rti fc11 86 01 lda 01 set bit 0 fc13 9a be ora strmstatus of fc15 97 be sta strmstatus be fc17 20 e6 bra fbff continue with bit 1 fc19 86 02 lda 02 set bit 1 fc1b 9a be ora strmstatus of fc1d 97 be sta strmstatus be fc1f 3b rti nmi out even nmi ticks fc20 96 c7 lda ptr801 801 pointer fc22 81 a0 cmpa a0 pointer less than a0xx hardware supports up to 24k rom fc24 25 09 bcs fc2f yes hold last value invalid pointer fc26 de c7 ldx ptr801 801 pointer fc28 a6 00 lda 00 x get value fc2a 97 c1 sta cursamp801 next value for 801 lower 4 bits fc2c 08 inx next sample fc2d df c7 stx ptr801 save pointer fc2f 96 c9 lda ptr802 802 pointer fc31 81 a0 cmpa a0 pointer less than a0xx fc33 25 09 bcs fc3e yes hold last value fc35 de c9 ldx ptr802 802 pointer fc37 a6 00 lda 00 x get value fc39 97 c2 sta cursamp802 next value for 802 fc3b 08 inx next sample fc3c df c9 stx ptr802 save pointer fc3e 96 bf lda nmitick2 on tick zzzz0000 fc40 84 0e anda 0e process ay sound fc42 26 cc bne fc10 fc44 7c 00 c0 inc sndproctmr fc47 3b rti nmi out the c0 flag gets set by the nmi handler at 4000 16 250hz if processing sequence scripts decrement counters on each voice sequence and lower the volume on the voices as requested fc48 96 c0 lda sndproctmr time for scripts fc4a 27 3e beq fc8a no skip fc4c 7a 00 c0 dec sndproctmr script pass made fc4f 96 80 lda seqv0 decrement 80 voice 0 sequence counter if active fc51 27 06 beq fc59 0 fc53 4c inca or ff fc54 27 03 beq fc59 don t decrement fc56 7a 00 80 dec seqv0 fc59 96 81 lda seqv0 decrement 81 voice 1 sequence counter if active fc5b 27 06 beq fc63 fc5d 4c inca fc5e 27 03 beq fc63 fc60 7a 00 81 dec seqv0 fc63 96 82 lda seqv0 decrement 82 voice 2 sequence counter if active fc65 27 06 beq fc6d fc67 4c inca fc68 27 03 beq fc6d fc6a 7a 00 82 dec seqv0 fc6d 96 83 lda seqv0 decrement 83 voice 3 sequence counter if active fc6f 27 06 beq fc77 fc71 4c inca fc72 27 03 beq fc77 fc74 7a 00 83 dec seqv0 fc77 ce 00 06 ldx 0006 6 voices fc7a a6 ad lda ad x countdown timer for volume decrease fc7c 27 09 beq fc87 not active skip fc7e 4a deca time to decrease volume fc7f 26 04 bne fc85 no skip fc81 6c a7 inc a7 x flag decrement volume for voice fc83 a6 b3 lda b3 x restore volume counter fc85 a7 ad sta ad x current counter fc87 09 dex all voices fc88 26 f0 bne fc7a no do all fc8a 39 rts done irq1 command request irq1commandrequest thanks to leo bodnar for explaining the sound command sequence the main cpu address d000 write is connected to the sound cpu s ay0 sound chip general i o the upper most bit triggers the irq on the sound cpu the main cpu writes the command to d000 and toggles the upper bit of d000 bit low then high the sound cpu clears the irq by accessing memory 9xxx irq1 fc8b b7 90 00 sta irq_ack release the irq line so it can fire again fc8e c6 0e ldb 0e read from fc90 bd fd 20 jsr fd20 i o port a on ay chip 0 fc93 84 1f anda 1f only lower 5 bits fc95 97 bc sta sndcmd store sound command fc97 3b rti fc98 ce ff ff ldx ffff set ddr fc9b df 00 stx ddr1 ports 1 and 2 outputs fc9d c6 4f ldb 4f 4f bytes fc9f 08 inx 0 fca0 86 00 lda 00 clear value fca2 a7 80 sta 80 x write byte to memory fca4 08 inx next in memory fca5 5a decb all bytes fca6 26 fa bne fca2 do all bytes fca8 86 13 lda 13 initial chip status fcaa 97 d8 sta brdstatus for return from command fcac 39 rts done disable all sounds fcad bd fc c3 jsr fcc3 all sounds on ay0 fcb0 86 bf lda bf 10_111_111 fcb2 97 bb sta curmix1 mixer all sounds turned off fcb4 c6 ff ldb ff ff bug3 bug3 what about seqnecer 3 it is tied to ay1 too fcb6 d7 82 stb seqv0 voice sequence 2 off fcb8 d7 b1 stb volcnt10 volume dec counter ay1 0 fcba d7 b2 stb volcnt11 volume dec counter ay1 1 fcbc d7 b3 stb volcnt12 volume dec counter ay1 2 fcbe c6 17 ldb 17 10_111_111 fcc0 7e fc de jmp fcde write value a to ay register b fcc3 86 bf lda bf 10_111_111 fcc5 97 ba sta curmix0 mixer all sounds turned off fcc7 c6 ff ldb ff ff fcc9 d7 80 stb seqv0 voice sequence 0 off fccb d7 81 stb seqv0 voice sequence 1 off fccd d7 ae stb volcnt00 volume dec counter ay0 0 fccf d7 af stb volcnt01 volume dec counter ay0 1 fcd1 d7 b0 stb volcnt02 volume dec counter ay0 2 fcd3 c6 07 ldb 07 10_111_111 all channels off fcd5 7e fc de jmp fcde write value a to ay register b and return write value a to ay register b no delay during write fcd8 7c 00 bd inc nmitick set nmi counter bypass waiting fcdb 20 04 bra fce1 continue with write write value a to ay register b turn off interrupts fcdd 0f sei disable interrupts write value a to ay register b fcde 7f 00 bd clr nmitick clear nmi counter fce1 37 pshb save b address fce2 36 psha and a value fce3 c1 10 cmpb 10 2nd chip fce5 2a 19 bpl fd00 yes go fce7 86 0d lda 0d 0000_1011 fce9 97 03 sta port2 control lines fceb d7 02 stb port1 address fced c6 08 ldb 08 0000_1000 fcef d7 03 stb port2 control lines fcf1 5c incb bit 0 on fcf2 32 pula value fcf3 97 02 sta port1 write value fcf5 96 bd lda nmitick wait fcf7 27 fc beq fcf5 for nmi counter fcf9 d7 03 stb port2 store control fcfb 5a decb clear bit 0 fcfc d7 03 stb port2 store control fcfe 33 pulb restore b fcff 39 rts done fd00 86 15 lda 15 0001_0101 fd02 97 03 sta port2 control lines fd04 c4 0f andb 0f address 0 15 fd06 d7 02 stb port1 store address fd08 c6 10 ldb 10 0001_0000 fd0a 20 e3 bra fcef write value fd0c 37 pshb chip already selected fd0d 20 e4 bra fcf3 wrie value to selected chip fd0f 37 pshb save b fd10 86 15 lda 15 0001_0101 fd12 97 03 sta port2 chip 2 control lines fd14 c4 0f andb 0f address 0 15 fd16 d7 02 stb port1 store address fd18 c6 14 ldb 14 0001_0100 fd1a 20 0d bra fd29 continue read read ay register b into a fd1c c1 10 cmpb 10 second chip fd1e 2a ef bpl fd0f yes go handle fd20 37 pshb save b fd21 86 0d lda 0d 0000_1011 fd23 97 03 sta port2 chip 1 control lines fd25 d7 02 stb port1 store address fd27 c6 0c ldb 0c 0000_1010 fd29 4f clra 0 fd2a 97 03 sta port2 control lines fd2c 97 00 sta ddr1 port 2 now inputs fd2e d7 03 stb port2 control lines fd30 96 02 lda port1 read from register fd32 5f clrb 0 fd33 d7 03 stb port2 control lines fd35 5a decb ff fd36 d7 00 stb ddr1 port 2 now outputs fd38 33 pulb restore b fd39 39 rts done decrement ay chip 0 volume register b fd3a 0f sei disable interrupts fd3b bd fd 20 jsr fd20 read from port fd3e c6 09 ldb 09 0000_1001 control fd40 7f 00 bd clr nmitick clear nmi counter fd43 84 1f anda 1f only 5 bits used in volume register fd45 81 10 cmpa 10 m bit set auto volume fd47 2a 08 bpl fd51 yes ignore this request fd49 4a deca decrement the volume fd4a 81 07 cmpa 07 less than 7 fd4c 2b 03 bmi fd51 yes low as we get ignore fd4e bd fd 0c jsr fd0c write the new volume value fd51 0e cli enable interrupts fd52 39 rts done decrement ay chip 1 volue register b fd53 0f sei disable interrupts fd54 bd fd 0f jsr fd0f read reg b a fd57 c6 11 ldb 11 0001_0001 control fd59 20 e5 bra fd40 continue with write volume value script command c0 ef 5 or 6 bytes fd5b 17 tba check lower fd5c 84 0f anda 0f nibble fd5e 81 08 cmpa 08 greater or equal to 8 fd60 2a 08 bpl c_sweep_voice_pair yes go sweep register pair c_sweep_voice_register c_sweep_voice_register add delta i98 to current value i94 and set register c0 ef 110_r_0rrr cnt i94 i98 rval fd62 a6 94 lda 94 x get current tone value fd64 ab 98 adda 98 x add delta fd66 a7 94 sta 94 x store current fd68 20 67 bra fdd1 write current to register b 0 6 and return 4 x c_sweep_voice_pair c_sweep_voice_pair bug in code this function is never used add delta delta to fine coarse pair r0rrr and r0rrr 1 c0 ef 110_r_1rrr cnt i94 i98 rval delta fd6a cb 38 addb 38 confusing way of getting rid of bit 3 in register value fd6c de cd ldx curseqptr script pointer fd6e a6 05 lda 05 x delta value from script fd70 36 psha hold delta sign check shortly fd71 de d1 ldx curvoice voice number fd73 ab 94 adda 94 x adjust fd75 a7 94 sta 94 x fine tone value fd77 32 pula original delta fd78 2b 0c bmi fd86 handle decrementing fd7a 24 02 bcc bug1 no carry fd7c 6c 98 inc 98 x increment coarse tone bug 1 bug1 bug in code we did the math above on 94 and 98 as if they were fine coarse but we write the values as if they are coarse fine actually the fine value in 94 is never written to the fine register the delta value is always the fine value good thing this command was never used fd7e bd fc dd jsr fcdd write fine value to register b fd81 5c incb to coarse register fd82 a6 94 lda 94 x coarse value should be 98 fd84 20 4b bra fdd1 write coarse value to register b and return 4 x fd86 25 f6 bcs bug1 yes carry we should get a carry until underflow fd88 6a 98 dec 98 x decrement coarse value fd8a 20 f2 bra bug1 do it skip over data of current series command and switch to command 0 fd8c 6f 8c clr 8c x script command 0 fd8e de cd ldx curseqptr get the current sequence pointer fd90 c1 a0 cmpb a0 fd92 2b 02 bmi fd96 fd94 08 inx if b a0 x x 2 fd95 08 inx fd96 08 inx x x 3 fd97 08 inx fd98 08 inx fd99 c1 c0 cmpb c0 fd9b 2b 08 bmi fda5 if b c0 a 0f 8 x x 1 fd9d 17 tba fd9e 84 0f anda 0f fda0 81 08 cmpa 08 fda2 2b 01 bmi fda5 fda4 08 inx fda5 86 01 lda 01 process again on next sequencer tick fda7 39 rts done counted series commands fda8 df cd stx curseqptr hold the pointer fdaa de d1 ldx curvoice get the voice number fdac 6a 90 dec 90 x all done with this type of command fdae 27 dc beq fd8c yes move to next fdb0 c1 a0 cmpb a0 go if fdb2 2a 10 bpl fdc4 a0 or above c_register_samples c_register_samples set the value of rrrrr to si at regular intervals cnt is the number of samples always return rval 80 9f 100_r_rrrr cnt rval s0 s1 s2 sn fdb4 c4 1f andb 1f mask off register number fdb6 a6 94 lda 94 x get return value time till next process fdb8 36 psha hold return fdb9 de cd ldx curseqptr get back the pointer fdbb a6 03 lda 03 x get value to write fdbd bd fc dd jsr fcdd write value a to ay register b turn off interrupts fdc0 0e cli interrupts back on fdc1 32 pula restore a fdc2 08 inx next in sample list fdc3 39 rts out fdc4 c1 c0 cmpb c0 go if fdc6 2a 93 bpl fd5b c0 or above c_toggle_register c_toggle_register never used alternate writing i9...
|