Unfortunately, this site has restricted functionality as this browser does not support the HTML button formaction attribute.
Unfortunately, this site has restricted functionality as this browser has HTML web storage turned off.

stup8CPU rev: 0.002. by Kindergarten

1 of 2 files kindergarten
3 items
  • STUP8.ASM
  • STUP8.COM
  • STUP8CPU.PRJ
  • Zip / DOS   Computer tool
  • 3 kB   DOWNLOAD   SHARE

Emulating STUP8.COM in DOSee.

Use these tabs to make adjustments to the emulation

If the emulation is taking too long to load, you can turn it off.

Applying changes will reload the page and reboot the emulator





Changes will not be applied until this browser tab has been refreshed





DOS programs need a keyboard for user input

ENTER to select or continue
ESC to navigate back or exit
are often used to navigate menus


Emulation too fast?
Set the emulator to use the 386 CPU configuration
Experiencing graphic or animation glitches?
Set the emulator to use VGA only graphics configuration
Need to turn off the audio?
Disable sound card support

Have no audio?
  1. Try Gravis Ultrasound hardware
  2. The song or audio file maybe missing from the program

Want to hack around in the DOS prompt?
  1. Mount the DOS tools drive with automatic run program turned off
  2. Then dir u: to list the utilities, some included programs 4dos.com cp.exe acidview.exe pictview.exe
  3. Use mount to list the emulated drives
  4. Learn the DOSBox commands

DOSee pronounced dos/see, is our emulator used to run MS-DOS based software in your web browser.

MS-DOS (Microsoft DOS) was the primary operating system used by PCs during the 1980s to the early 1990s and is the precursor to Microsoft Windows.


DOSee is a slimmed down, modified port of The Emularity.

The Emularity is a multi-platform JavaScript emulator that supports the running of software for legacy computer platforms in a web browser. It is the same platform that's running emulation on the Internet Archive.

EM-DOSBox is a high-performance JavaScript port of DOSBox that is applied by The Emularity for its emulation of the MS-DOS platform.

DOSee uses BrowserFS ZipFS and ZipFS Extras to simulate zip file archives as hard disks within EM-DOSBox.

DOSBox is the most popular MS-DOS emulator in use today and is frequently used by commercial game publishers to run games from their back-catalogues on modern computers.


DOSee, built on The Emularity, EM-DOSBox and DOSBox. Capture screenshot and save function built on canvas-toBlob.js.

[+] Configuration Select all
; ------------------------------------------------------------------------
; ------------------------------------------------------------------------
;  project: stup8cpu
;  code: anormal/loki/kindergarten/trkitzr
;
;  rev: 0.000 : Sun 02-08-1998 : initial code, not debug
;  rev: 0.001 : Sun 02-15-1998 : some fixes, some debugging
;  rev: 0.002 : Sun 02-22-1998 : +debugging
;                                i was getting a stupid error due to the use of si without initializating
;  time: 0.000 : 1:30
;  time: 0.001 : 1:10
;  time: 0.002 : 2:10



c0de segment
assume cs:c0de,ds:c0de
org 100h
.486


; opcode macronization :)

_inc_idx macro
      db 0
endm

_load macro
      db 1
endm

_mov_idx macro idx_inm
      db 2 or (idx_inm shl 3)
endm

_sub_acc macro idx_inm
      db 3 or (idx_inm shl 3)
endm

_stop macro
      db 4
endm

_output macro
      db 5
endm

_input macro
      db 6
endm

_jnz macro idx_inm
      db 7 or (idx_inm shl 3)
endm

start:
    mov bx,offset ram
    mov si,offset ram+32d    ;initial ip
run:
    lodsb         ;load opcode
    mov di,ax
    and di,0111b      ;get instruction
    shl di,1
    call [di+offset optable]
endemul:
    jmp run

db 0bfh
movidx:
    shr al,3
    xlat
    mov idx,al
    ret

db 0bah
load:
    mov al,idx
    xlat
    mov acc,al
    ret

db 0eah
subacc:
    shr al,3
    xlat
    sub acc,al
    ret

db 0bah
incidx:
    inc idx
    ret

db 0cdh
output:
    mov dl,acc
    mov ah,02
    int 21h
    ret

acc db 0
input:
    mov dx,offset buffer
    mov ah,0ah
    int 21h
    mov al,idx
    sub ah,ah
    mov di,ax
    add di,bx
    xchg ax,si
    mov si,offset buffer+2
    xor cx,cx
    mov cl,[buffer+1]
    rep movsb
    xchg ax,si
    ret

idx db 0

jnzlabel:
   cmp acc,0
   jne jump
   ret
db 0b2h
jump:
   sub ah,ah
   shr al,3
   xlat
   mov si,ax
   add si,bx
   ret

db 0b8h
stop:
    pop ax
    ret

buffer db 20h,0
       db 20h dup (0)

db 0eah
optable dw incidx,load,movidx,subacc,stop,output,input,jnzlabel

;ram!!!
;vector of pointers to real inmediates
ram   db iniMess-ram     ;0
      db imprime-ram     ;1
let_o db 'o'             ;2
      db pass-ram        ;3
      db badtry-ram      ;4
let_u db 'u'             ;5
      db okMess-ram      ;6
      db badMess-ram     ;7
let_l db 'l'             ;8
      db imprime2-ram    ;9
let_r db 'r'             ;10
let_p db 'p'             ;11

      db 32-12 dup(0)

   _mov_idx 0
imprime:
   _load
   _sub_acc 10    ;decode message
   _inc_idx
   _output
   _jnz 1         ;must be 'r' terminated

   _mov_idx 3
   _input

   _load
   _sub_acc 8
   _jnz 4
   _inc_idx

   _load
   _sub_acc 5
   _jnz 4
   _inc_idx

   _load
   _sub_acc 11
   _jnz 4
   _inc_idx

   _load
   _sub_acc 5
   _jnz 4
   _inc_idx

   _load
   _sub_acc 8
   _jnz 4
   _inc_idx

   _load
   _sub_acc 2
   _jnz 4
   _inc_idx

   _mov_idx 6
imprime2:
   _load
   _inc_idx
   _sub_acc 8
   _output
   _jnz 9
   _stop

badtry:
   _mov_idx 7
   _jnz 9

pass:
   db 23,93,83,25,73,83,91   ;just some trash

iniMess:
    db 0ah + 'r'
    db 0dh + 'r'
    db 's' + 'r'
    db 't' + 'r'
    db 'u' + 'r'
    db 'p' + 'r'
    db '8' + 'r'
    db 'C' + 'r'
    db 'P' + 'r'
    db 'U' + 'r'
    db ' ' + 'r'
    db 'b' + 'r'
    db 'y' + 'r'
    db ' ' + 'r'
    db 'a' + 'r'
    db 'n' + 'r'
    db 'o' + 'r'
    db 'r' + 'r'
    db 'm' + 'r'
    db 'a' + 'r'
    db 'l' + 'r'
    db '/' + 'r'
    db 'k' + 'r'
    db 'i' + 'r'
    db 'd' + 'r'
    db 'e' + 'r'
    db 'r' + 'r'
    db 'g' + 'r'
    db 'a' + 'r'
    db 'r' + 'r'
    db 't' + 'r'
    db 'e' + 'r'
    db 'n' + 'r'
    db ' ' + 'r'
    db '-' + 'r'
    db ' ' + 'r'
    db 'f' + 'r'
    db 'e' + 'r'
    db 'b' + 'r'
    db '-' + 'r'
    db '9' + 'r'
    db '8' + 'r'
    db 0ah + 'r'
    db 0dh + 'r'
    db 'E' + 'r'
    db 'n' + 'r'
    db 't' + 'r'
    db 'e' + 'r'
    db 'r' + 'r'
    db ' ' + 'r'
    db 'p' + 'r'
    db 'a' + 'r'
    db 's' + 'r'
    db 's' + 'r'
    db 'w' + 'r'
    db 'o' + 'r'
    db 'r' + 'r'
    db 'd' + 'r'
    db ':' + 'r'
    db ' ' + 'r'
    db 'r'      ;terminator

okMess:
    db 0ah + 'l'
    db 0dh + 'l'
    db 'n' + 'l'
    db 'i' + 'l'
    db 'c' + 'l'
    db 'e' + 'l'
    db '!' + 'l'
    db '!' + 'l'
    db '!' + 'l'
    db '!' + 'l'
    db ',' + 'l'
    db ' ' + 'l'
    db 'e' + 'l'
    db 'm' + 'l'
    db 'a' + 'l'
    db 'i' + 'l'
    db 'l' + 'l'
    db ' ' + 'l'
    db 'm' + 'l'
    db 'e' + 'l'
    db ' ' + 'l'
    db 'n' + 'l'
    db 'o' + 'l'
    db 'w' + 'l'
    db '!' + 'l'
    db '!' + 'l'
    db ' ' + 'l'
    db 't' + 'l'
    db 'o' + 'l'
    db ' ' + 'l'
    db 'a' + 'l'
    db 'n' + 'l'
    db 'o' + 'l'
    db 'r' + 'l'
    db 'm' + 'l'
    db 'a' + 'l'
    db 'l' + 'l'
    db '@' + 'l'
    db 'b' + 'l'
    db 'i' + 'l'
    db 'g' + 'l'
    db 'f' + 'l'
    db 'o' + 'l'
    db 'o' + 'l'
    db 't' + 'l'
    db '.' + 'l'
    db 'c' + 'l'
    db 'o' + 'l'
    db 'm' + 'l'
    db 0ah + 'l'
    db 0dh + 'l'
    db 'l'      ;terminator

badMess:
    db 0ah + 'l'
    db 0dh + 'l'
    db 'w' + 'l'
    db 'r' + 'l'
    db 'o' + 'l'
    db 'n' + 'l'
    db 'g' + 'l'
    db '!' + 'l'
    db ',' + 'l'
    db ' ' + 'l'
    db 't' + 'l'
    db 'r' + 'l'
    db 'y' + 'l'
    db ' ' + 'l'
    db 'a' + 'l'
    db 'g' + 'l'
    db 'a' + 'l'
    db 'i' + 'l'
    db 'n' + 'l'
    db ' ' + 'l'
    db 'm' + 'l'
    db 'a' + 'l'
    db 'n' + 'l'
    db '!' + 'l'
    db '.' + 'l'
    db '.' + 'l'
    db '.' + 'l'
    db 0ah + 'l'
    db 0dh + 'l'
    db 'l'      ;terminator

c0de ends
end start
STUP8.ASM 105x368 Font
105