public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* Heh. It works. I wrote a pmode pico-kernel in shell script assembly.
@ 2003-07-02  9:50 Rick A. Hohensee
  2003-07-02 10:00 ` jw schultz
  0 siblings, 1 reply; 2+ messages in thread
From: Rick A. Hohensee @ 2003-07-02  9:50 UTC (permalink / raw)
  To: linux-assembly, linux-kernel

I've got various burblers going on the screen in various timescales.
There's an INT 100 that gets called in the main endless loop, and that
churns the fastest. There's a couple of blinking characters courtesy of
VGA. The endless loop also polls the keyboard and changes a couple
characters based on the current or latest scancode. There's another
burbler for Ye Olde Dos Jiffy, and that of course is slower than the
endless-loop burbler, so I use a big increment to make it look nicer.

The really fun one though is all IRQs besides 0 use the same burbler cell
on the screen, so that's acting as a keyboard character counter. It comes
up ! on boot from the left-over floppy IRQ I guess, and then when you hit
keys it increments up through the ROM font.

Rick Hohensee
Precision Mojo Engineer





00000000  00...                         ALLOT 0x7C00
00007c00  270 28 02                     = 552 to A
00007c03  271 01 00                     = 1 to C
00007c06  31 322                        XOR D with D
00007c08  8e 302                        = D to ES
00007c0a  273 00 7c                     = 0x7c00 to B
00007c0d  cd 13                         submit 0x13
00007c0f  fa                    nosurprises
00007c10  270 00 b8                     = 0xb800 to A
00007c13  8e 330                        = A to DS
00007c15  270 48 68                     = 0x6848 to A
00007c18  89 006 20 02                  = A to @ 544
00007c1c  31 300                        XOR A with A
00007c1e  8e 330                        = A to DS
00007c20  0f 01 16 61 7d                        setGDT initial_gdtr
00007c25  270 00 b8                     = 0xb800 to A
00007c28  8e 330                        = A to DS
00007c2a  270 61 61                     = 0x6161 to A
00007c2d  89 006 c0 02                  = A to @ 704
00007c31  270 01 00                     = 1 to A        0f 01 f0
00007c37  e9 00 00                      jump PMODE16
00007c3a                (O) PMODE16
00007c3a  270 33 f2                     = 0xf233 to A
00007c3d  89 006 60 03                  = A to @ 864
00007c41  ea 46 7c 10 00                        far jump addr./GDTindex ptr
00007c46                (O) BIG_CS
00007c46  270 4e 33 73 27                       = 0x2773334e to A
00007c4b  89 005 00 04 00 00                    = A to @ 1024
00007c51  270 18 00 00 00                       = 0x18 to A
00007c56  8e 330                        = A to DS
00007c58                (O) BIG_DS
00007c58  270 21 3a 6d 27                       = 0x276d3a21 to A
00007c5d  89 005 a0 84 0b 00                    = A to @ 754848
00007c63  31 300                        XOR A with A
00007c65  8e 300                        = A to ES
00007c67  8e 340                        = A to FS
00007c69  8e 350                        = A to GS
00007c6b                (O) nullifiedextrasegments
00007c6b  270 75 84 74 00                       = 0x748475 to A
00007c70  89 005 60 88 0b 00                    = A to @ 755808
00007c76  270 18 00 00 00                       = 0x18 to A
00007c7b  8e 320                        = A to SS
00007c7d  274 00 40 10 00                       = 0x104000 to SP
00007c82  270 df 00 00 00                       = 0xdf to A
00007c87  272 64 00 00 00                       = 0x64 to D
00007c8c  ee                    send byte
00007c8d  270 03 00 00 00                       = 0x3 to A
00007c92  e8 5a 02 00 00                        call writekeyboardwires
00007c97                (O) defaultallvectors
00007c97  31 377                        XOR DI with DI
00007c99                (O) perIDTvector
00007c99  60                    pushcore
00007c9a  270 37 7e 00 00                       = twitch to A
00007c9f  e8 5b 01 00 00                        call install
00007ca4  61                    pullcore
00007ca5  107                   1+ DI
00007ca6  81 377 7f 00 00 00                    -test 127 with DI
00007cac  0f 85 e7 ff ff ff   when not zero perIDTvector
00007cb2                (O) defaultallIRQs
00007cb2  277 20 00 00 00                       = 0x20 to DI
00007cb7                (O) perIRQvector
00007cb7  60                    pushcore
00007cb8  270 47 7e 00 00                       = IRQtwitch to A
00007cbd  e8 3d 01 00 00                        call install
00007cc2  61                    pullcore
00007cc3  107                   1+ DI
00007cc4  81 377 30 00 00 00                    -test 0x30 with DI
00007cca  0f 85 e7 ff ff ff   when not zero perIRQvector
00007cd0  277 20 00 00 00                       = 0x20 to DI
00007cd5  60                    pushcore
00007cd6  270 6a 7e 00 00                       = IRQ0twitch to A
00007cdb  e8 1f 01 00 00                        call install
00007ce0  61                    pullcore
00007ce1  0f 01 1d 92 7e 00 00                  setIDT 32402
00007ce8                (O) PICprogram
00007ce8  270 11 00 00 00                       = 17 to A
00007ced  272 20 00 00 00                       = 0x20 to D
00007cf2  ee                    send byte
00007cf3  272 a0 00 00 00                       = 0xa0 to D
00007cf8  ee                    send byte
00007cf9  270 20 00 00 00                       = 0x20 to A
00007cfe  272 21 00 00 00                       = 0x21 to D
00007d03  ee                    send byte
00007d04  270 28 00 00 00                       = 0x28 to A
00007d09  272 a1 00 00 00                       = 0xa1 to D
00007d0e  ee                    send byte
00007d0f  270 04 00 00 00                       = 4 to A
00007d14  272 21 00 00 00                       = 0x21 to D
00007d19  ee                    send byte
00007d1a  270 02 00 00 00                       = 2 to A
00007d1f  272 a1 00 00 00                       = 0xa1 to D
00007d24  ee                    send byte
00007d25  270 01 00 00 00                       = 1 to A
00007d2a  272 21 00 00 00                       = 0x21 to D
00007d2f  ee                    send byte
00007d30  272 a1 00 00 00                       = 0xa1 to D
00007d35  ee                    send byte
00007d36  fb                    surprises
00007d37                (O) theloop
00007d37  272 60 00 00 00                       = 0x60 to D
00007d3c  ec                    recieve byte
00007d3d  0d 00 43 22 33                        OR 0x33224300 to A
00007d42  89 005 00 81 0b 00                    = A to @ 753920
00007d48  272 64 00 00 00                       = 0x64 to D
00007d4d  ec                    recieve byte
00007d4e  0d 00 43 87 23                        OR 0x23874300 to A
00007d53  89 005 04 81 0b 00                    = A to @ 753924
00007d59  cd 33                         submit 0x33
00007d5b  e9 d7 ff ff ff                        jump theloop
00007d60  f4                    halt
00007d61                (O) initial_gdtr
00007d61  00 04 67 7d 00 00
00007d67                (O) GDT
00007d67  00 00 00 00 00 00 00 00                       0 NULL, required
00007d6f
00007d6f                (O) ringN
00007d6f  ff ff 00 00 00 89 cf 00                       1 stackstack
00007d77
00007d77                (O) ring0
00007d77  ff ff 00 00 00 9a cf 00                       2 CS
00007d7f  ff ff 00 00 00 92 cf 00                       3 ring0 data
00007d87  00 00 00 00 00 00 00 00                       4 spacer
00007d8f  00 00 00 00 00 00 00 00                       5 spacer
00007d97  00 00 00 00 00 00 00 00                       6 spacer
00007d9f  00 00 00 00 00 00 00 00                       7 spacer
00007da7  00 00 00 00 00 00 00 00                       8 spacer
00007daf
00007daf                (O) legmegschweg
00007daf  ff ff 00 00 0e 9a c0 00                       9 RBIOS CS
00007db7  ff ff 00 00 00 92 c0 00                       10 BIOS DS 0
00007dbf  ff ff 00 00 0d 9a c0 00                       11 RVBIOS code
00007dc7  ff ff 00 80 0b 92 c0 00                       12 8086 VGA data
00007dcf  ff ff 00 00 08 92 80 00                       13 legmeg SS
00007dd7  00 00 00 00 00 00 00 00                       14 spacer
00007ddf  00 00 00 00 00 00 00 00                       15 spacer
00007de7
00007de7                (O) ring0A
00007de7  ff ff 00 00 00 ba cf 00                       16 RING 0A SS
00007def  ff ff 00 00 00 b2 cf 00                       17 ring 0A data
00007df7  ff ff 00 00 00 ba cf 00                       18 RING 0A SS
00007dff                        ring3 probably will want BGDT
00007dff
00007dff                (O) install
00007dff  273 10 00 00 00                       = 16 to B
00007e04  271 0e 00 00 00                       = 14 to C
00007e09  c1 347 03                     upshift 3 to DI
00007e0c  81 307 00 10 00 00                    + 0x1000 to DI
00007e12                (O) makegate
00007e12  89 302                        = A to D
00007e14  81 342 ff ff 00 00                    AND 0x0000ffff to D
00007e1a  81 312 00 00 10 00                    OR 0x100000 to D
00007e20  89 027                        = D to @ DI
00007e22  c1 341 08                     upshift 8 to C
00007e25  81 311 00 80 00 00                    OR 0x8000 to C
00007e2b  81 340 00 00 ff ff                    AND 0xffff0000 to A
00007e31  09 301                        OR A to C
00007e33  89 117 04                     = C to @ 4 DI
00007e36  c3                    return
00007e37                (O) twitch
00007e37  120                   push A
00007e38  8b 005 32 8a 0b 00                    = @ 756274 to A
00007e3e  100                   1+ A
00007e3f  89 005 32 8a 0b 00                    = A to @ 756274
00007e45  130                   pull A
00007e46  cf                    dismiss
00007e47                (O) IRQtwitch
00007e47  120                   push A
00007e48  8b 005 0e 81 0b 00                    = @ 753934 to A
00007e4e  100                   1+ A
00007e4f  89 005 0e 81 0b 00                    = A to @ 753934
00007e55  122                   push D
00007e56  270 20 00 00 00                       = 32 to A
00007e5b  272 a0 00 00 00                       = 0xa0 to D
00007e60  ee                    send byte
00007e61  272 20 00 00 00                       = 0x20 to D
00007e66  ee                    send byte
00007e67  132                   pull D
00007e68  130                   pull A
00007e69  cf                    dismiss
00007e6a                (O) IRQ0twitch
00007e6a  120                   push A
00007e6b  8b 005 6e 80 0b 00                    = @ 753774 to A
00007e71  81 300 07 b2 01 00                    + 111111 to A
00007e77  89 005 6e 80 0b 00                    = A to @ 753774
00007e7d  122                   push D
00007e7e  270 20 00 00 00                       = 32 to A
00007e83  272 a0 00 00 00                       = 0xa0 to D
00007e88  ee                    send byte
00007e89  272 20 00 00 00                       = 0x20 to D
00007e8e  ee                    send byte
00007e8f  132                   pull D
00007e90  130                   pull A
00007e91  cf                    dismiss
00007e92                (O) initial_IDTreg
00007e92  00 02 00 10 00 00
00007e98                (O) appendages



No concatenated code required. :o)


^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: Heh. It works. I wrote a pmode pico-kernel in shell script assembly.
  2003-07-02  9:50 Heh. It works. I wrote a pmode pico-kernel in shell script assembly Rick A. Hohensee
@ 2003-07-02 10:00 ` jw schultz
  0 siblings, 0 replies; 2+ messages in thread
From: jw schultz @ 2003-07-02 10:00 UTC (permalink / raw)
  To: linux-kernel


 From the same people who brought you the "bastard offspring
of a drunken encounter between Intercal and APL"

Go start your own list instead of polluting ours.

plonk!

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2003-07-02  9:46 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2003-07-02  9:50 Heh. It works. I wrote a pmode pico-kernel in shell script assembly Rick A. Hohensee
2003-07-02 10:00 ` jw schultz

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox