/ / / move, line sct = 2 / fortran vt0 interfaces / erase screen erase.: temp .+2 jsr pc,setfil mov f,r0 sys write; erase; 2 jmp retrn / move(x, y) / / sets current x,y to arguments / .globl move. .globl line. .globl erase. .globl frame. .globl arc. .globl circle. .globl temp .globl retrn frame.: temp .+2 jsr pc,setfil mov 2(r3),r0 movb 2(r0),frame+1 mov f,r0 sys write; frame; 2 jmp retrn move.: temp .+2 jsr pc,garg mov r0,x mov r1,y jmp retrn / line(x, y) / / plot vector from current x,y / to arguments, setting current / x,y when done to arguments / line.: temp .+2 jsr pc,garg mov r0,x1 mov r1,y1 movb $3,command mov f,r0 sys write; command; 9 mov x1,x mov y1,y jmp retrn / call circle(x, y, radius) / circle's center at x, y circle.:temp .+2 jsr pc,garg mov r0,x mov r1,y mov 6(r3),r0 mov 2(r0),r0 ash $2,r0 mov r0,x1 movb $5,command mov f,r0 sys write; command; 7 jmp retrn / call arc(xo, yo, x1, y1, x2, y2) / plot circle arc: origin xo,yo; / counterclockwise from x1,y1 to x2,y2 arc.: temp .+2 jsr pc,garg mov r0,x mov r1,y cmp (r3)+,(r3)+ jsr pc,garg mov r0,x1 mov r1,y1 cmp (r3)+,(r3)+ jsr pc,garg mov r0,x2 mov r1,y2 movb $6,command mov f,r0 sys write; command; 13. sub $8.,r3 jmp retrn setfil: tst f bne 1f sys creat; vt; 17 bes 9f mov r0,f 1: rts pc garg: jsr pc,setfil mov 2(r3),r0 mov 2(r0),r0 mov 4(r3),r1 mov 2(r1),r1 ash $2,r0 ash $2,r1 sub $2048.,r0 sub $2048.,r1 rts pc 9: mov $1,r0 sys write; bmes; emes-bmes sys exit frame: .byte 4,0 erase: .byte 1,1 .byte 0 vt: bmes: ; emes: .bss .=.+1 command:.=.+1 x: .=.+2 y: .=.+2 x1: .=.+2 y1: .=.+2 x2: .=.+2 y2: .=.+2 f: .=.+2