見出し画像

A2PDP11 (13) BASIC の実行

先例にならい、BASIC を実行してみます。
BASIC 起動時にペーパーテープリーダ状態レジスタが確認されるため、ダミーの応答をするようにします。

// PC11 Paper Tape Reader/Punch
parameter PC11          = 19'o1777755;  // PC11 registers
parameter PRS           = 22'o17777550; // Paper Tape Reader Status Register
parameter PRB           = 22'o17777552; // Paper Tape Reader Buffer Register
parameter PPS           = 22'o17777554; // Paper Tape Punch Status Register
parameter PPB           = 22'o17777556; // Paper Tape Punch Buffer Register

assign nxm_n = sctl_n ? 1'b1 : !nxm;
logic nxm;
always_ff@(negedge sctl_n) begin
    if ((maio[3:2] == 2'b10) || (maio[3:2] == 2'b00)) begin
//         RMW_BUSLOCK, RMW_NOLOCK, DATA_READ, DEMAND_READ, WORD_WRITE, BYTE_WRITE
        if (mbs == BS_MEM) begin
            if (mdal >= 22'o17760000) begin
                nxm <= 1'b1;
            end
        end
        if (mbs == BS_EXT) begin
            if ((mdal[21:3] == DLART) || (mdal[21:3] == PC11)) begin
                nxm <= 1'b0;
            end else begin
                nxm <= 1'b1;
            end
        end
    end else begin
        nxm <= 1'b0;
    end
end

logic [15:0] dal_out;
logic [15:0] odt_out;
logic [15:0] mem_out;
assign dal = bufctl_n ? 16'bz : dal_out | odt_out | mem_out;
always_ff@(negedge bufctl_n) begin
    if ((maio == DATA_READ) && (mbs == BS_EXT)) begin
        case (mdal)
            RCSR : odt_out <= {8'b0, wxrdy, 7'b0};
            XCSR : odt_out <= {8'b0, rxrdy, 7'b0};
            RBUF : odt_out <= wdata;
            PRS  : odt_out <= 16'b1000_0000_0000_0000;
            PRB  : odt_out <= 16'b0;
            PPS  : odt_out <= 16'b0000_0000_1000_0000;
            default : odt_out <= 16'bz;
        endcase
    end else begin
        odt_out <= 16'bz;
    end
end

PDP-11 GUI を使い、かんぱぱさんの、ASCIIART ベンチマークを実行してみました。

ASCIIART の実行

ASCIIART の実行に、13分50秒かかりました。全てのメモリ読み出しで、6 サイクルの遅延が入っているため、かなり遅いです。

参考文献

PC11 high-speed reader/punch and control manual, CHAPTER 3, 1974 

http://www.bitsavers.org/pdf/dec/unibus/PC11_Reader-Punch_Manual.pdf#page=13

PDP-11 BASIC Programming Manual, 1970

きょうのかんぱぱ,  2024.08.02


いいなと思ったら応援しよう!