#11 Article 172 Posted at 1987/06/11 04:03:41 by NOZOMU (MAP041) [PRG.NL2]

Subject: NEDI for 98+MASM ソノ1

;
;       NEDI MASM version for PC-9801
;
;       Programmed at '87/06/11 by NOZOMU
;

pgroup  group   prog
prog    segment byte public 'prog'
        ASSUME  CS:PGROUP,ds:pgroup,es:pgroup,ss:pgroup

org     100h

start:
        push    ax
        push    bx
        push    cx
        push    dx

        mov     ah,09h                  ;Display string
        mov     dx,offset cls
        int     21h
        mov     gray,1
        mov     ah,64                   ;Admit to display graphic
        int     24
        mov     ah,12h                  ;corsor off
        int     18h

;--------------------------------------

main_loop:
        mov     ax,8
        push    ax
        push    yp
        push    xp
        call    pset

        mov     ah,07h                  ;Direct condole input
        int     21h

        cmp     al,'l'
        jne     not_load_data
        call    load_data
        jmp     short main_loop

not_load_data:
        cmp     al,'s'
        jne     not_save_data
        call    save_data
        jmp     short main_loop

not_save_data:
        cmp     al,'g'
        jne     not_change_mode
        call    change_mode
        jmp     short main_loop

not_change_mode:
        cmp     al,3
        je      exit_program

        call    move_cursor
        call    point_edit

        mov     ax,offset logical_page
        push    ax
        push    yp
        push    xp
        call    point

        push    ax
        push    yp
        push    xp
        call    pset

        jmp     short main_loop

;--------------------------------------

load_data:
        push    bx

        mov     bx,offset load_message
        push    bx
        mov     ax,offset file_name
        push    ax
        call    input_file_name

        mov     bx,offset logical_page
        push    bx
        mov     ax,offset file_name
        push    ax
        call    read

        cmp     ax,0ffffh
        je      not_loaded
        push    bx
        call    display

not_loaded:
        mov     ah,64                   ;Admit to display graphic
        int     24
        pop     bx

        ret

;--------------------------------------

save_data:
        push    bx

        mov     bx,offset save_message
        push    bx
        mov     ax,offset file_name
        push    ax
        call    input_file_name

        mov     bx,offset logical_page
        push    bx
        mov     ax,offset file_name
        push    ax
        call    write

        cmp     ax,0ffffh
        je      not_saveed

not_saveed:
        mov     ah,64                   ;Admit to display graphic
        int     24
        pop     bx

        ret

;--------------------------------------

change_mode:
        push    bx
        xor     byte ptr gray,1
        mov     bx,offset logical_page
        push    bx
        call    display
        pop     bx
        ret

;--------------------------------------

exit_program:
        mov     ah,11h                  ;corsor on
        int     18h
        pop     dx
        pop     cx
        pop     bx
        pop     ax
        ret

;--------------------------------------

move_cursor:
        push    bx
        cmp     al,8
        jnz     not_left
        mov     bx,xp
        cmp     bx,1
        jb      not_left

        mov     ax,offset logical_page
        push    ax
        push    yp
        push    xp
        call    point

        push    ax
        push    yp
        push    xp
        call    pset

        dec     bx
        mov     xp,bx
        pop     bx
        ret
not_left:
        cmp     al,0ch
        jnz     not_right
        mov     bx,xp
        cmp     bx,158
        ja      not_right

        mov     ax,offset logical_page
        push    ax
        push    yp
        push    xp
        call    point

        push    ax
        push    yp
        push    xp
        call    pset

        inc     bx
        mov     xp,bx
        pop     bx
        ret
not_right:
        cmp     al,0bh
        jnz     not_up
        mov     bx,yp
        cmp     bx,1
        jb      not_up

        mov     ax,offset logical_page
        push    ax
        push    yp
        push    xp
        call    point

        push    ax
        push    yp
        push    xp
        call    pset

        dec     bx