asm

ASM may refer to: read more at WikiPedia

  • par Cédric Walter 1996

    Cet article permet de comprendre comment afficher des niveaux de gris sur HP48, un programme ASM y fait suite.

    Technique des niveaux de gris

    Pour afficher des niveaux de gris, il suffit de changer rapidement d'image et de jouer sur la persistance rétinienne de l'oeil. Pour changer rapidement d'écran, on modifie l'adresse en 120h (écran affiché en cours). Pour modifier les images à la bonne vitesse, il faut lire le compteur de ligne en 128h, 6 bits sur lesquels sont codés le numéro de la ligne en cours de rafraîchissement et qui décroît de la séparation des menus jusqu'à 0 (Technique de synchronisation verticale).

    Le codage des images

    Il faut coder les images pour éviter d'avoir une image par nuance, ce qui serait vite intolérable sur une HP48 à la mémoire plus que limité.  Une méthode consiste a attribuer un numéro à chaque nuance et à le coder en binaire.

    Pour avoir 16 niveaux de gris 4 Images suffisent : (1) si le pixel est allumé et (0) si il est éteint.

    Grob n° 4 3 2 1
    noir 1 1 1 1
    15 1 1 1 0
    14 1 1 0 1
    13 1 1 0 0
    12 1 0 1 1
    11 1 0 1 0
    10 1 0 0 1
    9 1 0 0 0
    8 0 1 1 1
    7 0 1 1 0
    6 0 1 0 1
    5 0 1 0 0
    4 0 0 1 1
    3 0 0 1 0
    2 0 0 0 1
    blanc 0 0 0 0

    8 Niveaux de Gris.

    grob n° 3 2 1
    noir 1 1 1
    7 1 1 0
    6 1 0 1
    5 1 0 0
    4 0 1 1
    3 0 1 0
    2 0 0 1
    blanc 0 0 0

    4 Niveaux de Gris.

    grob n° 2 1
    noir 1 1
    3 1 0
    2 0 1
    blanc 0 0

    Pour donner une impression de niveaux de gris, il faut que le grob 4 soit afficher 2 fois plus longtemps que le grob 3 qui lui même est afficher 2 fois plus longtemps que le grob 2 qui lui l'est deux fois plus que le grob 1.

    En résumé : grob 1 : 1 fois sur 15, grob 2 : 2 fois sur 15, grob 3 : 4 fois sur 15, grob 4 : 8 fois sur 15.

    Pour limiter le clignotement on peut faire boucler la suite d'images : 4/3/2/4/3/4/1/4/3/4/2/4/3/4

    Un exemple de programme...

    Ci-joint …un programme qui prend un grob 131*256 en argument ( les grob 4 , 3 , 2 , 1 sont dans le fichier dans cet ordre) et qui l'affiche en 16 niveaux de gris, puis en 8 niveaux et enfin en 4 niveaux apprès chaque appui sur une touche.

    % Sauvegarde des registres
    !PC
    !0-15
    GOSBVL 0679B
    INTOFF
    %ST=0 15
    % Charge ds R1 l'adresse du grob (on saute le prologue)
    A=DAT1 A
    LC 00014
    A=A+C A
    R1=A
    % Charge ds R0 l'adresse de la zone de travail
    
    LC 02201
    GOSBVL 05B7D
    AD0EX
    ?ABIT=0 0
    %une particularité du gestionnaire d'écran qui n'accepte que les adresses paires.
    
    GOYES PAIR
    A=A+1 A
    *PAIR
    R0=A
    % On recopie l'écran dans la zone de travail
    A=R1 A
    D0=A
    A=R0 A
    D1=A
    LC 02200
    GOSBVL 0670C
    % Mise zéro de la hauteur des menus, on écrit 3F en 128h
    D0= 00128
    LA 3F
    DAT0=A B
    %A contient l'adresse de la bitmap en cours d'affichage LA 8068D pour G(x) ou LA 7050E pour S(x)
    
    LA 8068D
    D1=A
    A=DAT1 A
    R3=A A
    % Boucle principale
    % Adresses des différents grobs dans le grob 131*256 
    % GROB 4 : R0
    % GROB 3 : R0 + 880h
    % GROB 2 : R0 + 1100h
    % GROB 1 : R0 + 1980h
    D1= 00120
    
    *AFFICHE_16_NIVO
    GOSUB AFFICHE_GRB4
    GOSUB AFFICHE_GRB3
    GOSUB AFFICHE_GRB4
    GOSUB AFFICHE_GRB2
    GOSUB AFFICHE_GRB4
    GOSUB AFFICHE_GRB3
    GOSUB AFFICHE_GRB4
    GOSUB AFFICHE_GRB1
    GOSUB AFFICHE_GRB4
    GOSUB AFFICHE_GRB3
    GOSUB AFFICHE_GRB4
    GOSUB AFFICHE_GRB2
    GOSUB AFFICHE_GRB4
    GOSUB AFFICHE_GRB3
    GOSUB AFFICHE_GRB4
    LC 001FF %Masque universel pour les touches
    OUT=C
    C=IN
    LA 0001F
    A=A&C A
    ?A=0 A %si pas de touche, on continue
    GOYES AFFICHE_16_NIVO
    
    *AFFICHE_8_NIVO
    GOSUB AFFICHE_GRB3
    GOSUB AFFICHE_GRB2
    GOSUB AFFICHE_GRB3
    GOSUB AFFICHE_GRB1
    GOSUB AFFICHE_GRB3
    GOSUB AFFICHE_GRB2
    GOSUB AFFICHE_GRB3
    LC 001FF
    OUT=C
    GOSBVL 01160
    LA 0001F
    A=A&C A
    ?A=0 A
    GOYES AFFICHE_8_NIVO
    
    *AFFICHE_4_NIVO
    GOSUB AFFICHE_GRB2
    GOSUB AFFICHE_GRB1
    GOSUB AFFICHE_GRB2
    LC 001FF
    OUT=C
    GOSBVL 01160
    LA 0001F
    A=A&C A
    ?A=0 A
    GOYES AFFICHE_4_NIVO
    
    % Remise en ordre du contexte pour une sortie propre
    D0= 00128
    LA 37 %réapparition des menus
    DAT0=A B
    D1= 00120
    A=R3 A
    DAT1=A A
    %ST=1 15
    INTON
    GOSBVL 067D2
    A=DAT0 A
    D0=D0+ 5
    PC=(A)
    
    *AFFICHE_GRB4
    C=R0
    GOTO AFFICHE
    
    *AFFICHE_GRB3
    C=R0
    LA 00880
    C=C+A A
    GOTO AFFICHE
    
    *AFFICHE_GRB2
    C=R0
    LA 01100
    C=C+A A
    GOTO AFFICHE
    
    *AFFICHE_GRB1
    C=R0
    LA 01980
    C=C+A A
    GOTO AFFICHE
    
    *AFFICHE %Une boucle d'attente, sinon c'est trop rapide
    LA 000FF
    *WASTETIME
    A=A-1 A
    GONC WASTETIME
    
    *VSYNC %Attente du passage par zéro du compteur en 128h
    A=DAT0 B
    ?A0 B
    GOYES VSYNC
    DAT1=C A
    RTN
    @
    
  • hewlett_packard_collection_00

    This is not the Official Home Page. Click Here to go : http://www-miaif.lip6.fr/gerald/mk.html

    Please be patient I must updated all descriptions and credit to the authors. We need your help : Please help us and develop program for MDG Kernel.
    If You want to get in touch with the author : Gérald squelart or This email address is being protected from spambots. You need JavaScript enabled to view it.or from archive.org

    Programmation

    EditK(386oct)by ELTA (me : walter cedric)
    a replacement for the EDITB command.
    Now : Lib are visible, Asm can be edit and compiled automatically w/n error, rpl object are dissasemble and created easily (nothing on stack).

    Table.48g (29Ko)all credit to B. De Singlyconvert by ELTA (me : walter cedric)
    This is a replacement for the internal table of MDGKer. It use very simple and comprehensive mnemonics. Useful to dissasemble Rom entry Point.

    Table.48g(49Ko)
    The original one, included with the package.

    Table Creator(109Ko)New Version
    You must recompile the old table in order to use them with MDGker 2.30
    Program to convert the startext file under Windows 95 into Ascii format and back In MDGker format.included with the package.

    Utilities

    TermHp by Jean Yves Avenard. (1.2Ko)
    TermHP is a terminal emulator for your HP48GX. TermHP is very small (1.2kb), and may be the only terminal for your HP48, which won't lose
    any characters. Full-Duplex, you can type and receive characters at the same time.

    Tools (1Ko)
    4 tools to switch between the different format: Grob<->font,external <->liste.included with the package.

    Mkutils (7 Ko)
    Man utils : flags, bzk, grob->font and much more.

    Gker (2Ko)
    Improve stack viewing with grey grob. included with the package.

    Kerutils (3Ko)
    Many good utils written in asm.

    MkFlags32 (3Ko) by Stephen JANNIN
    Manage hp48 flags and MDGker easily.HomePage: http://wwwperso.hol.fr/~janninst/

    Graphics and fonts

    15 differents fonts (15.3Ko). included with the package.

    3 Micro font(1.96Ko).included with the package.

    Startup:by ELTA (me : walter cedric)
    A nice picture done on 20th march 1998. Take any HP49/HP50G in the world, and do a soft reset (ON-C), and you can see.... my picture!!!!!. My signature is on the left corner, you can press ON quickly to freeze the pictures.

    customs(5.41Ko)
    Customize your kernel with some of these examples. included with the package.

    Articles (related from Comp.sys.hp48)

    Article from J. Y. Avenard : Contains description of each component of MDGker. Very Interesting.

    Article from J. Y. Avenard : It explain us the advantage of Masd notation.

    Article from Hp Mad : How to read Var in ML with MK and advantages of Masd.

    Bugs or problems

    My screen remained blank while edition after pressing on in user mode.

  • Under the pseudo : Elta, (the last magician lord)

    I have done a nice picture on 20th march 1998. Take any HP49 in the world, and try a soft reset (ON-C), and you can see my picture!!!!!. My signature is on the left corner, you can press ON quickly to freeze the pictures. The MetaKernel is a master piece of software written entirely in ASM. I use to buy a license (version 2.20) when it was still on HP48Gx before it was merged inside the HP49 kernel.

     

     Some very USEFUL document to program in LM (all credits to COCOHP). A NICE flags demo! ! ! ! ! They are here because i've never find them in Internet (personnal correspondance in 1995).

    An article (in french sorry) to explain how to display grey grobs.

    In 1992, It was the time to program a graphical clock clock.dir

    Easyregu is probably the biggest tools i've ever writting for hp48. It use very nice graphical menu to draw schematical process plot. It compact plot and has all grobs manipulation (rotate, fill, move...) and much more.... It is only big.... easyregu.dir (you must save it under easyregu in var dir)

    Like A Casio is a small utility I do this for a girl i use to love a lot in the past : Angelique moussaoui (we were in prepa ATS) Its purpose is to recall the last expression in stack. It display equation like in the casio format 'expression' and the evaluated value in 1 level. You can recall at any time the past equation. Use Beta-Enter . Include SRC likeacasio.zip

    Display a memgauge in the upper stack (written in sysrpl) memgauge.dir

    Do you want to send data with mipot module ? a friend of mine build a small interface (the only drawback is the current consuption) wich take place in slot card. Here is the program to chat between each other or to receive graphic... etc mod_mipot.zip (1995)

    Broida, Ziegler-Nichols are methods to determine very quickly PID parameters. regulation.zip

    Rlocus : do you want to plot Evans map (complex plot) to determine if a given system is stable in closed loop ?. This program is not written by me (Jason Frandsen first created it), just enhance : I rewrite all procedures to make them faster( no global stuff and improve algorithm), build an interface to make them more convenient, display K in pict and create a resume automatically, wich help you to hand draw the map, plus some other thing (sysrpl) rlocus_12.zip

    How compute aX^2+bX+C=0 ? It is a well know problem and very simple. But now, how to compute it using the smallest program size ? this one is 73 octets long... small_trinome.zip

    A Virus in SYSRPL very fast, small and dangerous (It only duplicate into memory) sysrpl+src.